Sqlmapapi扫描
Update date:
Usage: sqlmapapi.py [options]
Options:
-h, –help show this help message and exit
-s, –server Act as a REST-JSON API server
-c, –client Act as a REST-JSON API client
-H HOST, –host=HOST Host of the REST-JSON API server
-p PORT, –port=PORT Port of the the REST-JSON API server
从sqlmapapi.py文件可以看出来,我们利用的文件的调用关系是
进入到lib/utils/api.py的server类,可以发现通过向server提交数据进行与服务的交互。 一共分为3种类型。
Users’ methods 用户方法
Admin function 管理函数
sqlmap core interact functions 核心交互函数
可以提交数据的种类如下。
用户方法
@get(“/task/new”)
@get(“/task//delete”)
管理函数
@get(“/admin//list”)
@get(“/admin//flush”)
核心交互函数
@get(“/option//list”)
@post(“/option//get”)
@post(“/option//set”)
@post(“/scan//start”)
@get(“/scan//stop”)
@get(“/scan//kill”)
@get(“/scan//status”)
@get(“/scan//data”)
@get(“/scan//log//“)
@get(“/scan//log”)
@get(“/download///“)
不难发现这些操作可以完全满足我们的测试需求,因此利用这些就可以批量了。当然每一种请求都会有不同的返回值,这些返回值是json的形式传回, 解析就好了。其实这些我已经替大家做好了,调用AutoSqli类就可以了,但是还是要挑一些讲下。
task/new 任务建立
GET /task/new Response:
{
“taskid”: “1d47d7f046df1504”
}
/scan/<task_id>/status 扫描任务状态
GET /scan/
{
“status”: “terminated”,
“returncode”: 0
}
通过sqlmap结合burpsuite工具,可以更加高效的对应用程序是否存在SQL注入漏洞进行地毯式的扫描。
1.首先是burp设置记录log,文件名就随便填一个了。
2.把记录的log文件放sqlmap目录下
3.sqlmap读log自动测试:
python sqlmap.py -l 文件名 –batch -smart
batch:自动选yes。
smart:启发式快速判断,节约时间。
4.最后能注入的url会保存到out文件夹下
注意:log文件中如果有sqlmap无法读取的字符(ascii码之外的字符)会读取失败。
1.配置burpsuite下记录所有的request记录,并保存在指定文件夹。
因为windows下sqlmap工具需要使用python,所以我的sqlmap路径放在了D:\mysoft\Python\sqlmap下面,
而收集request的记录文件则命名为D:\mysoft\Python\sqlmap\burp.log文件。
- 执行命令:sqlmap.py -l burp.log –batch -smart 即可对burp.log中保存的所有request进行注入扫描。
Batch:会自动选择yes
Smart:启发式快速判断,节约时间。
window版的sqlmap最后能注入的URL都会保存到C:\Users\Administrator.sqlmap文件夹下。
–level=(1-5) #要执行的测试水平等级,默认为1
–risk=(0-3) #测试执行的风险等级,默认为1
探测等级
参数:–level
共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,你也可以根据相应的格式添加自己的payload。
这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。
总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。
风险等级
参数:–risk
共有四个风险等级,默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。
在有些时候,例如在UPDATE的语句中,注入一个OR的测试语句,可能导致更新的整个表,可能造成很大的风险。
测试的语句同样可以在xml/payloads.xml中找到,你也可以自行添加payload。