🌟 ❤️
作者:yueji0j1anke
首发于公号:剑客古月的安全屋
字数:1286
阅读时间: 15min
声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。合法渗透,本文章内容纯属虚构,如遇巧合,纯属意外
目录
-
前言
-
技术调研
-
SAST
-
IAST
-
总结
0x01 前言
最近在学校负责一些web应用的安全建设落地,自然需要对代码做相关审计,于是对企业常规检测方法进行了调研学习,梳理出大致脉络,写下了这篇文章。
0x02 技术调研
1.DAST
全称 动态应用程序安全测试,即模拟黑客行为对应用程序进行动态攻击,相当于黑盒测试,比如你用扫描器AWVS、appscan这些去扫描网站都算DAST
这里对于师傅们来说应该都很熟悉,在此略过不提
2.SAST
全称 静态应用安全测试,即分析源码、接口、结构、架构、所使用依赖等等来发现应用程序可能存在的漏洞,常见的比如说fortify、RIPS等,不同的工具适用的语言可能不同
后面将会着重进行案例演示
3.IAST
全称 交互式应用程序安全测试,即在服务端搭建agent程序,监视流量、数据传输,并进行相关代码定位,各大厂商都有相关的IAST产品,一般适配于企业级应用。后面会配合docker进行相关测试
0x03 SAST
既然讲自动化漏洞检测,自然就离不开工具,这里列举几款常用的语言及其工具
PHP:Seay RIPS CheckMarx Fortify VCG Kunlun-M
NET:VCG Fortify CheckMarx
Java:Fortify CheckMarx VCG
Python:Bandit Fortify CheckMarx
JS:Kunlun-M NodeJsScan Fortify CheckMarx
Go:Gosec CheckMarx
1.php + seay
项目源码: https://github.com/f1tz/cnseay
启动后直接新建项目导入即可
2.JAVA + Fortify&code-Inspector
首先讲讲fortify
安装好后打开work auditbench
可以用网上相关脚本将产出报告等换成中文,准确率还是比较高
然后推荐code-inspector的原因是它的相关规则库写的真的超级好,缺点是只适用于JAVA,扫描的是jar
地址 https://github.com/4ra1n/code-inspector
启动gui界面后选择相关打包文件进行扫描即可
比如这边我们挑一个具备ssrf漏洞的jar包
打开当前目录产出的html文件
挑这个ssrf漏洞看看
反编译后打开controller层
方法从请求中获取 url
参数,并从service层获取相关逻辑处理后返回
追入
看到未对url参数进行任何过滤即发送请求并返回对应的请求结果
扫描结果还是颇为精确。
3.python + bandit
这个安装比较简单
pip install bandit
使用如下
bandit.exe -r 需要审计的源码目录
4.Go + gosec
本来想推荐trivy,但工具似乎不太受众于不开源的代码,不过可以扫描repo和镜像,有兴趣的师傅可以去玩玩
gosec地址 https://github.com/securego/gosec/releases/tag/v2.21.4
使用方法
gosec -exclude-dir=rules -exclude-dir=cmd ./.
这里放一个很久之前搭写过的ctf题在这里检验一下
大致效果如下
0x04 IAST
对于交互式的安全测试,需要知道流量来源,有些通过爬虫的主动获取,有些则基于流量的被动接入。大部分的IAST设备都是通过流量的被动接入,设备跟安全厂商的SIP这些态势感知系统大差不差
我这里试着使用了网上一款工具 试着对应用动态插桩
这里环境准备一台云主机即可
wget https://github.com/HXSecurity/DongTai/archive/refs/tags/v1.4.1.tar.gz
tar -xzvf DongTai.tar.gz
cd DongTai
./build_with_docker_compose.sh
搭建完毕
随后按流程安装
这里他就会自动检测组件(相当于SAST了)
我这里直接用本地应用去做的插桩
-javaagent:D:/xxxx/dongtai-agent.jar
这里他就会自动检测组件(相当于SAST了)
打一下payload
0x05 总结
java的代码审计专题总结算是彻底完结了,以后可能会出一些案例审计。后期将偏向于java一些native层的东西。
原文始发于微信公众号(剑客古月的安全屋):代码审计-漏洞自动化检测思考