这两天火线的洞态IAST开源发布,刚好最近对IAST对一块感兴趣,所以按照文档操作了一遍,以及踩了一下坑。
安装
首先安装java环境和docker环境。
[root@localhost ~]# yum install -y epel-release
[root@localhost ~]# yum install -y docker docker-compose java java-1.8.0-openjdk*
接着,下载tomcat。
[root@localhost opt]# wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.70/bin/apache-tomcat-8.5.70.tar.gz
[root@localhost opt]# tar xvf apache-tomcat-8.5.70.tar.gz
[root@localhost opt]# mv apache-tomcat-8.5.70 tomcat
启动docker服务
[root@localhost DongTai]# service docker start
下载洞态最新分支
[root@localhost opt]# git clone https://github.com/HXSecurity/DongTai.git -b release-1.0.3
我一开始部署是按照官方文档的docker-compose启动,发现有问题,于是自己摸索了部署方法。(可能官方后续会完善部署方法)
首先,不使用build_with_docker_compose.sh脚本,直接运行构建脚本build_with_source.sh。
[root@localhost DongTai]# ./build_with_source.sh
[+] 开始初始化服务及配置,当前系统:Linux
[+] 输入服务器IP地址:192.168.0.5
但是会发现openapi是构建不了的,缺少了一些jar包,这个可以自己编译。
最后构建完成的镜像是缺少openapi。
openapi这个镜像的下载是需要登录的,登录的密码自己在文件夹找,我就不写上来。
[root@localhost DongTai]# docker pull registry.cn-beijing.aliyuncs.com/huoxian_pub/dongtai-openapi:1.0.3
复制测试的配置文件到/opt目录。
cp deploy/docker-compose/config-tutorial.ini /opt/
运行dongtai-openapi服务,将网络设置成为同一个洞态网络。
[root@localhost DongTai]# docker run -itd -p 8000:8000 --network dongtai-net -v /opt/config-tutorial.ini:/opt/dongtai/openapi/conf/config.ini registry.cn-beijing.aliyuncs.com/huoxian_pub/dongtai-openapi:1.0.3 7e0cb891a03eaa64f5107ee1f2cfe969161c82e8ed53097fa88d10230d9ec37df
下载openrasp测试用例,用来做漏洞测试。
wget https://packages.baidu.com/app/openrasp/testcases/vulns.war
后面会发现下载的openapi会是500错误(偶发性),我就直接把他镜像的jar包拖出来,重新docker build。
[root@localhost dongtai-openapi]# ls /var/lib/docker/overlay2/0f7cb0eb1bf71efaf898f62749dda6b3c3fabec22029bbed8fdbd0e91b82ef80/merged/tmp/iast_cache/package/ dongtai-servlet.jar iast-agent.jar iast-core.jar iast-inject.jar
重新运行这个build_with_source.sh脚本就可以了。
使用
打开浏览器访问80端口就可以看到页面。
输入默认账号和密码:admin/admin,登录进去。点击部署IAST,会提示配置openapi。
来到系统配置,点击服务注册,输入8000端口,点击保存。
再次点击IAST部署,会来到agent部署目录。
把openrasp漏洞靶场移动到tomcat的web目录。
[root@localhost opt]# mv vulns.war /opt/tomcat/webapps/
测试发现,自动安装不响应以及重启tomcat会失效,就不整这些花里胡哨,选择手动安装。
下载agent.jar。
[root@localhost opt]# curl -X GET "http://192.168.0.5:8000/api/v1/agent/download?url=http://192.168.0.5:8000&language=java" -H 'Authorization: Token 295f534533a7172291c632a2296f65d4f2b26949' -o agent.jar -k
进入tomcat主目录,找到bin/catalina.sh文件,在文件第二行增加如下配置:
CATALINA_OPTS="-javaagent:/opt/agent.jar"
启动tomcat服务。
[root@localhost bin]# ./catalina.sh start Using CATALINA_BASE: /opt/tomcat Using CATALINA_HOME: /opt/tomcat Using CATALINA_TMPDIR: /opt/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS: -javaagent:/opt/agent.jar Tomcat started.
新建一个项目。
选择agent
点击项目配置,可以看到test项目的信息。
点击组件管理,可以看到当前组件版本,以及是否存在安全风险。
点击系统配置,就可以看到agent上线。
访问测试用例
点击遍历目录。
发现单纯输入reports参数内容之后,洞态就检测到存在目录遍历漏洞。如果不输入攻击语句就知道漏洞的话,这还真不存在脏数据的问题???
可以看到漏洞的具体信息。
可以看到污点流图。
其他的例子,你们可以自己去测试。
对于java代码打包成jar包的,洞态这边也支持,直接加上-javaagent即可。使用webgoat7.1版本进行测试
java -javaagent:/opt/agent.jar -jar webgoat-container-7.1-exec.jar
洞态提供漏洞验证功能,不用自己去复测。
我在文档看到支持django,于是按照文档进行操作。
写一个SQL注入漏洞的接口用来做测试。
启动django,提示监控状态。
但是发现访问记录和漏洞记录都没有上传,这块就跳过了。
PS:
看完这篇文章的之后,麻烦帮我star一下GitHub《SIEM部署指南》这本书,谢谢~
书的链接地址:https://wushang0l.gitbook.io/siem/
GitHub地址:https://github.com/yingshang/siemBook