在渗透测试过程中,对目标进行漏洞扫描的时候,扫描报告会提示目标有SQL注入漏洞,那在这个时候就需要我们手工对扫描报告当中的链接进行手工验证。我们需要准备一个工具:SQLmap
SQLmap官方页面
在使用SQLmap进行渗透之前,需要找到网站的注入点。
当给sqlmap这么一个url的时候,它会:
1、判断可注入的参数
2、判断可以用那种SQL注入技术来注入
3、识别出哪种数据库
4、根据用户选择,读取哪些数据
sqlmap支持五种不同的注入模式:
1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4、联合查询注入,可以使用union的情况下的注入。
5、堆查询注入,可以同时执行多条语句的执行时的注入。
0x00 SQL注入与SQLmap
SQL注入是一种代码注入技术,SQL注入的成功必须借助应用程序的安全漏洞,例如用户输入没有经过正确地过滤(针对某些特定字符串)或者没有特别强调类型的时候,都容易造成异常地执行SQL语句。SQL注入是网站渗透中最常用的攻击技术,但是其实SQL注入可以用来攻击所有的SQL数据库。在这个指南中我会向你展示在Kali Linux上如何借助SQLMAP来渗透一个网站(更准确的说应该是数据库),以及提取出用户名和密码信息。
SQLmap是一个开源的渗透测试工具,用于自动化侦测和实施SQL注入攻击及渗透数据库服务器。SQLMAP完美支持MySQL、Oracle、PostgreSQL、MS-SQL与Access等各种数据库的SQL侦测和注入。
还有很重要的一点必须说明:不要去做恶意的破坏,想一想,你辛辛苦苦赚的钱被小偷偷了,你是什么感受。将心比心一下,不要去破坏别人的财产。这是违法的行为。
0x01如何查找可注入的网站
a:利用Google Dorks字符串找可注入的网站
b:验证网站是否可以进行SQL注入
在利用Google Dorks进行关键字搜索之后,也许会得到很多类似的结果,那怎么验证这些站点是否存在注入呢,一个简单粗暴的方法是:在链接参数后面加单引号,然后回车,如果返回一个SQL错误,则存在注入。
当然,现在更多使用的是and1=1,or1=1,or1=2
举例测试:
这是一个疑似存在注入点的网站,我们现在给链接后面加上单引号,看看会发生什么。
%27其实就是单引号,浏览器对单引号做了一个转义。可以看到此页面是存在SQL注入的,接下来测试一下and1=1,or1=1,看看会发生什么。
and1=1
Or1=1,or1=2
现在已经确认该链接是存在SQL注入的,那么这时候就该SQLmap上场了。
0x02SQLmap大显身手
a:列出链接所在的数据库
sqlmap -u “url” –dbs
b:列出数据库中的表
sqlmap -u “url” -D DatebaseName –tables
c:列出数据表中的列
sqlmap -u “url” -D Datebase -T TableName–columns
以下操作涉及网站敏感数据,就不截图了,看官们只要知道怎么用就好啦。
d:从数据库表的列中列出用户名(前提是表中有用户名)
sqlmap -u “url” -D DatabaseName -TTableName -C ColumnsNameuser_login –-dump
e:提取用户密码
sqlmap -u“url” -DDatabaseName -T TableName -C ColumnsName user_password –dump
进行到这一步,我们就得到了密码字段的值,不过是HASH值,在KaliLInux中有判别HASH值的工具Hash-identifier,我们只要打开那个工具根据提示提供HASH值就可以了。
SQLmap参数说明:
-T:指定要列出的表-columns:列出表中的列
-C:指定表中的列名-dump:导出结果
0x03总结
在渗透测试活动当中的漏洞扫描环节,不要太信任你的某一个扫描器,最好多用几个扫描器对目标进行扫描,对比他们的扫描报告。
参考链接:
http://www.anquan.us/static/drops/tips-2113.html
https://www.exehack.net/4955.html