1、工具:AppScan
之前还有用过Acunetix,但是没有AppScan好用
1、部署AppScan
2、新建一个扫描,录制登录程序
3、可以选择让程序自己进行全盘扫描或者选择手动搜索
4、可以选择全盘扫描,然后在里面再选择手动探索。
会弹出一个谷歌浏览器,程序会记录下你访问了哪些接口,然后判断你这些请求是否有问题。
需要注意的是,程序会修改你的入参然后批量访问接口,会造成大量脏数据,有需要可以提前备份一下数据库。
5、结束了之后,就生成导出报告,就选择第一个tab的生成pdf就好,或者直接看一下结果
2、发现问题及修复:
共进行了三次扫描,发现以下中、高级漏洞问题:
-
登录接口密码明文
修复:
密码使用SM2加密 -
sql注入
原因:
appscan判断修改入参影响结果即注入成功,排序字段orderBy由前端传入,通过对入参拼接SELECT语句影响了排序
修复:
1)因排序字段引起的
统一封装分页查询构造方法,检查入参的排序字段和排序顺序字段
2)mybatis传参检查
对前端直接传入参数,且无法使用预编译方式拼接到sql的。统一加上参数校验,禁止SELECT、空格符等关键字。 -
跨站请求
原因:
appscan判断更改接口请求的reference,请求成功则跨站请求攻击成功。通常有两种防御措施:1、检查Referer字段 2、添加校验token
修复:
1)系统接口,通过校验请求头token防御。需要使用token的接口不能放入白名单。
2)onlyoffice接口,通过修改nginx的配置文件:onlyoffice:/etc/onlyoffice/documentserver/nginx/ds.conf,限制reference 的 ip来源,在生效的节点中添加如下:
#reference 限制 valid_referers server_names 10.30.32.85; if ($invalid_referer) { return 403; }