安装

按照官方文档,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"

image-20211208141900279

使用账号密码admin/admin登陆,查看状态监控,基本就是如下显示

image-20211208155958875

初测试

下载agent,此处使用IDEA来配置,在启动参数中添加,此处使用一个Spring的项目Ruoyi4.6版本。

image-20211208160954655

洞态这边会显示一个agent:

image-20211208161019830

我们在ruoyi的后台点点点

image-20211208161723992

在洞态那边可以看到已经有一堆数据过来了

image-20211208161757676

旁边还存在依赖检测

image-20211208162407807

只不过这个检测注入有点问题,比如上面检测到pageSize存在问题,我们跟随调试一下。进行到如下代码,此处意思是获取参数名。

image-20211208172131061

这里获取参数中排序的参数值此处是传输的asc

image-20211208172203836

下面的getPageSize是获取参数PageSize,但是这个函数返回类型是Integer。所以当传输一些字符返回的是null。

image-20211208172329146

num和size不为null的时候,这里getOrderBy把参数orderByColumn和isAsc进行了拼接,escapeOrderBySql把参数值进行了一次判断,正则匹配字母数字和下划线,逗号,点。如果想靠这两个参数拼接也不行。

image-20211208183537516

这个版本存在一个注入,而这个注入跟这个参数其实没啥关系,ruoyi使用了mybatis,上面这个功能点确实是存在问题,查看sql的目录文件SysRoleMapper.xml。

找到id为selectRoleList,下面就可以看到了,其实是用了$来传参。

image-20211208183920487

但是这个参数并不能直接利用,因为这个参数不在上面这个请求里。需要手动添加一下

image-20211208184326669

这个功能上确实是存在注入问题,但是检测没有找准参数,这个点也许是由于这个参数不存在的原因,导致检测存在一些偏差。





# web安全  

tocToc: