之前一直打算写文章记录一下平时的学习,因为太懒了一直拖到现在。最近根据工作需要,研究了下它的api调用,当做一个笔记。
0x00 关于
wvs官方没有放出API接口的详细文档,参考了很多网络上流传的接口利用脚本和文档。大致分为两类,一个是完全模拟web登录、web操作,另一个就是api调用。因为api调用比较简单高效就选择了api的方式。发现根据它web的5个功能模块它的主要API也有五个,分别是
dashrgbord,tagets,vulnerabilities,scans,reports
为了满足工作的需求,大概要扫描几千个web然后还要出excel报告,这种需求如果用人力解决,粘贴复制花费的时间精力能让人绝望,这里我主要使用到了scans这个接口完成需求。
看这个老哥的文档https://github.com/0xa-saline/acunetix-api,大概就能了解api是怎么调用的了。
0x01 API
开始用Get /api/v1/scans 打算获取所有扫描,然后做解析,后来发现脚本跑完报告数目比预期少很多,这个scans一次获取只能获取100个结果。卡在这里看了很多文档和脚本,没找到怎么获取下一页结果的方式。后来在web上的scans发现了两个参数cq,当需要获取100-200结果的时候使用c=100,c=200是200-300的结果以此类推。q是一个filter过滤扫描状态的。通过判断调用结果
当scans的键值是[],就代表所有的scans都已经获取到了。通过
判断并跳出当前函数即可。其实wvs的很多接口详细参数都可以通过分析web请求找到。类似的需求只要知道使用哪个接口,再看一下web参数就好解决一点。
0x02 编写利用
api知道了,且数据都是标准的json,利用就很方便。写一个脚本批量去处理就可以。功能是抓取当前wvs所有scans,解析后保存到xslx文件中,包括风险地址修复建议等。只需替换
即可,其中apikey需要与wvs当前apikey一致。如果使用的是破解版,重新使用注册机注册后也要及时更换apikey。
完成后自动保存到out目录下。
文件名为当天时间戳。
结果文件。