CVE-2018-2894:
/ws_utc 这个路径的文件上传漏洞
页面接口:/ws_utc/config.do
上传点接口:/ws_utc/resources/ws/config/import
本poc以前者为例,进行poc和利用。上传成功之后会响应500,抛出NullPointerException,但是利用已经成功。
关于weblogic各版本的可利用情况:
- 10.3.6版本上未发现该功能,需手动开启:
登录控制台-》配置-》高级-》勾选启用Web服务测试页 -》保存 - 12.1.3.0默认开启,且未授权可以访问
- 12.2.1.3默认开启,且未授权可以访问(/ws_utc/resources/setting/keystore)
后来发现12.2.1.3版本利用最稳定,而12.1.3.0总是不成功。
整个流程:
参考:https://blog.riskivy.com/weblogic-cve-2018-2894/
poc
正常的路径上传之后是:
“C:/Oracle/Middleware12.1.3.0/user_projects/domains/base_domain/tmp/WSTestPageWorkDir/upload/RS_Upload_2021-03-29_11-44-55_670/wlserver/server/lib/consoleapp/webapp/framework/skins/wlsconsole/images/_111.txt”
路径穿越(…/…/…/…/…/…/…/wlserver/server/lib/consoleapp/webapp/framework/skins/wlsconsole/images/)之后:
参考:https://stackoverflow.com/questions/1347791/unicode-error-unicodeescape-codec-cant-decode-bytes-cannot-open-text-file
最终将路径穿越的payload设置为7个…/
tested on:
- weblogic 12.1.3.0.0, jdk_1.7.0_80
- weblogic 12.1.3.0.0, jdk_1.8.0_201
- weblogic 12.2.1.3.0, jdk_1.8.0
exp
如果不更改,shell会上传到
/u01/oracle/user_projects/domains/base_domain/tmp/WSTestPageWorkDir/config/keystore/ 目录下面,访问会是404,还要登陆后wls_utc才能访问(http://47.52.239.99:7001/ws_utc/login.do)
所以,为了避免诸多限制,需更改路径为
(以linux或者docker为例)
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
Windows可以为:C:/Oracle\Middleware12.2.1.3/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
静态文件css目录,访问这个目录是无需权限的。
pocsuite插件编写
poc
通过路径穿越,将任意文本文件上传到这个路径:
/wlserver/server/lib/consoleapp/webapp/framework/skins/wlsconsole/images/
然后通过web访问
/console/framework/skins/wlsconsole/images/_
这个路径,即可作为poc,证明文件上传即可。
exp
将webshell上传到这个路径:
user_projects/domains/base_domain/tmp/WSTestPageWorkDir/config/keystore/ 目录下面,访问会是404
然后修改配置,将其改为:
user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
然后通过web访问
/ws_utc/css/config/keystore/
目录即可拿到webshell。