Apache Struts未授权远程代码执行漏洞分析与利用

本文详细分析了CVE-2017-5638 Apache Struts未授权远程代码执行漏洞,提供完整的漏洞利用代码示例,包括针对特定URL和IP地址的攻击方法,以及处理SSL证书错误的修改方案。

Apache Struts未授权远程代码执行漏洞

作者:Carrie Roberts
注意: 本博文中提到的技术和工具可能已过时,不适用于当前环境。但本文仍可作为学习资料,并可能被更新或整合到现代工具和技术中。

漏洞概述

漏洞利用方法

将漏洞利用代码保存到文件中,使用Python执行并传递两个命令行参数:

  1. 第一个参数:要攻击的URL地址。该URL应指向Struts的"action"页面,可通过Google搜索(如"site:example.com inurl:action")找到
  2. 第二个参数:要在被利用系统上运行的OS命令

完整示例如下:

1
python exploit.py https://example.com/some/example.action "ls -l"

针对特定IP地址的攻击

如果您是防御方,希望确保所有系统都已打补丁,但您的域名后面有多个Web服务器。在这种情况下,您需要针对特定IP地址运行漏洞利用程序:

1
python exploit.py https://specific.ip.addr.here/some/example.action "ls -l"

SSL证书错误处理

在这种情况下,概念验证代码可能会抛出SSL证书错误。需要进行以下修改(黄色高亮显示)以支持此用例:

1
2
3
4
5
6
# 添加SSL证书验证绕过
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

# 在请求中添加Host头部(根据Web服务器配置可能需要)
headers = {'Host': 'example.com'}

根据您的Web服务器配置,可能不需要包含Host头部。

祝你好运,请尽快修复此漏洞!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计