安装
按照官方文档,https://doc.dongtai.io/02_start/index.html
使用docker来安装,直接执行
git clone https://github.com/HXSecurity/DongTai.git
cd deploy/docker-compose/
./dtctl install -v 1.1.2
不过这个创建docker有一个问题就是,openapi的端口没有被开启,修改dtctl,给openapi添加端口。这个端口的开启在1.0.5中,需要自己去填写openapi。
dongtai-openapi:
image: "dongtai.docker.scarf.sh/dongtai/dongtai-openapi:$CHANGE_THIS_VERSION"
restart: always
ports:
- "8000:8000"
使用账号密码admin/admin登陆,查看状态监控,基本就是如下显示
初测试
下载agent,此处使用IDEA来配置,在启动参数中添加,此处使用一个Spring的项目Ruoyi4.6版本。
洞态这边会显示一个agent:
我们在ruoyi的后台点点点
在洞态那边可以看到已经有一堆数据过来了
旁边还存在依赖检测
只不过这个检测注入有点问题,比如上面检测到pageSize存在问题,我们跟随调试一下。进行到如下代码,此处意思是获取参数名。
这里获取参数中排序的参数值此处是传输的asc
下面的getPageSize是获取参数PageSize,但是这个函数返回类型是Integer。所以当传输一些字符返回的是null。
num和size不为null的时候,这里getOrderBy把参数orderByColumn和isAsc进行了拼接,escapeOrderBySql把参数值进行了一次判断,正则匹配字母数字和下划线,逗号,点。如果想靠这两个参数拼接也不行。
这个版本存在一个注入,而这个注入跟这个参数其实没啥关系,ruoyi使用了mybatis,上面这个功能点确实是存在问题,查看sql的目录文件SysRoleMapper.xml。
找到id为selectRoleList,下面就可以看到了,其实是用了$来传参。
但是这个参数并不能直接利用,因为这个参数不在上面这个请求里。需要手动添加一下
这个功能上确实是存在注入问题,但是检测没有找准参数,这个点也许是由于这个参数不存在的原因,导致检测存在一些偏差。