浅谈Sonicwall SonicOS的host头注入,防火墙绝对安全?

VSole2021-10-28 16:47:45


前言

最近研究一些防火墙的一些技术,因为现在大多数服务器都架设了防火墙,所以管理员们一致认为只要有了防火墙,那服务器就是安全的,但事实真是如此么?有的时候正是这种所谓的“安全”导致了一些逻辑上面的漏洞。

Sonicwall

Sonicwall是互联网安全设备为各类组织提供一流的安全平台,简单说就是做防火墙的。

官网:https://www.sonicwall.com/

SonicOS是其的一个产品,这是它的数据表

漏洞也发生在这个产品上

SonicOS的操作界面

 host注入

首先host头注入漏洞可能使攻击者能够欺骗特定主机标头,从而使攻击者能够呈现指向带有中毒主机标头网页的恶意网站的任意链接。

在Sonicwall中发现一个问题,host头的值被隐式设置为受信任,从而导致host注入,SonicOS 中的主机头重定向漏洞可能允许远程攻击者将防火墙管理用户重定向到任意 Web 域。而这应该被禁止,并且受影响的主机可以用于域前置。

给大家介绍一下域前置:

域前置技术必须要用https,因为它是基于TLS协议的,域前置还有一个特点是需要修改请求包的host头(host头注入根本),修改方法是修改malleable profile文件,域前置技术可以使用别人的高信誉域名来隐藏自己的真实域名,例如用百度的域名伪装自己,当然前提是百度的域名得跟你的域名再同一个CDN下,这种技术现在在不少的CDN厂商下都被禁止了,不一定会利用成功。一旦成功,攻击者可以利用受影响的主机在各种其他攻击中隐藏。

以下是在SonicOS配置下截取的一个包:

GET / HTTP/1.1Host: 127.0.0.1User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateDNT: 1Connection: closeUpgrade-Insecure-Requests:Cache-Control: max-age=0

他的响应如下:

 HTTP/1.0 200 OKServer: SonicWALLExpires: -1Cache-Control: no-cacheContent-type: text/html; charset=UTF-8;X-Content-Type-Options: nosniffX-XSS-Protection: 1; mode=blockX-Frame-Options: SAMEORIGINContent-Security-Policy: default-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ blob: data: ws: wss: sonicwall.com *.sonicwall.com;
<html>
<body>Please be patient as you are being re-directed to <a href="https://127.0.0.1/index.html" target="_top">a>body>html>

当出现Please be patient as you are being re-directed时,说明网站在跳转页面,和重定向有异曲同工之妙,返回包中,防火墙返回了域名地址,这个时候防火墙所在的服务器也会访问此地址。

我们试着改一下这个host

GET / HTTP/1.1Host: 127.0.0.2User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateDNT: 1Connection: closeUpgrade-Insecure-Requests: 1Cache-Control: max-age=0

注意:改的host必须要和服务器处于同一个cdn下才可以实现域前置。

此时的相应包会是这样:

HTTP/1.0 200 OKServer: SonicWALLExpires: -1Cache-Control: no-cacheContent-type: text/html; charset=UTF-8;X-Content-Type-Options: nosniffX-XSS-Protection: 1; mode=blockX-Frame-Options: SAMEORIGINContent-Security-Policy: default-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ blob: data: ws: wss: sonicwall.com *.sonicwall.com;
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/JavaScript">var resetSecureFlag = false;setTimeout(“goJump();”, 1000);function goJump() {var jumpURL = “https://127.0.0.2/index.html“;var jumpProt = jumpURL.substr(0,6).toLowerCase();var ix;if (jumpProt.substr(0,4) == “http” && (ix = jumpProt.indexOf(“:”)) != -1) {jumpProt = jumpProt.substr(0,ix+1);if (location.protocol.toLowerCase() != jumpProt) {window.opener = null;top.opener = null;}}if (resetSecureFlag) {var sessId = getCookie(“SessId”);var pageSeed = swlStore.get(“PageSeed”, {isGlobal: true});if (sessId) { setCookieExt(“SessId”, sessId, { strictSameSite: true }); }if (pageSeed) { swlStore.set(“PageSeed”, pageSeed, {isGlobal: true}); }}top.location.href = jumpURL;}function setCookie(key, value) {var argv = setCookie.arguments;var argc = setCookie.arguments.length;var expires = (argc > 2) ? argv[2] : null;var path = (argc > 3) ? argv[3] : null;var domain = (argc > 4) ? argv[4] : null;var secure = (argc > 5) ? argv[5] : false;document.cookie = key + “=” + escape (value) +((expires == null) ? “” : (“; expires=” + expires.toGMTString())) +((path == null) ? “” : (“; path=” + path)) +((domain == null) ? “” : (“; domain=” + domain)) +((secure == true) ? “; secure” : “”);}function getCookie(key) {if (document.cookie.length) {var cookies = ‘ ‘ + document.cookie;var start = cookies.indexOf(‘ ‘ + key + ‘=’);if (start == -1) {return null;}var end = cookies.indexOf(“;”, start);if (end == -1) {end = cookies.length;}end -= start;var cookie = cookies.substr(start,end);return unescape(cookie.substr(cookie.indexOf(‘=’) + 1, cookie.length - cookie.indexOf(‘=’) + 1));} else {return null;}}script>Please be patient as you are being re-directed to <a href="https://127.0.0.2/index.html" target="_top">a>head>html>

你可以发现他的jumpURL变成了我们设置的,可以证明确实存在host注入的。

漏洞成因就是SonicOS默认主机头是信任的,且每次会把host给到jumpURL,架设了防火墙带来了host注入,此时你还认为防火墙绝对安全么?

解决办法

此漏洞在2021 年 10 月 12 日已被官方解决

禁用 HTTP 管理,仅使用 HTTPS 管理。

但我认为这治标不治本啊,防火墙本身还是认为host是安全的啊!希望下一个版本可以彻底解决此问题。
防火墙host
本作品采用《CC 协议》,转载必须注明作者和本文链接
最近研究一些防火墙的一些技术,因为现在大多数服务器都架设了防火墙,所以管理员们一致认为只要有了防火墙,那服务器就是安全的。
时光飞逝,转眼间2021年已过大半,我们的“防火墙ALG技术”系列文章也已经更新到了第四期,之前推送的《防火墙ALG技术之安全策略》 《防火墙ALG技术之FTP协议穿墙术》 《防火墙ALG技术之TFTP协议穿墙术》 可点击链接进行阅读。本期介绍DNS协议穿越防火墙NAT,浅谈个人理解与认知。
从而达到压缩的目的。Accept-Encoding——浏览器发给服务器,声明浏览器(客户端)支持的编码类型。当服务端接收到请求,并且从header里拿到编码标识时,就可以选择其中一种方式来进行编码压缩,然后返给客户端。
前言因工作需要,需要调研WAF和IDS产品,我经过调研选择了Modsecurity作为Web端的防火墙防护软件和Suricata作为tcp和udp层的防护,并且通过logstash将结果输出到elasticsearch中进行分析。
在DHCP Client和DHCP Server之间建立一道防火墙,以抵御网络中针对DHCP的各种攻击。DHCP Client将无法获取正确的IP地址和相关信息,导致合法客户无法正常访问网络或信息安全受到严重威胁。将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其他接口设置为非信任接口。
Linux常用命令总结
2021-11-20 05:45:17
系统信息 关机网卡命令 文件目录 find命令 ps命令 防火墙命令 用户命令 其他命令 最近再使用Linux感觉Linux系统使用起来也挺顺手的不过就是命令掌握的并不是很牢固,今天整理一下Linux一些常用命令。
防火墙规则配置为:只有 tcp/udp 3389 端口可以进行通信时,可以利用 RDP 协议,建立 Socks 通道。应用场景较为极端。工具地址:https://github.com/nccgroup/SocksOverRDP 此工具在 RDP 协议的基础上实现了 Socks 代理功能。就像 SSH 的 -D 参数一样,在连接后,利用 RDP 协议实现代理功能。 该工具包含两个部分:
Cloudflare是一个应用广泛的web应用防火墙(WAF)的提供商。如果能在一秒内绕过所有防护措施,让WAF毫无用处,会怎么样呢?这篇文章会教你利用源服务器的IP地址绕过Cloudflare WAF。注意,以下方法可能适用于绕过任何类型的WAF。
其目的是让任何有上机排查经验和无上机排查经验的人都可以进行上机排查安全事件。在应对安全事件上机排查时,对于没有此方面经验但是有研判能力的安全专家来讲,经常苦于需要参考各种安全手册进行痕迹采集、整理、研判,此时我们可以使用FireKylin-Agent进行一键痕迹收集,降低排查安全专家收集工作的难度。
GetInfo介绍快速收集 Windows 相关信息,为应急响应争取更多的时间Windows Emergency Response Windows information collection功能列表??近三天内修改的文件使用说明文件输出为Output文件夹声明本项目仅供学习使用,勿做它用注意事项:该工具需要电脑安装?.net framework 3.5可能存在的问题中文字符显示乱码 解决办法:以GB2312编码打开即可下载地址GitHub:GetInfo.exe云中转网盘:https://www.yunzhongzhuan.com/#sharefile=NeJlMEZ8_47044?
VSole
网络安全专家