Xcheck 工具
工具介绍
Xcheck 是一款静态应用安全测试工具,旨在及时发现业务代码中的安全风险,尤其是由不受信输入所触发的安全漏洞。检测范围覆盖主流 Web 安全漏洞,具备速度快、误报低和准确率高等优点。
使用方式
无需额外设置,直接在扫描方案中开启 Xcheck 规则包即可。
补充说明:
1. Xcheck 的扫描对象是业务性的代码,而非工具或者框架。Xcheck 的实现基于标准的语法和语义,专注于业务逻辑,聚焦于上层业务逻辑的实现,并且在实现过程中引入了一些处理技巧,从而在保证低误报和漏报的同时获取了更高的执行效率。
2. Xcheck 基于污染传递模型实现,因此暂不支持发现不符合该模型的漏洞,例如:数组越界,内存错误,空指针,身份>认证,越权,CSRF 等。
反序列化漏洞
漏洞描述:
反序列化就是将字符串转换成对象。如果程序对用户的输入做了反序列化处理,那么攻击者可以通过输入精心设计的序列化对象,让反序列化产生的对象达到绕过身份认证,执行命令、文件操作、执行数据库等操作目的。点击阅读更多>>
修复建议:
不要反序列化不可信的数据。
给反序列数据加密签名,并确保解密在反序列之前。
给反序列化接口添加认证授权。
反序列化服务只允许监听在本地或者开启相应防火墙。
升级第三方库。
路径穿越黑洞
漏洞描述:
在操作系统中 ..
代表的是向上级目录跳转,如果程序在处理到诸如 ../etc/passwd
的文件名时没有进行防护,则会跳转出当前工作目录,跳转到到其他目录中,其后果可能是返回敏感文件或者写入或覆盖某些文件到系统。点击阅读更多>>
修复建议:
数据过滤,对网站用户提交过来的文件名进行硬编码或者统一编码,对文件后缀进行白名单控制,拒绝包含恶意符号或空字节文件。
任意命令执行漏洞
漏洞描述:
如果程序根据用户输入的参数动态生成系统命令并执行,黑客可通过传入恶意参数值注入自己定义的命令,从而控制服务器。点击阅读更多>>
修复建议:
尽量少用执行命令的函数。
净化用户可控数据, 过滤或者转义。
任意 URL 跳转漏洞
漏洞描述:
某些业务场景(例如登录跳转、导航前进后退)会接受不信任的用户输入,并返回一个 302 响应或者 URL 重定向。因此攻击者能够借此机会操控输入的 URL,欺骗用户跳转到不安全的页面进行钓鱼攻击。阅读博客了解更多>>
修复建议:
限制跳转的目标 URL, 实施白名单策略。
SQL 注入漏洞
漏洞描述:
若程序依据用户输入参数动态生成 SQL 语句并在数据库中执行,那么攻击者可以拼接 SQL 语句,使数据库执行恶意指令从而实现数据窃取或者入侵破坏。
修复建议:
SQL 查询语句使用标准化的数据库 API 接口。通过设定语句的参数,可以过滤非法字符, 防止用户输入恶意的字符并传入到数据库中执行 SQL 语句。
对用户提交的的参数安全过滤,像一些特殊的字符 「,()*&%#」 进行字符转义操作,以及编码的安全转换。
网站的代码层编码尽量统一,建议使用 utf8 编码, 如果代码里的编码都不一样,会导致一些过滤被直接绕过。
服务端请求伪造漏洞
漏洞描述:
在服务器访问网页或者 HTTP 服务的场景,如果接收到的目标 URL 是解析到内网的,则服务器会尝试访问内网。此时若黑客提交内网 URL,则服务器会帮助黑客对内网进行攻击与扫描。点击阅读更多>>
修复建议:
限制请求的端口为 http 常用的端口, 比如: 80,443,8080,8090。
黑名单内网 ip, 避免应用被用来获取获取内网数据, 攻击内网。
禁用不需要的协议, 仅仅允许 http 和 https 请求. 可以防止类似于 file:///, gopher://, ftp:// 协议等引起的问题。
XPath 注入漏洞
漏洞描述:
Path 是一门在 XML 文档中查找的语言,用户在 web 应用程序中输入用户名和密码进行登录验证时,程序会根据用户信息执行授权操作。攻击者可以借此机会注入恶意 Xpath 参数,绕过身份验证并得到访问权。通过在 URL 注入恶意 XPath 代码,获得 XML 数据文档,相当于获得了整个数据库访问权限,攻击者可以任意读取信息导致信息泄露。点击阅读更多>>
修复建议:
过滤或转义作为查询参数的用户输入。
预防跨站脚本攻击漏洞
漏洞描述:
如果 web 页面在动态展示数据时使用了用户的输入内容,且没有对输入的内容过滤或者进行转义,此时攻击者可以将恶意代码上传至该页面中,当其他用户浏览时恶意代码会被执行。点击阅读更多>>
修复建议:
接收用户上传的内容时进行数据转义或编码。
XML 外部实体注入漏洞
漏洞描述:
XXE(XML External Entity injection)的全称是 XML 外部实体注入漏洞。DTD 实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明和外部引用。XXE 攻击就是外部引用 DTD 实体,即先写一个外部实体声明,然后引用服务器上面的资源,从而达到窃取文件的目的。它将会执行系统命令,扫描内部端口引发安全风险。点击阅读更多>>
修复建议:
使用开发语言提供的禁用外部实体的方法
过滤用户提交的 XML 数据
服务器模板注入漏洞
漏洞描述:
用户按照后端设计的模板进行参数输入,若没有对用户输入进行过滤,则其输入的内容会作为模板的一部分进行渲染,其危害可能是敏感信息泄露,如 RCE、GetShell 等。点击阅读更多>>
修复建议:
使用规范的模版渲染方式
过滤用户提交的 XML 数据
回车换行注入漏洞
漏洞描述:
在 HTTP 协议中,HTTP Header 与 HTTP Body 是用两个 CRLF 分隔的。浏览器就是根据这两个 CRLF 来取出 HTTP 内容并进行渲染。所以,一旦攻击者能够控制 HTTP 消息头中的字符并替换为一些恶意的内容,这样就能注入一些会话 Cookie 或者 HTML 代码。点击阅读更多>>
修复建议:
过滤 \n
之类的换行符,避免输入的数据污染到 HTTP Header。
正则表达式 DoS 漏洞
漏洞描述:
开发人员应使用正则表达式来对用户输入的数据进行有效性校验。当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串大量消耗服务器的系统资源,造成服务被迫中断或停止。点击阅读更多>>
修复建议:
降低正则表达式的复杂度, 尽量少用分组。
严格限制用户输入的字符串长度(特定情况下)。
使用单元测试、fuzzing 测试保证安全。
添加服务器性能监控系统, 如: zabbix。
文件包含漏洞
漏洞描述:
后端通过语言(比如 PHP)提供的特性包含任意文件时,若对要包含的文件来源过滤不严,则有可能会包含一个恶意文件,危害程度视恶意文件具体的内容。点击阅读 《PHP 文件包含漏洞详解》、《文件包含漏洞学习总结》。
修复建议:
PHP 中使用
open_basedir
配置,在指定的区域访问限制。过滤.(点)/(反斜杠)\(反斜杠)。
禁止服务器远程文件包含。
变量覆盖漏洞
漏洞描述:
常发生在 PHP 语言中。用户的输入作为变量覆盖函数入参,可能会存在一些恶意利用漏洞。点击阅读更多>>
phpinfo 信息泄露
漏洞描述:
phpinfo 函数信息泄露一般在测试搭建的 PHP 环境中。若没有及时删除提供环境测试的文件,用户有可能会访问到测试页面。借此机会,这个函数可以返回 PHP 的所有信息包括服务器信息、操作系统版本和 PHP 版本信息、路径以及环境变量配置等关键信息。攻击者可以利用这些信息造成文件泄露、获取数据库登录用户和密码,连接数据库执行恶意操作、或通过跨站脚本攻击获得服务器权限。点击阅读更多>>
更多描述:
打开 php.ini
,找到 disable_functions
,没有则新增,修改成以下内容:
disable_functions = phpinfo
disable_functions 是禁用 php 函数,多个函数英文逗号分隔禁用:
disable_functions = 函数 1,函数 2,函数 3,phpinfo
LDAP 漏洞
漏洞描述:
LDAP(Lightweight Directory Access Protocol):即轻量级目录访问协议。这是一种运行于 TCP/IP 之上的在线目录访问协议,主要用于目录中资源的搜索和查询。使用最广泛的 LDAP 服务如微软的 ADAM(Active Directory Application Mode)和 OpenLDAP。LDAP 注入是利用用户引入的参数生成恶意 LDAP 查询,通过构造 LDAP 过滤器来绕过访问控制、用户权限。在维持正常过滤器的情况下构造出 AND、OR 操作注入来获得敏感信息。点击阅读修复建议>>
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。