目录
这里整理了以前技术支撑中发现的一些问题,愿大家在规则开发中,避开这些误区。
提供的原始的规则与优化后的规则,仅供说明问题,不代表规则严谨性!!!
CVE-2001-1032 PHP-Nuke文件泄漏和上传漏洞
PHP-Nuke是一个网站创建和管理工具,它可以使用很多数据库软件作为后端,比如MySQL、PostgreSQL、mSQL、Interbase、Sybase等。PHP-Nuke5.2版本和早期版本,除5.0RC1版本中的admin.php中存在一个安全问题,该漏洞源于不检查上传操作的登录凭证。可能导致远程攻击者获取系统上的敏感信息或者上载程序。
误报分析:忽略了对目录遍历的检测
源数据包内容:
误报数据包内容:
出现误报的原因是规则只检测了url地址:/admin.php
和file_name=
,可以通过uricontent:"/admin.php?file_name=../"
绕开误报。
CVE-2006-2926 Qbik WinGate HTTP请求 缓冲区溢出漏洞
漏洞描述:WinGate是一款Internet共享/代理软件,可让局域网络同时共享一个Internet账号。 Wingate的HTTP代理在处理特制的HTTP请求时存在缓冲区溢出漏洞。导致拒绝服务或执行任意代码。
误报分析:没有匹配检测垃圾字符
源数据包:
误报数据包:
规则是通过限制POST
和HTTP/1.1
的偏移量来设计规则的,过于笼统,可以通过pcre:"/POST\shttp\x3a\x2f\x2f\w{512}/i"
的形式,适当优化规则,但是有漏报的可能。
CVE-2018-1270 Pivotal Software Spring Framework 代码注入漏洞
漏洞描述:Vmware Spring Framework是美国威睿(Vmware)公司的一套开源的Java、JavaEE应用程序框架。该框架可帮助开发人员构建高质量的应用。Spring Framework 5.0.5之前的5.0版本、4.3.15之前的4.3版本和不再支持的老版本中存在代码注入漏洞。该漏洞是源于网络系统或产品中缺少身份验证、访问控制、权限管理等安全措施。
误报分析:规则没有按照漏洞点匹配(诸如java.lang.Runtime、exec特征)
源数据包:
误报数据包:
规则使用pcre:"/\[[\s\w\W]+?selector[\s\w\W]+?T\([\s\w\W]+?\]/iP"
来检测请求体,过于笼统,可以使用content
检测java.lang.Runtime
、exec
,并搭配正则去检测攻击。
CVE-2018-3903 Samsung SmartThings Hub video-core HTTP服务器缓冲区错误漏洞
漏洞描述:Samsung SmartThings Hub是韩国三星(Samsung)公司的一款智能家居管理设备。video-core HTTP server是其中的一个HTTP服务器。使用0.20.17版本固件的Samsung SmartThings Hub中的video-core HTTP服务器的摄像头‘更新’功能存在缓冲区溢出漏洞,该漏洞源于video-core进程错误地提取了用户所控制JSON载荷中的字段。攻击者可通过发送HTTP请求利用该漏洞执行任意代码。
误报分析:没有匹配填充字符
源数据包:
误报数据包:
规则只是检测了{"
和url":"
,并使用isdataat
用于确定从指定的位置开始负载中有多少字节。设计的有点宽泛,对填充字符的检测,依然是一个尴尬的问题,检测的类型一多,就容易误报,检测的类型一少,就容易漏报。
HTTP Generic SQL注入探测攻击
漏洞描述:HTTP Generic SQL probing注入攻击。
SQL注入通用探测的手法,在单个HTTP报文中加入多重报文。导致部分设备引擎解析异常,从而产生绕过的效果。
误报原因:没有限制SQL注入字符的边界
源数据包:
误报数据包:
非常经典的,对sql注入关键字控制不严导致误报。