记某次授权测试
字数 1955 2025-08-15 21:31:30

渗透测试实战教学:从文件上传到内网探测

一、文件上传漏洞利用

1. 初步文件上传测试

  1. 基础测试流程

    • 上传JPG文件(返回200)
    • 上传TXT文件(内容:123,返回Success)
    • 上传JSP文件(内容:123,返回Success)
    • 访问上传的JSP文件(显示123)
  2. 关键发现

    • 所有文件类型上传都返回200状态码
    • 初步认为存在文件上传漏洞

2. 上传Webshell遇到的障碍

  1. 首次尝试

    • 上传JSP冰蝎马(返回200)
    • 访问时出现404错误
  2. 问题分析

    • 可能存在的防护机制:
      • 内容检测(检查特定恶意代码)
      • 实际上传未成功(返回数据包欺骗)

3. 绕过内容检测的Fuzz测试

  1. 测试特殊字符限制

    • <%%> → 404
    • <%123> → 404
    • <123%> → 200
    • 发现JSP文件开头不能使用%
  2. 绕过方案

    • 使用不带%%的JSP木马
    • 或使用字符混淆技术

4. 成功上传Webshell

  1. 解决方案

    • 使用不带%%的JSP命令执行马
    • 上传成功并可以访问(200状态码)
  2. 命令执行限制

    • 发现不能执行带空格的命令
    • 使用@连接符替代空格(如net@user
  3. 混淆技术应用

    • 在恶意代码前后添加乱码字符
    • 绕过内容检测机制

二、内网信息收集与横向移动

1. 基础信息收集

  1. 网络环境探测

    • ipconfig/arp/netstat -ano → 发现多层内网
    • net time → 确认无域控环境
    • tasklist → 发现vmtools.exe(VM虚拟化环境)
  2. 系统环境确认

    • PowerShell可用
    • 无杀毒软件迹象
    • x86架构系统

2. Cobalt Strike上线

  1. 利用方法

    • 通过Webshell执行PowerShell命令
    • 使用CS的"Scripted Web Delivery"生成Payload
  2. 遇到的问题

    • x86系统导致CS不稳定(5分钟才能执行一个命令)
    • 解决方案:
      • 上传独立exe文件执行
      • 将session注入到MSF(更稳定)

3. 内网横向移动

  1. 凭证获取

    • 使用mimikatz获取管理员hash
    • NTLM → MD5解密成功
  2. 代理设置

    • 通过CS建立socks代理到VPS
    • 使用Proxifier将mstsc.exe流量代理到本地
  3. 网络拓扑发现

    • 发现多个内网网段:
      • 10.10.10.1:123 → 10.10.20.1:3306(数据库)
      • 10.10.10.1:233 → 172.10.1.1:98
      • 10.10.10.1:333 → 10.254.1.1
    • 确认当前处于DMZ区
  4. 存活主机探测

    • 当前网段发现10多台存活主机
    • 密码通用,登录多台机器但无更多发现
  5. 数据库网段探测

    • ARP扫描发现约10台机器
    • 使用Advanced IP Scanner扫描80端口
    • 尝试通过Web接口寻找云平台

三、SQL注入漏洞利用尝试

1. 注入点发现

  1. 漏洞位置

    • 后台某搜索框
    • 存在报错注入和延时注入
  2. 权限确认

    • 当前数据库用户为DBA

2. 获取Webshell尝试

  1. 常规方法

    • 需要知道网站绝对路径
    • Web目录可写
    • 支持into outfile
  2. 路径探测

    • 通过报错信息未果(统一404页面)
    • 通过Resin版本信息猜测路径:
      • E:\resin\
      • C:\resin
      • E:\Program Files (x86)\resin

3. UDF提权尝试

  1. 前提条件

    • 支持into outfile
    • 知道lib/plugin目录
  2. 遇到的问题

    • SQLMap报错不支持堆叠查询
    • 最终未能成功

4. 数据库用户枚举

  1. 方法

    • 直接读取用户名密码
    • 发现前几条记录为NULL
    • 使用sql-shell执行自定义查询
  2. 结果

    • 发现多个数据库管理用户
    • 但未找到有效利用点

5. 后台文件上传测试

  1. 测试结果
    • 存在任意文件上传功能
    • 但上传的Flash文件不解析
    • 上传后的URL格式:http://www.ceshi.com/1.jsp?id=u23i451k2h4h5j

四、经验总结与技巧

  1. 文件上传绕过

    • 内容检测通常检查特定模式(如<%%>
    • 通过字符混淆或使用替代语法绕过
  2. 内网渗透要点

    • 信息收集是关键(网络拓扑、存活主机、服务)
    • 密码重用现象普遍
    • 工具选择要考虑系统架构(x86/x64)
  3. SQL注入利用

    • 路径猜测需要结合中间件信息
    • UDF提权需要满足多个条件
    • 堆叠查询支持影响利用方式
  4. 稳定性问题

    • x86系统上的PowerShell可能不稳定
    • 原生exe通常更可靠
    • MSF比CS在某些环境下更稳定
  5. 时间管理

    • 避免在单一技术上耗费过多时间
    • 快速评估漏洞可利用性
    • 准备多种备用方案
渗透测试实战教学:从文件上传到内网探测 一、文件上传漏洞利用 1. 初步文件上传测试 基础测试流程 : 上传JPG文件(返回200) 上传TXT文件(内容:123,返回Success) 上传JSP文件(内容:123,返回Success) 访问上传的JSP文件(显示123) 关键发现 : 所有文件类型上传都返回200状态码 初步认为存在文件上传漏洞 2. 上传Webshell遇到的障碍 首次尝试 : 上传JSP冰蝎马(返回200) 访问时出现404错误 问题分析 : 可能存在的防护机制: 内容检测(检查特定恶意代码) 实际上传未成功(返回数据包欺骗) 3. 绕过内容检测的Fuzz测试 测试特殊字符限制 : <%%> → 404 <%123> → 404 <123%> → 200 发现JSP文件开头不能使用 % 绕过方案 : 使用不带 %% 的JSP木马 或使用字符混淆技术 4. 成功上传Webshell 解决方案 : 使用不带 %% 的JSP命令执行马 上传成功并可以访问(200状态码) 命令执行限制 : 发现不能执行带空格的命令 使用 @ 连接符替代空格(如 net@user ) 混淆技术应用 : 在恶意代码前后添加乱码字符 绕过内容检测机制 二、内网信息收集与横向移动 1. 基础信息收集 网络环境探测 : ipconfig / arp / netstat -ano → 发现多层内网 net time → 确认无域控环境 tasklist → 发现vmtools.exe(VM虚拟化环境) 系统环境确认 : PowerShell可用 无杀毒软件迹象 x86架构系统 2. Cobalt Strike上线 利用方法 : 通过Webshell执行PowerShell命令 使用CS的"Scripted Web Delivery"生成Payload 遇到的问题 : x86系统导致CS不稳定(5分钟才能执行一个命令) 解决方案: 上传独立exe文件执行 将session注入到MSF(更稳定) 3. 内网横向移动 凭证获取 : 使用mimikatz获取管理员hash NTLM → MD5解密成功 代理设置 : 通过CS建立socks代理到VPS 使用Proxifier将mstsc.exe流量代理到本地 网络拓扑发现 : 发现多个内网网段: 10.10.10.1:123 → 10.10.20.1:3306(数据库) 10.10.10.1:233 → 172.10.1.1:98 10.10.10.1:333 → 10.254.1.1 确认当前处于DMZ区 存活主机探测 : 当前网段发现10多台存活主机 密码通用,登录多台机器但无更多发现 数据库网段探测 : ARP扫描发现约10台机器 使用Advanced IP Scanner扫描80端口 尝试通过Web接口寻找云平台 三、SQL注入漏洞利用尝试 1. 注入点发现 漏洞位置 : 后台某搜索框 存在报错注入和延时注入 权限确认 : 当前数据库用户为DBA 2. 获取Webshell尝试 常规方法 : 需要知道网站绝对路径 Web目录可写 支持 into outfile 路径探测 : 通过报错信息未果(统一404页面) 通过Resin版本信息猜测路径: E:\resin\ C:\resin E:\Program Files (x86)\resin 3. UDF提权尝试 前提条件 : 支持 into outfile 知道lib/plugin目录 遇到的问题 : SQLMap报错不支持堆叠查询 最终未能成功 4. 数据库用户枚举 方法 : 直接读取用户名密码 发现前几条记录为NULL 使用 sql-shell 执行自定义查询 结果 : 发现多个数据库管理用户 但未找到有效利用点 5. 后台文件上传测试 测试结果 : 存在任意文件上传功能 但上传的Flash文件不解析 上传后的URL格式: http://www.ceshi.com/1.jsp?id=u23i451k2h4h5j 四、经验总结与技巧 文件上传绕过 : 内容检测通常检查特定模式(如 <%%> ) 通过字符混淆或使用替代语法绕过 内网渗透要点 : 信息收集是关键(网络拓扑、存活主机、服务) 密码重用现象普遍 工具选择要考虑系统架构(x86/x64) SQL注入利用 : 路径猜测需要结合中间件信息 UDF提权需要满足多个条件 堆叠查询支持影响利用方式 稳定性问题 : x86系统上的PowerShell可能不稳定 原生exe通常更可靠 MSF比CS在某些环境下更稳定 时间管理 : 避免在单一技术上耗费过多时间 快速评估漏洞可利用性 准备多种备用方案