【漏洞实例】某咖啡站点的Sql注入

admin 2024年7月4日08:24:43评论11 views字数 2564阅读8分32秒阅读模式
前言
【漏洞实例】某咖啡站点的Sql注入

声明:本文仅供学习参考使用,如若造成其他不良影响,均与本公众号无关!

阅读政策规则时,我注意到对赏金有效的域名仅限于极少数,但我并不在意,并探索了所有可到达的目标,其中最早的目标是news.starbucks.com。

我打开主页上的第一篇文章,看到文章页面上有一个按钮,可以下载所有多媒体资产(图片、视频…)和各种格式(高质量、低质量…)。所有这些下载链接都以一种特殊的方式构建:每个URL都包含两个参数,ACT和lv。

【漏洞实例】某咖啡站点的Sql注入

第二个参数似乎包含了一些不常见的编码信息,但第一个参数名称ACT表明进行一些测试可能很有趣。

从同一URL更改该值会得到来自网站的特别有趣的响应,例如从ACT=105更改为ACT=106,重定向到相关图像的本地路径:

【漏洞实例】某咖啡站点的Sql注入

这很有趣,但没有太多意义,所以我决定进行更多的调查。我启动了可靠的Burp,并以ACT参数作为目标位置,启动了入侵者攻击会话,看看通过改变该参数可能会产生什么影响。

当攻击会话终止时,我查看了结果并注意到了各种情况:

大多数响应都是标准的错误消息,因为它没有使用有效的参数值;相反,所有其他不同的响应都来自请求中ACT的连续值组(例如104/105/106/107、71/72/73等);

其中一个回复是一些javascript代码,在评论中引用了“ExpressionEngine-by EllisLab”,然后我发现它是一个类似于Wordpress的CMS;

几乎所有的响应都是html错误页面,其中包含关于错误的不同详细信息,但除了一些值,特别是ACT=55和ACT=56:

【漏洞实例】某咖啡站点的Sql注入

从第二个参数中获得的响应无疑是为了寻找更多关于“ACT”参数背后发生的事情的线索。

我想知道这些消息是否有些标准,即来自一个通用平台/工具/其他什么,所以我只是在谷歌上搜索了这两条特定的消息,希望能找到相关的信息。

幸运的是,只有三个结果指向searchcode.com,其中两个结果与一个名为mod.zoo_flexible_admin.PHP的PHP文件有关。

在这个文件中有一堆与名为NDG Flexible Admin for Expression Engine的插件相关的代码,所以它似乎是与网站上使用的相同CMS相关的PHP代码!

事实上,我正在寻找两条线:

【漏洞实例】某咖啡站点的Sql注入

这显然意味着“ACT”参数作为一种处理程序运行,用于调用CMS实现中的特定函数。因此,对ACT=55的请求将调用函数ajax_save_tree(),而对ACT=56的请求将呼叫函数ajax_remove_tree()。

此时此刻,我非常想了解输出消息背后涉及哪些操作,特别是如果它们与数据库的交互有关,以及可以对它们做些什么。

通过查看我发现的PHP源代码,我注意到函数内部有一些有趣的行。让我们再次看到与ajax_save_tree()相关的代码:

【漏洞实例】某咖啡站点的Sql注入

似乎在函数内部存在一个不安全的硬编码查询。也许是因为这是一个不太了解的作者编写的第三方插件代码。

但这并不容易。行140仅从相同名称的POST参数中获取$group_id变量的值,该值在查询内部的行150处被直接使用,但问题是在行145处存在IF语句,该IF语句迅速将执行流重定向到行147处的回显指令。

检查IF指令中的条件,似乎要使其评估为True,POST请求必须精心编制,以包含jsontree参数;此外,该参数必须用作gettreehtml()函数的参数,该函数必须返回一个非空字符串。

get_tree_html()函数(在第59行定义,此处未显示)简单地将json树结构转换为链接的html列表,因此对于函数输出内容,只需将最简单的非空json结构作为输入即可,如{x:1}。

总结一下:要成功跳转到第150行,URL必须至少包括以下参数:ACT=55,jsontree={whatevery:whatever}和group_id=whatever(经过一些尝试和错误,我发现即使是site_id=whatever也是所有工作所必需的)。假设group_id值内的任何内容都将包含在SQL查询内并在服务器端执行。

我对所有这些推理充满信心,最终创建了POST请求:

POST / HTTP/1.1Host: news.starbucks.comConnection: closeContent-Length: 81Cache-Control: max-age=0Origin: https://news.starbucks.comContent-Type: application/x-www-form-urlencodedACT=55&jsontree={"x":1}&site_id=1&group_id=1'-IF(1=2,SLEEP(1),0) AND group_id='1

并将其全部发送给了Burp。

如图所示,为了检查是否要执行自定义SQL查询,我决定以某种方式插入一个SLEEP命令(事实上非常不合法)。由于对此查询的响应将为空,因此这将是一种盲目的技术,因此证据将仅依赖于对HTTP请求的响应时间。

现在是时候验证这一切是否会如预期的那样奏效了。点击几下。。。

【漏洞实例】某咖啡站点的Sql注入

【漏洞实例】某咖啡站点的Sql注入

SLEEP时间集和实际量之间的显著时间差异取决于后端管理查询的方式,可能是因为执行未优化,并多次询问数据库。尽管如此,它还是很有魅力。

事实上,现在我可以插入任何我想插入的SQL代码了。首先,强制性的DBMS主要编号版本检查(因为它已经被验证为MySQL):

【漏洞实例】某咖啡站点的Sql注入

【漏洞实例】某咖啡站点的Sql注入

尝试用sqlmap。

在命令行中进行了短暂的调整后,我成功地设置了第一个攻击,作为现有数据库的枚举。

【漏洞实例】某咖啡站点的Sql注入

【漏洞实例】某咖啡站点的Sql注入

关注不迷路
【漏洞实例】某咖啡站点的Sql注入

关注本微信公众号,点击下方微信群,扫码加好友,备注“微信群”,拉你进交流群,后面会在群里抽奖进入知识星球!!知识星球会更新更多的漏洞实例,现正在更新抖音抓包!

【网安智汇】知识星球介绍
【漏洞实例】某咖啡站点的Sql注入

创建知识星球的初衷就是为了分享学习资料,同时也是为了清理电脑和网盘的缓存,知识星球目前已经分享了安全运营、SRC漏洞实例、电子书籍、攻防红蓝紫方资料。可以自行扫码加入。

【漏洞实例】某咖啡站点的Sql注入

或者在微信公众号后台点击微信群,添加微信,备注来意(微信群),加入交流群参与后续的抽奖活动免费进入知识星球。

【漏洞实例】某咖啡站点的Sql注入

END

原文始发于微信公众号(Undoubted Security):【漏洞实例】某咖啡站点的Sql注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月4日08:24:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞实例】某咖啡站点的Sql注入https://cn-sec.com/archives/2916747.html

发表评论

匿名网友 填写信息