通过页面资产监控,拿下1500美刀!!

admin 2024年9月9日22:37:29评论13 views字数 2628阅读8分45秒阅读模式
 

正文部分

漏洞总结

i. 当遇到当前没有办法打入的资产,在国内有可能是(404,nignx默认页面等等),这时候不妨编写一个工具,去进行页面变化的监控,有可能会有大收获,例如:有新的业务上线。

ii. 当遇到404的时候可以尝试一下对路径进行fuzz,当fuzz的时候都是404的时候,有可能并不是目录不存在,而是对方服务器进行了限制,有可能是权限等问题,这时候可以使用一些方法尝试绕过,例如url编码/;,/等

iii. 当页面存在debug模式的时候,我们可以利用改模式去进行fuzz,去判断我们缺少的参数!

漏洞复现

原文链接:https://medium.com/@0xold
您是否遇到过一个端点,您本能地知道它很脆弱,但您不太了解后端发生了什么或如何利用它?在这篇文章中,我将指导您了解一种将我的黑盒测试转换为半白盒测试的技术。这种方法导致发现了多个漏洞,并最终导致在系统上实现远程代码执行。

通过js获取接口

通过js代码,我发现了一个名为 ExtraServices 的终端节点,但是,终端节点返回了 404 状态代码,但是和服务器直接返回404有一些不同,我使用 ffuf 对路径进行fuzz

通过页面资产监控,拿下1500美刀!!

使用以下命令

ffuf -c -w <(cat customwordlist.txt ) -u https://company.com/Extraserivce/FUZZ

该语法称为进程替换,充当程序可以从 stdin 读取的输入。我经常在模糊测试目标时使用它,因为它允许我即时调整或修改我的单词列表。<()

例如,如果您找到一个终端节点,并且想要转储所有用户 ID,而不是创建一个新文件来保存所有用户 ID,然后对其进行模糊测试,您只需使用api/users/:user:id

ffuf -c -w <(seq 1 1337) -u https://company.com/ api/users/FUZZ

回到 Extraserivce[1] 端点,模糊测试这个端点没有产生任何结果,所以我决定暂时保留它

发现非常规404页面

然后几个小时后,我再次对这个站点进行测试,我发现一些之前可以返回数据的路径的现在几乎都返回自定义的 404 响应,也就证明了这个404并不是服务器进行返回的,而是后端处理自定义的,开发人员实现了一个功能,可以为某些端点返回 404 响应,

于是我对一个之前可以返回数据路径进行测试,尝试绕过,在路径 的开头之前添加了一个反斜杠,例如 /purl/test,它返回了 200 OK。

以此类推,我重新尝试 Extraserivce[2] 端点,并在它前面添加了一个反斜杠,然后再次开始对其进行模糊测试

ffuf -c -w <(cat customwordlist.txt ) -u https://company.com/Extraserivce/FUZZ

不久之后,我收到了一个新的路径:/CallAny

通过页面资产监控,拿下1500美刀!!

根据端点名称和响应,我认为这个端点正在接受一个参数,然后在 call_user_func 或 eval 或任何执行代码的类似函数中执行它,所以我开始对 GET、POST 请求参数的端点进行模糊测试,其中包含几个值,例如

FUZZ=phpinfoFUZZ=phpinfo()FUZZ=phpinfo();

还有更多人认为它直接从 POST 请求中获取,而无需使用类似 php://input 包装器的请求参数

所以我开始尝试在正文中注入 phpinfo <?php phpinfo();?> ls 等内容

通过页面资产监控,拿下1500美刀!!

但没有任何真正有效的方法,我还尝试了 SSRF/LFI 之类的东西,但我无法真正弄清楚后端发生了什么,所以我放弃了它。

发现调试页面

几天后,在浏览网站和测试其他功能时,我收到了下面的错误,这是一个PHP的调试页面,表明开发人员在生产中开启了调试模式,因为启用了调试模式,如果导航到任何返回错误的端点,它将显示错误详细信息,因此我将能够知道出了什么问题,所以我再次快速导航到 Extraserivce/callany 端点,但是我为时已晚,开发人员几秒钟后关闭调试模式。

通过页面资产监控,拿下1500美刀!!

一个想法在我脑海中闪过:如果开发人员再次打开调试模式,我为什么不监控此终端节点并获取响应呢?所以我决定监控端点并检查响应大小是否不同,然后对其断点进行判断

通过监控获取到debug出现时机,获取到隐藏参数,成功任意文件读取

不久之后,我在我的 discord 上收到了以下 3 个错误

_Warning: Undefined array key “Model” in redacted on line
__Warning: Undefined array key “Method” in redacted on line
_Warning: include_once(Models/): Failed to open stream: No such file or directory in redacted on line

通过debug的报错,获取到了Model参数,同时发现了一个关键函数:_include_once_,直接尝试使用include_once去进行敏感文件的读取!!

有关于 include_once 函数的利用可以看一下这篇文章:

✔__PHP文件包含漏洞全面总结 - Zeker62 - 博客园 (cnblogs.com)

通过页面资产监控,拿下1500美刀!!
通过页面资产监控,拿下1500美刀!!

利用include_once实现任意文件包含rce

使用经典方法,读取 proc/self/environ 等敏感文件,并没有真正返回任何结果,因此我决定对 Web 目录进行模糊测试,寻找可能表明写入主机的方法的线索

Model=../.gitignore
通过页面资产监控,拿下1500美刀!!

然后我收到了 3 个结果。读取 .gitignore 发现了一些有趣的文件

通过页面资产监控,拿下1500美刀!!

特别是 log 和 LOG_Path 目录,因为它可能会记录一些用户可以控制的内容,例如 headers/params/path 等

所以我决定对这 2 个目录进行模糊测试,但幸运的是,在模糊测试时我忘记了包含日志目录,所以没有这样做

Model=../log/FUZZ.txt

我做了 Model= ../FUZZ.txt

当我查看响应时,我发现 test.txt 的内容存储了 X-ORIGINAL_URL 端点的整个 HTTP 请求

通过页面资产监控,拿下1500美刀!!

所以我请求了文件中的路径test.txt并在标题中添加了一个 webshell

T:<?php system($_GET['cmd-old']); ?> 然后执行 ls 命令作为概念验证

通过页面资产监控,拿下1500美刀!!

同时因为任意文件读取,导致test.txt被当成代码去执行了,成功实现rce!!

 

原文始发于微信公众号(fkalis):【海外SRC赏金挖掘】通过页面资产监控,拿下1500美刀!!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月9日22:37:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过页面资产监控,拿下1500美刀!!https://cn-sec.com/archives/3147363.html

发表评论

匿名网友 填写信息