今天在工作的时候发现了一个fortify结果,是一个命令执行。
看了下结果如下
别的就不发了,直接看下sink。
可以看到desktop.getDesktop().browse()是sink,且存在拼接。不懂这个是个什么漏洞可以RCE。
其出发的fortify规则如下:
可以看到fortify规则对类的关键词是好多个,而且taintflagset也是设置了not number。但是很迷的是fortify 还是把int类型的port当作了污染点。去尼玛的fortify菜鸡。好吧,这个不是关键。
和群里的大佬技术白嫖了以后发现下面的这个推特有讨论关于java.awt.* 的这个安全问题。
原来是 如果.browse(url)的情况,即url是直接用户可以输入的情况下,我们可以通过file协议和ftp协议进行rce,也就是直接输入一个二进制文件即可让服务端执行命令。
而且根据twitter里的国际敌人提供的情报来看,好像windows32位和electron应用下也是会存在这个命令执行的问题的。
神奇!
Ps.有啥办法可以让fortify 识别类型不报这种弱智误报
本文始发于微信公众号(xsser的博客):Fortify扫描结果之java.awt.getDesktop.browse命令执行漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论