SQL注入到Blind-RCE
Posted 快识
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入到Blind-RCE相关的知识,希望对你有一定的参考价值。
我又回到了一个有趣的发现。这次我将一个SQL注入实例,但这有点不同。此处的应用程序基于ASP.Net,使用MSSQL,支持堆叠查询,并且数据库用户也是sysadmin。一切看起来都很不错,可以完美地执行xp_cmdshell。我面临的唯一问题是,我无法在第一个查询之后获得查询的输出。最重要的是,该应用程序位于防火墙后面,该防火墙不允许任何外部访问。因此,我可以执行OS命令,但是看不到它的输出。这成为一种Blind的RCE。但是,正如标题所示,这不是一个Blind的RCE。
该错误表明basicsalary是无效的列名。通过仔细观察错误消息中公开的查询部分,仅使用单引号作为有效内容,我们发现查询已连接了Payslips表。也许此列是该表的一部分。在这种情况下,在注释掉查询的其余部分之前,我们还需要在有效负载中加入Payslips表。尝试一下:
下一步是检查数据库用户是否是sysadmin,因为只有sysadmin才能启用xp_cmdshell并执行OS级命令,这是我们最终的目标。
由于我们在响应中得到1,因此可以确认当前数据库用户确实是sysadmin。
SELECT * FROM user WHERE userid = "<injection-point>"
支持堆叠查询,我们可以运行以下查询:
SELECT * FROM user WHERE userid = "-1" AND 1=2; WAITFOR DELAY '0:0:5'; -- "
无论如何,请继续检查是否支持堆叠查询。我们将在查询后堆叠一个waitfor delay查询,看看它是否执行:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
延迟3秒(默认为4 ping)表明我们确实有命令执行!目前,我们可以做的是尝试重新连接到VPS服务器并获得有效的Shell。如果应用程序位于配置为阻止传出连接的防火墙后面,仍允许DNS查询,则可以使用此处介绍的DNS渗透方法。但是在我们的案例中,防火墙不允许任何外部交互。到目前为止,我一直陷入Blind的RCE。
在这种情况下,我们不知道网站的物理路径。因此,我们必须以其他方式读取文件。回顾旧备忘单,确实找到了方法!可以执行以下查询来读取文件:
CREATE TABLE mydata (line varchar(8000));
BULK INSERT mydata FROM 'c:windowswin.ini';
SELECT line FROM mydata;
在表中有了内容之后,我们就可以使用UNION查询来读取它:
每天分享干货...
☜长按二维码识别关注
右下角点个“在看”吧~
每天分享干货...
☜长按二维码识别关注
右下角点个“在看”吧~
以上是关于SQL注入到Blind-RCE的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段