使用sqlmap检测sql注入漏洞
使⽤sqlmap检测sql注⼊漏洞
⼀、 sql注⼊概述并安装sqlmap漏洞查看⼯具
1、 sql注⼊概述
所谓SQL注⼊,就是通过把SQL命令插⼊到Web表单提交或输⼊域名或页⾯请求的查询字符串,最终达到欺骗服务器执⾏恶意的SQL命令。
它是利⽤现有应⽤程序,可以通过在Web表单中输⼊(恶意)SQL语句得到⼀个存在安全漏洞的⽹站上的数据库。
⽐如先前的很多影视⽹站泄露VIP会员密码⼤多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注⼊式攻击。例:12306和csdn等⽹站帐号和密码的泄露,都有可能是sql注⼊导致的。
3、 安装sqlmap
环境说明:
主机名 IP地址 作⽤
xuegod120 192.168.0.120 SQLmap
xuegod130 192.168.0.130 DVWA渗透测试演练系统
1) 安装python环境
默认系统中已经安装过python环境
[root@xuegod120 ~]# python -V
如果没有安装python,可以直接使⽤yum安装
yum -y install python
2) 安装sqlmap
将下载的sqlmap软件包上传到服务器,然后解压缩
[root@xuegod120 ~]# tar xf sqlmapproject-sqlmap-1.0.
sqlmap⽤的是python编写,属于解释型语⾔,需要编译,可以直接使⽤。
3) 运⾏sqlmap
[root@xuegod120 sqlmapproject-sqlmap-7eab1bc]# ./sqlmap.py
这⾥因为没有加相关参数,所以有⼀个错误提⽰。
4) 创建sqlmap命令
[root@xuegod120 ~]# ln -s /root/sqlmapproject-sqlmap-7eab1bc/sqlmap.py /usr/bin/sqlmap [root@xuegod120 ~]# sqlmap -h
可以直接使⽤sqlmap命令
⼆、安装渗透测试演练系统DVWA
1、 在xuegod130上部署LAMP环境
[root@xuegod130 ~]# yum -y install httpd php php-mysql php-gd mariadb-server mariadb
2、 启动httpd、mariadb
[root@xuegod130 ~]# systemctl start httpd
[root@xuegod130 ~]# systemctl start mariadb
如果启动mariadb报如下错误方向盘
只需要按照提⽰清空/var/lib/mysql/⽬录下的⽂件即可
[root@xuegod130 ~]# rm -rf /var/lib/mysql/*
[root@xuegod130 ~]# systemctl start mariadb
3、 创建php探针脚本,测试LAMP环境是否搭建完毕
[root@xuegod130 ~]# vim /var/www/html/test.php
<?php phpinfo(); ?>
访问测试
4、 配置mysql数据库
[root@xuegod130 ~]# mysqladmin -uroot password “123456” #配置密码为123456
[root@xuegod130 ~]# mysql -uroot -p123456 #登录数据库
5、 下载DVWA渗透系统代码上传到服务器,并解压到根⽬录下
[root@xuegod130 ~]# yum -y install unzip
[root@xuegod130 ~]# unzip -d /var/www/html/ DVWA-1.9.zip
6、 编辑DVWA配置⽂件
配置数据库信息,user和password是mysql的⽤户名和密码
[root@xuegod130 ~]# 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⽤户密码
看提⽰有错误,按照如下修改即可
[root@xuegod130 ~]# vim /etc/php.ini
改:815 allow_url_include = Off
为: allow_url_include = On
[root@xuegod130 ~]# systemctl restart httpd
报错: reCAPTCHA key: Missing
扩展:
大尖山
reCAPTCHA概述:CMU设计了⼀个名叫reCAPTCHA的强⼤系统,让他们的电脑去向⼈类求助。具体做法是:将OCR(光学字符识别)软件⽆法识别的⽂字扫描图传给世界各⼤⽹站,⽤以替换原来的验证码图⽚;那些⽹站的⽤户在正确识别出这些⽂字之后,其答案便会被传回CMU。
OCR概述:OCR (Optical Character Recognition,光学字符识别)是指电⼦设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后⽤字符识别⽅法将形状翻译成计算机⽂字的过程;
解决⽅法:
卖炭翁原文及翻译[root@xuegod130 ~]# 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’;
修改后再次访问,错误已经没有了。
8、 点击“Create/Reset Database”,等待2S中后会⾃动跳转到管理页⾯
三、使⽤sqlmap进⾏sql注⼊,并获取后台管理员的账号和密码
SQLmap语法:SQLmap命令选项被归类为⽬标(Target)选项、请求(Request)选项、优化、注⼊、检测、技巧(Techniques)、指纹、枚举等。
查看sqlmap.py 帮助选项:
sqlmap常⽤参数:
-
u : 指定⽬标URL,sql注⼊点
–cookie : 当前会话的cookie值
浴室推拉门
-b : 获取数据库类型 检索数据库管理系统的标识
(DBMS:Database Management System 数据库管理系统)
–current-db : 获取当前数据库
–current-user :获取当前登录数据库使⽤的⽤户
实战1:枚举登录MYSQL数据库的⽤户名与密码
实战2:枚举所有数据库
实战3:枚举指定数据库的数据表
实战4:获取dvwa库中users表的所有列名字:
实战5:拖库,指定数据表中的所有⽤户名与密码暴⼒破解成明⽂密码并dump下来
1、 枚举登录mysql数据库的⽤户名和密码
使⽤sqlmap之前需要得到当前会话的cookie等信息,⽤来在渗透过程中维持连接状态
cookie使⽤其复数形式成为cookies,指某些⽹站为了识别⽤户的⾝份,进⾏session跟踪,⽽存储在⽤户本地终端上的数据,这些数据通常都是加密的。
只要是登录过⽹站,就会在本地产⽣cookie,主要⽤于⾝份识别,进⾏session跟踪。
1) 抓取cookie值
使⽤360浏览器或⾕歌、⽕狐浏览器,打开⽹站,登录上⽤户名和密码,进⼊开发模式
2) 为了⽅便演⽰,修改DVWA安全等级为low
4) 获取当前页⾯的cookie值
复制cookie值后,排成如下格式:
security=low;PHPSESSID=glp39jv1sjcs2gbem1pu105hu2总督学
回车后中间会有⼏个选项,每项含义如下
it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n] #看起来后端DBMS是“mysql”。是否要跳过特定于其他DBMS的测试有效负载? #已经识别出来mysql数据库,直接跳过,不在扫描其他类型的数据库,输⼊Y
for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values?
[Y/n] #对于其余的测试,是否要包括扩展提供的级别(1)和风险(1)值的“mysql”的所有测试? #不需要其他测试,直接输⼊n
GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)? [y/N]
#get参数“id”易受攻击。你想继续测试其他⼈吗(如果有的话)?[y/n] 输⼊n
最后结果输出如下:
2、 使⽤命令枚举所有登录mysql数据库的⽤户名和密码hash值,后期可以对密码hash进⾏破解,⽣成明⽂密码
常⽤参数:
–string : 当查询可⽤时⽤来匹配页⾯中的字符串
–users : 枚举DBMS⽤户
–password : 枚举DBMS⽤户密码hash
弹出消息的含义:
do you want to store hashes to a temporary file for eventual further processing withother tools [y/N] #是否要将哈希存储到临时⽂件中,以便最终使⽤其他⼯具进⾏进⼀步处理
比特币如何挖矿do you want to perform a dictionary-based attack against retrieved password hashes? [Y/n/q]
#是否要对检索到的密码哈希执⾏基于字典的攻击?输⼊y
what dictionary do you want to use? #你想⽤什么字典?
[1] default dictionary file ‘/root/sqlmapproject-sqlmap-7eab1bc/txt/wordlist.zip’ (press Enter)
#默认字典⽂件’/root/sqlmapproject-sqlmap-7eab1bc/txt/wordlist.zip’(按Enter键)
[2] custom dictionary file #⾃定义词典⽂件
[3] file with list of dictionary files #带字典⽂件列表的⽂件
#直接回车,使⽤默认字典
do you want to use common password suffixes? (slow!) [y/N]
#是否要使⽤常⽤密码后缀?(慢!)输⼊y

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。