什么是IAST
IAST是交互式应用程序安全测试(Interactive Application Security Testing),是一个在应用和API中自动化识别和诊断软件漏洞的技术。通过插桩技术(Instrumented)收集安全信息,持续地从内部运行的代码中发现其安全及逻辑问题,提供实时的报警展示。在整个软件开发生命周期中,可以在开发与测试阶段中使用IAST工具。
由于IAST 是一种应用程序运行时的漏洞检测技术,所以它具备了 DAST 中检测结果准确的特征;此外,IAST 采集到的数据在方法内部的流动后,通过污点跟踪算法来进行漏洞检测,用算法来进行漏洞检测,所以检测结果也具备了 SAST 中全面性的特征。
对比DAST优点是能发现更多潜在的漏洞,对比SAST优点是漏洞的准确率更高。
这里使用了洞态 IAST进行漏洞发现,洞态 IAST是一个完全开源的 IAST 项目,它使用应用程序运行时数据流进行分析从而识别可被利用的安全漏洞,再按风险优先级的提供已验证漏洞列表功能,协助开发人员实时的代码修复。
如何使用IAST
这里使用了一个tomcat部署的war包系统,首先根据洞态IAST里的帮助文档对tomcat进行插桩,在tomcat的catalina.sh中增加javaagent的配置。
之后启动tomcat,查看agent是否正常上线。
接着在应用内胡乱点击,对所有功能进行触发,可以看到触发功能后有多个漏洞已经检出,接下来就是需要对漏洞进行分析,验证是否是真实漏洞。
漏洞分析
这里挑选一个漏洞进行实际分析。
首先研究一下污点流图,可以看到数据污点值是从222/333/和xxx.doc进来的,即这个是source点,通过一系列的污点传播后在FileUtil文件中执行,即该点为sink点。
再看一下请求信息,通过请求信息找一下代码入口,入口是在DocController.java的deleteDoc方法中。
503行创建doc对象。
529行调用deleteDoc,跟入deleteDoc函数。
继续跟入deleteDoc_FSM函数,在4139行中调用deleteRealDoc进行文件删除,继续跟入。
deleteRealDoc中直接对原始请求参数进行拼接,完成文件删除,触发漏洞。
这里再安利一下污点流图的好处,通过展开污点来源方法,可以很清晰的看到数据的流转过程,这里能看到标红的就是我们一开始传入的污点数据,黑色是代码中的其他数据,即安全数据,通过字段的拼接最后在危险方法处执行。
通过数据流图也可以初步判断漏洞是否存在,假如通过修改传入的污点值可以在最后危险函数处进行漏洞触发,即可认为是存在漏洞的。
下班
最后看一下本次的收获,四个cnvd原创漏洞,血赚,下班!
往期推荐
火线Zone是火线安全平台运营的安全社区,拥有超过20,000名可信白帽安全专家,内容涵盖渗透测试、红蓝对抗、漏洞分析、代码审计、漏洞复现等热门主题,旨在研究讨论实战攻防技术,助力社区安全专家技术成长,2年内已贡献1300+原创攻防内容,提交了100,000+原创安全漏洞。
欢迎具备分享和探索精神的你加入火线Zone社区,一起分享技术干货,共建一个有技术氛围的优质安全社区!
原文始发于微信公众号(火线Zone):光速下班,用IAST挖CNVD通用漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论