CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell

admin 2022年6月1日09:53:53评论392 views字数 1303阅读4分20秒阅读模式

★且听安全-点关注,不迷路!



CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell

★漏洞空间站-优质漏洞资源和小伙伴聚集地!


漏洞信息


pfSense 是基于 FreeBSD 的、开源中最为可靠( World's Most Trusted Open Source Firewall )的、可与商业级防火墙一战(It has successfully replaced every big name commercial firewall youcan imagine in numerous installations around the world)的防火墙。


PfSense 防火墙存在命令执行漏洞,影响版本为 <=2.5.2。可借助 `diag_routes.php` 文件 `sed` 命令处理问题写入 Webshell。

环境搭建


从 PfSense 官网下载解压缩后使用 VMware 安装:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


重启后配置系统,完成配置:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


补丁对比


对比 2.5.2 和 2.6.0 版本代码,`diag_routes.php` 增加了 `Filter` 参数过滤:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


再来看 2.5.2 版本代码,当 `isAjax` 和 `filter` 参数存在时,首先使用 `htmlspecialchars` 处理 `filter` ,然后执行 `escapeshellarg` :


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


由于使用的php版本为 `7.4.26` ,毋庸置疑基本不能绕过 `escapeshellarg` 和 `htmlspecialchars` 检查,所以问题应该不是出现在 PHP 代码本身上:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


任意文件写入


简单修改 `diag_route.php`,发送 `/diag_routes.php?isAjax=1&filter=abc` GET请求,打印 `netstat` 命令如下:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


这里注意到使用了 `SED` 命令的 `-e` 选项,可以通过该参数执行脚本。`-w` 选项可以实现文件写入,以 `/::1/w /tmp/testsed.txt` 为例,其功能为将读入文件中包含 `::1` 字符串的行拷贝到 `/tmp/testsed.txt` :


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


在 payload 中进行测试,获得了一个写入指定文件的 payload :


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


执行的 `netstat` 命令如下,使用 `%0a%23` 转义得到 `回车+#`,正好可以将后续字符串注释,这里附上一个本地测试情况截图:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


最后控制写入内容,通过 `s/Flags/VVV/g` 代码将 `Flags` 字符串替换:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


`<>` 等特殊字符被转义,需要解决特殊编码写入问题:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


最终通过编码处理成功写入:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell

Getshell


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


访问 Webshell,连接为 `https://ip/shell.php?a=system(id);` :


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


由于缺乏 CSRF 防护,漏洞也可能被远程匿名利用。


修复方式


在新版本中弃用 `sed` 处理 `netstat` 结果,转而使用 `egrep`:


CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell


有兴趣获取完整漏洞分析过程的小伙伴,请加入我们的漏洞空间站-致力于打造优质漏洞资源和小伙伴聚集地!



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



★且听安全-点关注,不迷路!

CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell



★漏洞空间站-优质漏洞资源和小伙伴聚集地!

CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell

原文始发于微信公众号(且听安全):CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月1日09:53:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2021-41282 PfSense 防火墙命令执行漏洞 Getshellhttps://cn-sec.com/archives/1074281.html

发表评论

匿名网友 填写信息