.NET 某和OA办公系统全局绕过漏洞分析
字数 1597 2025-08-03 16:44:01
.NET 某和OA办公系统全局绕过漏洞分析教学文档
0x01 漏洞背景
某和OA协同办公管理系统C6版本存在一个全局绕过漏洞,该漏洞源于系统配置与权限验证模块的配合缺陷。该系统采用.NET WebForms框架开发,具有以下特点:
- 支持20多个应用模块,160多个应用子模块
- URL设计特点:.aspx后加"/"再传递参数(如
/RssModulesHttp.aspx/?interfaceID=1) - 存在多个已公开漏洞,均与URL处理方式相关
0x02 技术原理分析
ExtensionlessUrlHandler组件
.NET框架4.0引入的ExtensionlessUrlHandler组件是关键因素:
-
背景:
- 早期.NET WebForms采用经典ASP风格URL(如
UserName.aspx) - 为支持无扩展名URL(如
/about替代/about.aspx)而开发
- 早期.NET WebForms采用经典ASP风格URL(如
-
配置方式:
<system.webServer> <handlers> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer>path="*.":匹配所有无扩展名URLverb="*":处理所有HTTP方法- 要求IIS7+和集成模式
-
功能:
- 使WebForms支持MVC风格路由(如
/Mall/Product/GetById/10)
- 使WebForms支持MVC风格路由(如
JHSoft.Log.HttpModule权限验证模块
系统配置了自定义HTTP模块进行安全验证:
<modules runAllManagedModulesForAllRequests="true">
<add name="JHSoft.Log" type="JHSoft.Log.LogHttpModule, JHSoft.Log">
</add>
</modules>
模块功能分析:
-
安全验证逻辑:
- 检查请求路径是否以
.aspx结尾(text.EndsWith(".aspx")) - 对
.aspx请求进行SQL注入检查(SqlFilter方法) - 验证会话有效性(
context.Session["UserCode"]) - 排除特定页面(如
/jhsoft.web.login/password.aspx)
- 检查请求路径是否以
-
设计缺陷:
- 仅验证
.aspx扩展名,忽略.ashx和.asmx - 使用
EndsWith判断导致绕过可能
- 仅验证
0x03 漏洞利用方法
绕过权限验证
利用ExtensionlessUrlHandler和验证模块的配合缺陷:
-
构造特殊URL:
/c6/JHsoft.web.Workflat/SetImageModule.aspx/id/121212/c6/JHsoft.web.Workflat/SetImageModule.aspx/?id=2222
-
原理:
- 验证模块看到
.aspx/不认为是以.aspx结尾 - ExtensionlessUrlHandler仍能正确路由请求
- 验证模块看到
SQL注入漏洞示例
以RssModulesHttp.aspx为例:
-
漏洞位置:
// Page_Load方法 string interfaceID = base.Request.QueryString["interfaceID"]; this.GetRssInfo(interfaceID); // GetRssInfo方法 string sql = "SELECT * FROM WFRssModule WHERE InterfaceID=" + interfaceID; -
利用方式:
- 直接拼接SQL语句导致注入
- 可构造如
/RssModulesHttp.aspx/?interfaceID=1 AND 1=CONVERT(int,(SELECT table_name FROM information_schema.tables))的payload
0x04 漏洞修复建议
-
权限验证模块修复:
- 使用更全面的URL路径检查(如
Contains替代EndsWith) - 对所有动态资源进行验证(包括
.ashx和.asmx)
- 使用更全面的URL路径检查(如
-
输入验证加强:
- 对所有输入参数进行严格过滤
- 使用参数化查询防御SQL注入
-
配置优化:
- 评估ExtensionlessUrlHandler的必要性
- 限制特殊URL格式的使用
0x05 总结
该漏洞是典型的安全设计缺陷组合导致的:
-
根本原因:
- ExtensionlessUrlHandler支持的特殊URL格式
- 验证模块不严谨的路径检查逻辑
-
影响:
- 导致系统全局权限验证被绕过
- 结合其他漏洞(如SQL注入)可造成更严重影响
-
启示:
- 安全验证逻辑需要全面考虑各种URL格式
- 组件间的配合可能产生非预期行为
- 输入验证必须作为独立防线,不能依赖单一保护机制