1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  8. 文档管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

Xcheck 工具

规则工具介绍

Xcheck 是一款静态应用安全测试工具,旨在及时发现业务代码中的安全风险,尤其是由不受信输入所触发的安全漏洞。检测范围覆盖主流 Web 安全漏洞,具备速度快、误报低和准确率高等优点。

使用方式

无需额外设置,直接在扫描方案中开启 Xcheck 规则包即可。

补充说明:
1. Xcheck 的扫描对象是业务性的代码,而非工具或者框架。Xcheck 的实现基于标准的语法和语义,专注于业务逻辑,聚焦于上层业务逻辑的实现,并且在实现过程中引入了一些处理技巧,从而在保证低误报和漏报的同时获取了更高的执行效率。
2. Xcheck 基于污染传递模型实现,因此暂不支持发现不符合该模型的漏洞,例如:数组越界,内存错误,空指针,身份>认证,越权,CSRF 等。

反序列化漏洞

漏洞描述:

反序列化就是将字符串转换成对象。如果程序对用户的输入做了反序列化处理,那么攻击者可以通过输入精心设计的序列化对象,让反序列化产生的对象达到绕过身份认证,执行命令、文件操作、执行数据库等操作目的。点击阅读更多>>

修复建议:

  1. 不要反序列化不可信的数据。

  2. 给反序列数据加密签名,并确保解密在反序列之前。

  3. 给反序列化接口添加认证授权。

  4. 反序列化服务只允许监听在本地或者开启相应防火墙。

  5. 升级第三方库。


路径穿越黑洞

漏洞描述:

在操作系统中 .. 代表的是向上级目录跳转,如果程序在处理到诸如 ../etc/passwd 的文件名时没有进行防护,则会跳转出当前工作目录,跳转到到其他目录中,其后果可能是返回敏感文件或者写入或覆盖某些文件到系统。点击阅读更多>>

修复建议:

数据过滤,对网站用户提交过来的文件名进行硬编码或者统一编码,对文件后缀进行白名单控制,拒绝包含恶意符号或空字节文件。


任意命令执行漏洞

漏洞描述:

如果程序根据用户输入的参数动态生成系统命令并执行,黑客可通过传入恶意参数值注入自己定义的命令,从而控制服务器。点击阅读更多>>

修复建议:

  1. 尽量少用执行命令的函数。

  2. 净化用户可控数据, 过滤或者转义。


任意 URL 跳转漏洞

漏洞描述:

某些业务场景(例如登录跳转、导航前进后退)会接受不信任的用户输入,并返回一个 302 响应或者 URL 重定向。因此攻击者能够借此机会操控输入的 URL,欺骗用户跳转到不安全的页面进行钓鱼攻击。阅读博客了解更多>>

修复建议:

限制跳转的目标 URL, 实施白名单策略。


SQL 注入漏洞

漏洞描述:

若程序依据用户输入参数动态生成 SQL 语句并在数据库中执行,那么攻击者可以拼接 SQL 语句,使数据库执行恶意指令从而实现数据窃取或者入侵破坏。

修复建议:

  1. SQL 查询语句使用标准化的数据库 API 接口。通过设定语句的参数,可以过滤非法字符, 防止用户输入恶意的字符并传入到数据库中执行 SQL 语句。

  2. 对用户提交的的参数安全过滤,像一些特殊的字符 「,()*&%#」 进行字符转义操作,以及编码的安全转换。

  3. 网站的代码层编码尽量统一,建议使用 utf8 编码, 如果代码里的编码都不一样,会导致一些过滤被直接绕过。


服务端请求伪造漏洞

漏洞描述:

在服务器访问网页或者 HTTP 服务的场景,如果接收到的目标 URL 是解析到内网的,则服务器会尝试访问内网。此时若黑客提交内网 URL,则服务器会帮助黑客对内网进行攻击与扫描。点击阅读更多>>

修复建议:

  1. 限制请求的端口为 http 常用的端口, 比如: 80,443,8080,8090。

  2. 黑名单内网 ip, 避免应用被用来获取获取内网数据, 攻击内网。

  3. 禁用不需要的协议, 仅仅允许 http 和 https 请求. 可以防止类似于 file:///, gopher://, ftp:// 协议等引起的问题。


XPath 注入漏洞

漏洞描述:

Path 是一门在 XML 文档中查找的语言,用户在 web 应用程序中输入用户名和密码进行登录验证时,程序会根据用户信息执行授权操作。攻击者可以借此机会注入恶意 Xpath 参数,绕过身份验证并得到访问权。通过在 URL 注入恶意 XPath 代码,获得 XML 数据文档,相当于获得了整个数据库访问权限,攻击者可以任意读取信息导致信息泄露。点击阅读更多>>

修复建议:

过滤或转义作为查询参数的用户输入。


预防跨站脚本攻击漏洞

漏洞描述:

如果 web 页面在动态展示数据时使用了用户的输入内容,且没有对输入的内容过滤或者进行转义,此时攻击者可以将恶意代码上传至该页面中,当其他用户浏览时恶意代码会被执行。点击阅读更多>>

修复建议:

接收用户上传的内容时进行数据转义或编码。


XML 外部实体注入漏洞

漏洞描述:

XXE(XML External Entity injection)的全称是 XML 外部实体注入漏洞。DTD 实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明和外部引用。XXE 攻击就是外部引用 DTD 实体,即先写一个外部实体声明,然后引用服务器上面的资源,从而达到窃取文件的目的。它将会执行系统命令,扫描内部端口引发安全风险。点击阅读更多>>

修复建议:

  1. 使用开发语言提供的禁用外部实体的方法

  2. 过滤用户提交的 XML 数据


服务器模板注入漏洞

漏洞描述:

用户按照后端设计的模板进行参数输入,若没有对用户输入进行过滤,则其输入的内容会作为模板的一部分进行渲染,其危害可能是敏感信息泄露,如 RCE、GetShell 等。点击阅读更多>>

修复建议:

  1. 使用规范的模版渲染方式

  2. 过滤用户提交的 XML 数据


回车换行注入漏洞

漏洞描述:

在 HTTP 协议中,HTTP Header 与 HTTP Body 是用两个 CRLF 分隔的。浏览器就是根据这两个 CRLF 来取出 HTTP 内容并进行渲染。所以,一旦攻击者能够控制 HTTP 消息头中的字符并替换为一些恶意的内容,这样就能注入一些会话 Cookie 或者 HTML 代码。点击阅读更多>>

修复建议:

过滤 \n 之类的换行符,避免输入的数据污染到 HTTP Header。


正则表达式 DoS 漏洞

漏洞描述:

开发人员应使用正则表达式来对用户输入的数据进行有效性校验。当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串大量消耗服务器的系统资源,造成服务被迫中断或停止。点击阅读更多>>

修复建议:

  1. 降低正则表达式的复杂度, 尽量少用分组。

  2. 严格限制用户输入的字符串长度(特定情况下)。

  3. 使用单元测试、fuzzing 测试保证安全。

  4. 添加服务器性能监控系统, 如: zabbix。


文件包含漏洞

漏洞描述:

后端通过语言(比如 PHP)提供的特性包含任意文件时,若对要包含的文件来源过滤不严,则有可能会包含一个恶意文件,危害程度视恶意文件具体的内容。点击阅读 《PHP 文件包含漏洞详解》《文件包含漏洞学习总结》

修复建议:

  1. PHP 中使用 open_basedir 配置,在指定的区域访问限制。

  2. 过滤.(点)/(反斜杠)\(反斜杠)。

  3. 禁止服务器远程文件包含。


变量覆盖漏洞

漏洞描述:

常发生在 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 操作注入来获得敏感信息。点击阅读修复建议>>

上一篇扫描方案
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?