引言
在当今数字化时代,网络安全问题日益凸显,其中Web应用的安全更是备受关注。Struts 2作为一款流行的Java Web框架,其OGNL注入漏洞一直是黑客攻击的热点。为了帮助企业有效防范这一风险,本文将为您详细介绍如何编写一款高效检测Struts 2 OGNL注入漏洞的插件,深入的了解核心技能,为企业的网络安全保驾护航。
漏洞扫描器原理
漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期进行更新。
在漏洞扫描的时候,就是利用特征库里的脚本与目标系统的反馈信息进行匹配,如果能够匹配上,就说明存在某一个漏洞。
漏洞扫描器在识别漏洞的过程中,会向目标发送大量的数据包,有时候会导致目标系统拒绝服务或被扫描数据包阻塞,扫描行为也会被对方的入侵检测设备发现。
漏洞扫描器扫描出的结果通常会有很多误报(报告发现的漏洞实际并不存在)或者漏报(未报告发现漏洞但漏洞实际存在)。
因此,需要对扫描结果进行人工分析,确定哪些漏是实际存在的,这个过程就叫做漏洞验证,这是渗透测试过程中不可缺少的一步,只有验证漏洞存在的真实性,才能对漏洞进行深度利用。
博智Web漏洞扫描子系统介绍
博智Web漏洞扫描子系统是一款功能强大、模块化设计的网络爬虫和漏洞扫描工具,专门用于自动检测Web应用程序中的安全漏洞,集成在博智工控漏洞扫描系统中。该系统旨在帮助网站所有者、管理员以及安全专家快速识别潜在的安全风险,从而采取必要的措施来保护Web应用程序的安全性。
主要特点
全面的漏洞检测:博智Web漏洞扫描子系统集成了大量的常见Web漏洞扫描规则和插件,能够全面检测Web应用程序中的SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)、文件包含、命令注入等多种安全漏洞。
高度模块化:系统采用模块化的设计思路,使得用户可以根据实际需求选择并启用相应的扫描模块。同时,用户也可以自定义开发新的扫描模块,以满足特定的安全检测需求。
自动化扫描:系统支持自动化的Web应用程序漏洞扫描,用户只需配置好扫描参数和范围,系统即可自动执行扫描任务,并生成详细的扫描报告。
智能爬虫技术:系统内置智能爬虫引擎,能够自动发现并遍历Web应用程序的页面和链接,确保扫描的全面性和准确性。
灵活的报告输出:系统支持多种报告输出格式,如HTML、PDF、Excel等,用户可以根据需求选择适合的报告输出方式。同时,系统还支持将扫描结果导入到第三方安全管理平台,方便进行统一管理和分析。
易用性:博智Web漏洞扫描子系统拥有直观的用户界面和简洁的操作流程,用户无需具备专业的安全知识即可轻松上手使用。
可扩展性:系统支持自定义插件的开发和集成,用户可以根据实际需求开发新的扫描插件,以满足特定的安全检测需求。同时,系统还支持与其他安全工具的集成,形成更强大的安全检测体系。
应用场景
博智Web漏洞扫描子系统适用于各类Web应用程序的安全检测,包括但不限于:
(1)电子商务网站
(2)政府机关网站
(3)企业门户网站
(4)金融行业网站
(5)教育行业网站
为Apache Struts 2漏洞编写检测插件
搭建靶标环境
docker pull vulhub/struts2:2.5.25
docker run --name=struts2 -itd -p 8080:8080 vulhub/struts2:2.5.25
漏洞介绍:Apache Struts2使用了表达语言和对象图导航语言语法,这两种语言可能存注入漏洞的情况。
表达语言注入:表达语言使用了${EL}语法,所以很容易找到表达式语言的缺陷。例如,一个简单的数学运算,例如${9999+1}将被评估10000,可能在响应中可见。使用表达式语言的默认范围来检索实际信息,例如${applicationScope}或${requestScope}。深入利用这个特性就会产生远程代码执行,表达式语言注入可以允许会话对象修改和提升用户权限的管理员级别:
${pageContext.request.getSession().setAttribute("admin",true)}。
对象图导航语言注入:对象图导航语言(OGNL)是一种用于Java的开源表达式语言。OGNL的主要功能是获取和设置对象属性:“在Java中可以做的大部分工作都可以在OGNL中实现。”OGNL是一种功能强大的语言,但在Apache Struts中将用户提供的输入视为OGNL会影响安全性。
3.1 插件编写流程
Apache Struts 2 OGNL 远程代码执行漏洞(CVE-2019-0230)是近年来发现的一个远程代码执行漏洞,使用WEB漏洞子系统原生内置漏洞检测规则无法扫出该漏洞,需要为该漏洞编写对应的插件。新的插件需要注意三点:
(1)继承Check::Base类。
(2)根据漏洞POC,进行payloads的组装。
(3)实现run方法,用于具体的漏洞规则匹配。
3.2 插件漏洞扫描效果
(1)更新Apache Struts 2 OGNL漏洞检测插件到指定目录。
(2)新建一web扫描任务,填写的URL地址为Apache Struts 2 OGNL 远程代码执行漏洞靶标地址。
(3)检测插件只选择Struts,以提高扫描效率。
(4)查看扫描结果
(5)漏洞验证
通过回放playload,检测响应信息中是否存在${EL}语法漏洞,如果存在${EL}语法漏洞则表明漏洞验证成功。
总结
在设计Web漏洞扫描子系统时,我们必须面对一个不可忽视的现实:未来漏洞的不可预测性。随着技术的快速发展和攻击手段的不断演变,新的安全威胁如影随形。因此,系统采用了灵活的架构设计,以确保能够迅速地整合新的POC漏洞,并对潜在的新漏洞进行有效的检测和验证。
在设计Web漏洞扫描子系统时,我们必须面对一个不可忽视的现实:未来漏洞的不可预测性。随着技术的快速发展和攻击手段的不断演变,新的安全威胁如影随形。因此,系统采用了灵活的架构设计,以确保能够迅速地整合新的POC漏洞,并对潜在的新漏洞进行有效的检测和验证。
在这个信息化、网络化的时代,网络安全已经成为企业发展的关键因素。漏洞扫描系统的设计,正是为了帮助企业更好地应对网络安全挑战,确保企业的信息安全和业务连续性。我们相信,通过不断的技术创新和优化,博智工控漏洞扫描系统将筑就企业网络安全的坚固防线,守护企业稳健前行。