文章总结: 本文详细分析了Mysql-JDBC反序列化漏洞的利用原理与实战方法。通过构造恶意MySQL协议包并利用autoDeserialize和queryInterceptors参数触发ObjectInputStream.readObject()实现命令执行和文件读取。文章提供了环境搭建、测试demo和利用链分析并给出了不出网和绕过限制的扩展思路。该技术可用于渗透测试中后台数据库连接功能的攻击场景。 综合评分: 90 文章分类: 渗透测试,漏洞分析,红队,内网渗透,安全工具
文件读取
文件读取
JDBC URL分析
jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor&user=base64ZGVzZXJfQ0MzMV9jYWxj
原型:jdbc:mysql://<host>:<port>/<database>?<params>
- • 127.0.0.1:连接的 MySQL 服务器地址,本地地址。
- • 3306:MySQL 的默认端口。
- • test:数据库名称。
- • 后面是多个 URL 参数,用 & 分隔。
URL参数分析:
-
• autoDeserialize=true
-
• 启用 MySQL JDBC 驱动对序列化对象的自动反序列化。
-
• 当数据库返回字段是 Java 序列化对象(通常是 BLOB),会尝试通过 ObjectInputStream.readObject() 来还原为 Java 对象。
-
• queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor
-
• 指定一个或多个查询拦截器类,在执行查询前后插入自定义逻辑。
-
• ServerStatusDiffInterceptor 是 MySQL 官方提供的拦截器之一,它用来比较执行前后的 server_status 变化。
-
• user=base64ZGVzZXJfQ0MzMV9jYWxj
-
• 指定用户名。
-
• base64解码后为deser_CC31_calc
利用链分析
通过构造恶意MySQL协议包,进入反序列化ObjectInputStream.readObject(),执行危险代码。
com.mysql.cj.jdbc.result.ResultSetImpl#getObject(int) 调用栈:
反向追栈
查看谁调用了getObject
com.mysql.cj.jdbc.util.ResultSetUtil#resultSetToMap(java.util.Map, java.sql.ResultSet)
扩展
- • Mysql-JDBC反序列化 https://forum.butian.net/share/2872
不出网的情况
- • JDBC-MySQL驱动不出网攻击总结 https://mp.weixin.qq.com/s/frZHYc_uD5o7HdRtkmrSYQ
- • 从JDBC MySQL不出网攻击到spring临时文件利用 https://xz.aliyun.com/news/17830
绕过限制
- • Jdbc反序列化[绕过|修复|分析] https://mp.weixin.qq.com/s/jXKlItva_OiehIoPgYvcAw
参考资料
- • MYSQL JDBC反序列化解析 https://tttang.com/archive/1877/
- • MySQL jdbc 反序列化分析 https://mp.weixin.qq.com/s/tOOhDLr0K2l52n7627di4Q
- • JDBC反序列化原理和调用链细节分析 https://mp.weixin.qq.com/s/Abz0OtOk43JPtzth52nBHg
- • https://wiki.wgpsec.org/knowledge/ctf/JDBC-Unserialize.html
声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!
如有侵权烦请告知,我会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:进击的HACK 进击的hack 进击的hack《Mysql-JDBC反序列化利用与简单分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论