渗透测试工具之sqlmap

二叶草 2020年3月22日12:12:57渗透评论阅读模式
 

1. sqlmap是什么

在这个数据有价的时代数据库安全已经成为了重中之重,于是就整理了一下最常用的一款(反正我上大学的时候它还是蛮流行的...)数据库安全方面的渗透测试工具sqlmap的使用笔记。

sqlmap是一个自动化的sql注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,甚至还提供了一个字典来将取回来的hash爆破,当然对于真实环境中这爆破功能战斗力基本为0....

sqlmap是使用python写的,因此具有跨平台的特性,并且下载下来解压就可以使用啦,因此下载安装部分不再介绍。

2. 如何使用

模拟一个真实的场景,我写了一个有sql注入漏洞的登录接口作为测试用来练习sqlmap的使用,就拿它开刀来取得一个合法的登录口令。

step 1. 检测注入点

首先检测参数是否可注入:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar"

需要注意的是上面的url一定要用引号括起来不然会报错的。

按照提示一步一步选择即可,如果觉得选项太多太麻烦可以使用--batch来让程序自己个选择:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch

如果可以注入的话,结果应该是类似于这个样子的:

渗透测试工具之sqlmap

上面的意思就是发现了两个注入点,这两个注入点就是传入的username和passwd参数。

step 2. 取数据

当手中有了注入点的时候,就相当于是有了这个数据库的访问权,接下来把需要的数据取回来即可。

想象一下登录口令一定存放在某张表下,可是我连这台机器上都有哪些数据库都不知道该怎么办呢,--dbs查看数据库:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch --dbs

我自己机器数据库有些不可描述的库,我打了下码,大致就是这个样子吧:

渗透测试工具之sqlmap

我是能看到有哪些数据库了,但这有毛线用啊,我想知道的是这个应用程序当前使用的数据库是哪个啊,使用 --current-db:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch --current-db

渗透测试工具之sqlmap

啊我看到了当前的数据库是sql_inject_demo,我要赶紧知道这个库下面都有哪些表:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo --tables

渗透测试工具之sqlmap

啊,可恶,忘了多做几张混淆视听的表了,在实际环境中一般都会有百八十张表差不多的,但是存储用户的一般脑回路正常的都会跟user这个词沾边的,所以确定到底是哪个表是用户表难度还是蛮低的,好了这一关权当放水通过了,接下来我要看这张表中都有哪些字段,因为我需要用户名和密码这两个列的数据,但是首先我得知道存储这两个字段的列名字,所以看一下这个用户表的表结构:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo -T t_user --columns

渗透测试工具之sqlmap

呃,好吧,这个表的结构过于简单,又算是放水了,不过一般存储用户名的列都会叫user、username、name之类的,存储密码列的都会跟passwd、password、auth之类的沾边的,如果不确定的话就多取几列也没关系的,现在已经确定了字段的名字了,把它拿回来:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo -T t_user -C 'username, passwd' --dump

这个过程可能会稍微有点慢,因为使用了--batch让sqlmap对一些询问的选项自己看着办,其中有一个检测到hash询问是否字典爆破的这货默认给爆破了,所以可能需要等上好一阵子才能看到结果:

渗透测试工具之sqlmap

哈,这个时候我们已经得到了想要的东西,一个访问口令,GET!它就是 admin / admin。

因为我这里设置的是弱口令,所以很快就跑出来了,如果密码复杂度很高的话可能需要保存下来另外使用专门的爆破工具来搞一搞。

这里有个坑,我开始写的时候密码习惯性的加了盐,然后就跑不出来了,后来注释掉了,至于加了盐的密码该怎么搞我也布吉岛....

作为一个有野心的脚本小子,怎么能满足于只get一个web访问口令呢,我们都知道mysql的元数据什么的都是存储在它的一个叫mysql的库中,包括访问系统的口令,所以这个时候可以如法炮制,获得数据库的访问口令:

1 ./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D mysql -T user -C 'user, authentication_string' --dump

渗透测试工具之sqlmap

哈,这么简单就得到了mysql的root访问权限....

当然实际环境中不会这么顺利啦,这里只是作为一个演示而已。

本文来源于:渗透测试工具之sqlmap-变化吧门户
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧门户观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
二叶草
渗透测试实用工具 渗透

渗透测试实用工具

 工具概述 1、新增批量修改文件夹文件后缀功能,并重新排列工具,更加详细使用 2、新增文件夹监控功能,监控python tool.py -monitor C: 3、新增将包含rgb值的txt...
简谈渗透测试各阶段我常用的那些“神器” 渗透

简谈渗透测试各阶段我常用的那些“神器”

 前言 本人所有文章都很用心的写作完成,并时常总结如何分享更有用的东西给朋友们。这篇更是如此,晚上准备到凌晨四点开始写作,为了需要的朋友而写,不喜欢的右上角点叉不要像上次文章一样在下面喷粪逼我骂你,另...
内网渗透工具- Intranet-Penetration 渗透

内网渗透工具- Intranet-Penetration

 整理一些常用的内外网渗透测试工具 PHPoxy 通过PHP脚本运行一个可以访问内网机器的Web代理。 SocksCap  socks5代理客户端 XX-Net    科学上网利器 phpsocks5...

发表评论