banner
B1ueD0g

BlueDog's Home

上班使我怨气比鬼重!
x
telegram
email

漏洞&修复意见规范描述


  • 最后修改时间 2023-07-20 修改人:BlueDog🤡
  • 将不定期刷新该文档

风险评级标准#

严重不安全系统

  • 存在 1 个及以上严重漏洞,或 3 个以上高危漏洞的系统

高危不安全系统

  • 存在 1 个及以上高危漏洞,或 5 个以上中危漏洞的系统

中危不安全系统

  • 存在 1 个及以上中危漏洞,或 5 个以上低危漏洞的系统

低危不安全系统

  • 无中高危,存在 5 个以上低危漏洞的系统

安全系统

  • 无中高危,存在 5 个以下低危漏洞的系统

漏洞评级依据#

严重漏洞

  1. 直接获取业务服务器权限的漏洞以及获取重要数据的漏洞,包括但不限于命令执行、上传 webshell、代码执行、SQL 注入获得大量重要数据
  2. 严重影响系统业务和数据安全的逻辑漏洞,包括但不限于任意帐号密码重置或更改漏洞、任意账号资金消费、系统可轻易被薅羊毛、严重越权访问漏洞、未授权访问后台管理系统、严重级别的敏感信息泄露
  3. 直接导致核心业务拒绝服务的漏洞,包括通过该远程拒绝服务漏洞直接导致线上核心应用、系统、服务器无法继续提供服务的漏洞

高危漏洞

  1. 敏感信息泄漏漏洞,包括但不限于源代码压缩包泄漏、SQL 注入、越权或者直接获取大量用户、员工信息
  2. 账号暴力破解漏洞
  3. 可远程获取客户端和服务端权限的漏洞。包括但不限于 SSRF、远程缓冲区溢出、存储型 XSS、以及可获取 cookie 等敏感信息的 XSS

中危漏洞

  1. 普通信息泄露,包括但不限于未涉及敏感数据的 SQL 注入、影响数据量有限或者敏感程度有限的越权、源代码或系统日志等信息泄露
  2. 需受害者交互或其他前置条件才能获取用户身份信息的漏洞。包括但不限于包含用户、网站敏感数据的 JSON Hijacking、重要操作(如支付类操作、发布信息或修改个人账号敏感信息类操作)的 CSRF、反射型 XSS
  3. 普通的逻辑缺陷漏洞和越权漏洞

低危漏洞

  1. 轻微信息泄露,包括但不限于路径、SVN 信息泄露、PHPinfo、异常和含有少量敏感字段的调试信息、日志打印及配置等泄露
  2. 应用场景有限的漏洞与难以利用的安全漏洞。包括但不仅限于有限制的反射型或 self 型 XSS、短信 / 邮件轰炸、URL 跳转、敏感操作的 CSRF

安全控制建议#

认证

  • 对于存在弱口令的系统,需在加强使用者安全意识的前提下,督促其修改密码,或者使用策略来强制限制密码长度和复杂性。
  • 对于存在弱口令或是空口令的服务,在一些关键服务上,应加强口令强度,同时需使用加密传输方式,对于一些可关闭的服务来说,建议关闭该服务以达到安全目的,或者限制为指定范围内 IP 访问。
  • 对于出现验证码功能的系统或服务,不能只在前端进行防护,而是要在后台进行二次检测,做到前后端同时加固。
  • 不同系统、主机应根据密码规则采用具有强复杂性的不同口令。
  • 对内外网中的各种服务的弱口令现象进行排查。

应用

主机

APP

代码

  • 严格区分代码与数据,在任何存在用户输入或交互的位置采取限制或过滤手段。
  • 进行文件上传时,在服务端对文件属性进行合法性校验,白名单形式检查文档类型 (如文件的后缓名、文件头信息校验等) 和大小 (图片校验长、宽和像素等)。
  • 开发时,优先使用相应框架库的最新稳定版本,及时关注相应的官方库发布的安全补丁。
  • 根据企业软件安全管理的组织架构,针对企业安全相关人员的专业水平,进行组织,分定角色等,形成安全团队建立文档。

认证#

弱口令 / 空口令#

web 后台系统弱口令

漏洞评级建议: 高危

漏洞类型: 认证缺陷

  • 详情

    由于网站用户帐号存在弱口令,导致攻击者通过弱口令可轻松登录到网站中,从而进行下一步的攻击,例如上传 webshell,获取敏感数据,另外攻击者利用弱口令登录网站管理后台,可执行任意管理员的操作。

  • 造成的危害

    攻击者利用此漏洞可直接进入应用系统或者管理系统,从而进行系统、网页、数据的篡改与删除,非法获取系统、用户的数据,甚至可能导致服务器沦陷。

  • 修复建议

    • 用户层面

      1. 不要使用常见的弱口令作为密码。
      2. 不要多个系统或者社交账号使用同一套密码。
      3. 定期修改密码。
      4. 建议使用包含随机值的或者随机生成的字符串作为系统密码。
    • 系统层面

      1. 增加人机验证机制,限制 ip 访问次数。
      2. 服务端对登录处增加图形验证码并保证使用一次即销毁。
      3. 强制用户首次登录时修改默认口令,或是使用用户自定义初始密码的策略。
      4. 服务端对登录接口进行限制,单个 IP 单位时间内请求超过阈值,封禁 30 分钟。
      5. 服务端对登录接口进行限制,单个用户密码单位时间内错误次数超过阈值,封禁 20 分钟。
      6. 修改密码、添加账号等涉及密码策略处强制用户使用强密码策略(大小写字母 + 数字 + 特殊字符 + 8 位以上)
      7. 完善密码策略,信息安全最佳实践的密码策略为 8 位(包括)以上字符,包含数字、大小写字母、特殊字符中的至少 3 种。

ftp 弱口令

漏洞评级建议: 高危,若无实际利用点建议降为中危

漏洞类型: 认证缺陷

  • 详情

    渗透测试过程中,发现远程 FTP Server 允许以弱口令组合登录。

  • 造成的危害

    这可能允许攻击者上传恶意文件或者下载敏感文件。

  • 修复建议

    1. 不要使用常见的弱口令作为密码。
    2. 定期修改密码。
    3. 及时 FTP 服务更新到最新版本。
    4. 对采用白名单的方式,仅允许授权主机 IP 访问该端口,避免漏洞被攻击者恶意利用。

ftp 匿名登录

漏洞评级建议: 高危,若无实际利用点建议降为中危

漏洞类型: 访问控制缺陷

  • 详情

    渗透测试过程中,发现目标主机开放的 ftp 服务允许匿名用户进行登录。

  • 造成的危害

    黑客利用弱口令或匿名登录漏洞直接登录 ftp 服务,上传恶意文件,从而获取系统权限,并可能造成数据泄露。

  • 修复建议

    1. 关闭匿名访问。
    2. 不要使用常见的弱口令作为密码。
    3. 定期修改密码。
    4. 及时 ftp 服务更新到最新版本。
    5. 采用白名单的方式,仅允许授权主机 IP 访问该端口,避免漏洞被攻击者恶意利用。

SSH 弱口令

漏洞评级建议: 高危

漏洞类型: 认证缺陷

  • 详情

    SSH 弱口令漏洞指 Linux 系统口令的长度太短或者复杂度不够,如仅包含数字,或仅包含字母等,弱口令容易被破解。攻击者可以利用弱口令直接登录 SSH 服务器,读取甚至修改网站代码,或者导致服务器沦陷。

  • 造成的危害

    攻击者经过爆破登录后可完全控制机器,即使低权限账号也可以通过提权进行进一步的破坏。

  • 修复建议

    1. 修改口令,增加口令复杂度,如包含大小写字母、数字和特殊字符等。
    2. 修改默认口令,避免默认口令被猜解。
    3. 指定健壮的口令策略,比如指定每隔 30 天修改一次密码,密码不得与历史密码相同。
    4. 采用白名单的方式,仅允许授权主机 IP 访问该端口,避免漏洞被攻击者恶意利用。

数据库弱口令

漏洞评级建议: 高危

漏洞类型: 认证缺陷

  • 详情

    数据库弱口令漏洞指数据库管理员账号对应密码的长度太短或者复杂度不够,仅包含数字,或仅包含字母等,弱口令容易被破解,一旦被攻击者获取,可用来直接登录数据库系统,读取甚至修改服务器上的文件,或者导致服务器沦陷。

  • 造成的危害

    攻击者可直接操作数据库,甚至可以进行提权拿到服务器权限。

  • 修复建议

    1. 修改口令,增加口令复杂度,如包含大小写字母、数字和特殊字符等。
    2. 修改默认口令,避免默认口令被猜解。
    3. 指定健壮的口令策略,比如指定每隔 30 天修改一次密码,密码不得与历史密码相同。
    4. 采用白名单的方式,仅允许授权主机 IP 访问该端口,避免漏洞被攻击者恶意利用。

xxx 弱口令 / 空口令

漏洞评级建议: 高危,若无实际利用点建议降为中危

漏洞类型: 认证缺陷

  • 详情

    渗透测试过程中,发现目标服务器存在 xxx 服务弱口令问题。

  • 造成的危害

    攻击者经过爆破登录后可完全控制机器,即使低权限账号也可以通过提权进行进一步的破坏。

    攻击者经过爆破登录后可完全控制目标数据库,进而可以对数据信息进行窃取、篡改等操作。

  • 修复建议

    1. 账号不要采用弱口令,建议密码强度 8 位以上,大小写数字混合。
    2. 只允许白名单 IP 进行登录。

xxx 后台无安全认证

漏洞评级建议: 高危,若无实际利用点建议降为中危

漏洞类型: 访问控制缺陷

  • 详情

    渗透测试过程中,发现目标 xxx 服务无任何安全认证。

  • 造成的危害

    攻击者利用此漏洞可直接进入应用系统或者管理系统,从而进行系统、网页、数据的篡改与删除,非法获取系统、用户的数据,甚至可能导致服务器沦陷。

  • 修复建议

    • 用户层面
      1. 不要使用常见的弱口令作为密码。
      2. 不要多个系统或者社交账号使用同一套密码。
      3. 定期修改密码。
      4. 建议使用包含随机值的或者随机生成的字符串作为系统密码。
    • 系统层面
      1. 用户首次登录后强制用户修改默认密码。
      2. 修改密码、添加账号等涉及密码策略处强制用户使用强密码策略(大小写字母 + 数字 + 特殊字符 + 8 位以上)。
      3. 服务端对登录处增加图形验证码并保证使用一次即销毁。
      4. 服务端对登录接口进行限制,单个 IP 单位时间内请求超过阈值,封禁 30 分钟。
      5. 服务端对登录接口进行限制,单个用户密码单位时间内错误次数超过阈值,封禁 20 分钟。

认证缺陷#

逻辑万能密钥

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    在后台登录页面,后端 SQL 语句过滤不严,攻击者可发送特定数据包直接登录到后台。

  • 造成的危害

    攻击者利用此漏洞可直接进入应用系统或者管理系统,从而进行系统、网页、数据的篡改与删除,非法获取系统、用户的数据,甚至可能导致服务器沦陷。

  • 修复建议

    1. 对用户提交的参数安全过滤,像一些特殊的字符 (,()*&……%# 等等) 进行字符转义操作,以及编码的安全转换。
    2. 对用户提交的参数进行加密处理后,再和数据库中存储的密文进行比对。

绕过前端限制登录

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    在登录抓包,修改返回值后将返回值改为 200. 即可绕过前端限制登录目标用户账户。

  • 造成的危害

    此时就不需要知道用户密码即可绕过身份认证限制登录用户账户。导致用户信息泄露,违法操作用户账户等严重危害。

  • 修复建议

    1. 将身份信息验证交给后端执行。
    2. 做好登录限制。
    3. 不要使用常见的弱口令作为密码。
    4. 不要多个系统或者社交账号使用同一套密码。

存在爆破风险

漏洞评级建议: 低危,若无实际利用点建议降为信息

漏洞类型: 暴力破解

  • 详情

    由于没有对登录页面进行相关的人机验证机制,如无验证码、有验证码但可重复利用以及无登录错误次数限制等,导致攻击者可通过暴力破解获取用户登录账号和密码。

    在后台登录页面,登录时错误提示信息明确,因此可以判断用户名是否存在,然后针对用户名进行暴力破解。

    在后台登录页面,登录时错误提示信息明确,且未对登录失败做访问控制,导致攻击者可以进行持续暴力破解登录口令。

  • 造成的危害

    攻击者可以针对某已知用户名进行慢速暴力破解,再进一步爆破密码,从而进入后台。

  • 修复建议

    1. 增加人机验证机制。
    2. 修改错误提示信息,加强逻辑认证。
    3. 对于管理类系统配置登录用户允许的 IP 范围。
    4. 如果某个 IP 登录次数超过设置的阈值,则锁定 IP。
    5. 验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。
    6. 如果用户登录次数超过设置的阈值,则锁定帐号 (有恶意登录锁定帐号的风险)。
    7. 针对登录次数进行限制,可使用登录远程 IP 或用户名两种方式进行锁定,登录错误次数 5 分钟之内超过 3 次锁定 1-3 小时。

验证码可绕过

漏洞评级建议: 低危,若无实际利用点建议降为信息

漏洞类型: 访问控制缺陷

  • 详情

    在后台登录页面,验证码只在前台 js 校验,攻击者再爆破账号时可以进行绕过。

    在后台登录页面,验证码只验证一次,攻击者只需截取第一个包即可进行绕过实施账号爆破。

  • 造成的危害

    由于可以绕过验证码,导致攻击者对后台的爆破难度大大降低。

  • 修复建议

    1. 验证码后端随机生成,且验证码内容不能出现在客户端的网页源代码以及 response 数据包中。
    2. 验证码要有背景干扰,干扰元素包括:颜色、位置、数量且元素需要随机变化。
    3. 验证码后端校验,且使用一次后即失效。
    4. 验证码在不同场景下需要与请求的参数一起提交给后端进行校验,且优先校验验证码。

短信验证码可被爆破

漏洞评级建议: 视情况而定 4位数为高危 6位数算中危

漏洞类型: 访问控制缺陷

  • 详情

    在用户注册页面,由于没有对短信验证码校验进行次数限制,导致攻击者可以通过字典爆破出验证码内容,进而登录用户账户。进行身份信息盗取等操作。

  • 造成的危害

    攻击者可以对短信验证码进行重复验证,爆破成功后进入后台进行操作。

  • 修复建议:

    1. 添加短信验证码限制,做单次判断并放在后端进行。
    2. 同一手机号,60 秒内不能重复发送验证码校验,24 小时内总共发送不超过 5 次。
    3. 加上 IP 限制,例如某 IP 一小时内连续登录发送 3 次验证码,6 个小时内禁止该 ip 发送验证。

JWT token 固定

漏洞评级建议: 高危

漏洞类型: 认证缺陷

  • 详情

    在退出账号后,依然可以通过添加 jwt token 进行访问。即使修改密码,通过原有的 jwt token 依然可以访问 jwt token 应该随时间、账号的密码进行生成,并存在存活周期。

  • 造成的危害

    攻击者利用此漏洞可直接进入应用系统或者管理系统,从而进行系统、网页、数据的篡改与删除,非法获取系统、用户的数据,甚至可能导致服务器沦陷。

  • 修复建议

    1. Jwt token 具备存活周期,超时后自动注销。
    2. 在检测到用户账号敏感操作 (如修改密码) 后重新刷新 Jwt token。

B/S#

常见漏洞#

任意命令 / 代码执行漏洞

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情

    任意命令 / 代码执行通常因为应用在服务器上拼接系统命令而造成的漏洞。攻击者通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。

  • 造成的危害

    攻击者可在服务器通过利用拼接、管道符、通配符等绕过手段来执行任意命令,写入后门,从而入侵服务器,获取服务器权限,直接导致服务器沦陷。

  • 修复建议

    1. 在代码级调用 shell 时,对命令行中的特殊字符(比如 |、&、;等)进行转义,防止执行其他非法命令。
    2. 根据业务逻辑进行白名单方式校验或使用正则表达式进行过滤。
    3. PHP 中可使用 escapeshellarg、escapeshellcmd 来转义对应敏感字符。
    4. 对于相关敏感的命令执行函数,做好参数校验和合法性验证,或者直接在配置文件中禁用该函数,不要让用户可以直接控制 eval、system、exec、shell_exec 等函数的参数。

任意文件上传漏洞

漏洞评级建议: 高危

漏洞类型: 文件上传

  • 详情

    测试过程中发现目标站点存在文件上传漏洞,应用系统在文件上传功能处对用户上传文件类型、格式、内容等做合法性校验,导致攻击者可以上传 Webshell(.php、.jsp、asp 等)恶意脚本文件或者非期望格式的文件比如:HTML 文件、SHTML 文件等,同时可利用目录跳转等字符或者控制上传目录,直接上传文件到 Web 目录或任意目录下,从而可能导致在远程服务器上执行任意恶意脚本文件,从而直接获取应用系统权限。

  • 造成的危害

    1. 上传恶意脚本文件到服务器中,通过访问该恶意文件从而执行文件中的恶意代码。
    2. 攻击者可利用目录跳转上传 php、config 等文件,覆盖原有的系统文件,到达篡改系统文件、甚至获取系统权限的目的。
    3. 攻击者可上传 html、shtm 等文件,并写入非法博彩、赌博等恶意 SEO 页面或者写入恶意 js 文件进行钓鱼来非法获取用户信息等。
  • 修复建议

    1. 对上传文件类型进行验证,除在前端验证外在后端依然要做验证,后端可以进行扩展名检测,重命名文件,MIME 类型检测以及限制上传文件的大小等限制来防御,或是将上传的文件其他文件存储服务器中。

    2. 严格限制和校验上传的文件,禁止上传恶意代码的文件。

    3. 对上传文件格式进行严格校验,防止上传恶意脚本文件。

    4. 严格限制上传的文件路径、文件内容服务端校验。文件扩展名服务端白名单校验。

    5. 隐藏上传文件路径。上传文件重命名。设置项目目录权限:可写目录不执行,执行目录不可写.

    • 代码层面
      • 服务端采用白名单方式校验文件后缀,不建议采用黑名单方式校验后缀,黑名单方式校验可能导致攻击者利用文件特性、系统特性、黑名单不全等方式进行绕过攻击。
      • 服务端对上传文件进行重命名,防止利用目录跳转等方式控制上传目录。
      • 服务端使用系统函数来判断文件类型及文件内容是否合法,比如 PHP 中的 getimagesize。
      • 对上传的文件回显相对路径或者不显示路径。
    • 其他层面
      • 建议使用 OSS 静态存储服务器来存储用户上传的文件。
      • 设置目录权限限制,禁止上传目录的执行权限。
      • 保证使用的 Nginx、Apache、IIS 等容器版本不存在解析漏洞。
      • 保证使用的第三方处理软件的版本比如 FFmpeg、ImageMagick 等不存在已知漏洞。

任意文件包含

漏洞评级建议: 高危

漏洞类型: 文件包含

  • 详情

    在通过 PHP 的 include、require 等函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入,主要包括本地文件包含和远程文件包含两种形式。

  • 造成的危害

    攻击者利用此漏洞通过包含含有任意恶意代码的任意格式文件,比如图片文件、log 文件等,可直接获取应用系统权限,如果开启了 allow_url_fopen/allow_url_include 等配置,可直接包含远程任意格式文件。

  • 修复建议

    1. 配置文件:在配置文件中限制访问的文件目录,比如 PHP 中 php.ini 配置 open_basedir。
    2. 特殊字符过滤:检查用户输入,过滤或转义含有 “../”、“..\”、“%00”,“..”,“./”,“#” 等跳转目录或字符终止符、截断字符的输入。
    3. 合法性判断:严格过滤用户输入字符的合法性,比如文件类型、文件地址、文件内容等。
    4. 白名单:白名单限定访问文件的路径、名称及后缀名。

任意文件删除

漏洞评级建议: 高危

漏洞类型: 逻辑缺陷

  • 详情

    渗透测试过程中,发现应用程序在删除文件前,未对所要删除的文件内容、类型、文件名、文件目录做合法性校验,导致可删除服务器上任意文件,比如删除安装目录中锁文件,直接进行重装应用系统。

  • 造成的危害

    攻击者利用此漏洞可直接删除 web 目录甚至服务器上任意格式文件,直接导致业务系统中断、崩溃。

  • 修复建议

    1. 日常开发中要多留意业务逻辑可能出现的漏洞和水平权限漏洞或者其它未发现的漏洞。
    2. 鉴权,服务端对请求的数据和当前用户身份做校验;完善基础安全架构,完善用户权限体系。
    3. 对于后台接口,确保所有 API 接口先经过登录控制器。
    4. 在验证用户身份权限前不进行任何数据的交互。

信息泄露类#

目录遍历 / 目录穿越

漏洞评级建议: 高危

漏洞类型: 信息泄露

  • 详情

    目录遍历 / 目录穿越是由于 web 服务器配置错误,或者 web 应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,文件下载或获取文件显示内容页面由于未对传入的文件名进行过滤,利用路径回溯符../ 跳出程序本身的限制目录,来下载或显示任意文件。

  • 造成的危害

    攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使 web 根目录以外的文件),甚至执行系统命令。

  • 修复建议

    1. 配置文件:在配置文件中限制访问的文件目录,比如 PHP 中 php.ini 配置 open_basedir。
    2. 特殊字符过滤:检查用户输入,过滤或转义含有 “../”、“..\”、“%00”,“..”,“./”,“#” 等跳转目录或字符终止符、截断字符的输入。
    3. 合法性判断:严格过滤用户输入字符的合法性,比如文件类型、文件地址、文件内容等。
    4. 对传入的文件名参数进行过滤,并且判断是否是允许获取的文件类型,过滤回溯符 ../
    5. 白名单:白名单限定访问文件的路径、名称及后缀名。

前端脱敏

漏洞评级建议: 低危,造成影响非常严重建议中危或者高危

漏洞类型: 信息泄露

  • 详情

    渗透测试过程中,发现目标多个页面传输明文的数据,在前端处理脱敏,通过抓包可以查看敏感信息。

  • 造成的危害

    恶意分子通过批量查询用户信息,导致用户缴费信息泄漏,后期可以对用户实施诈骗。

  • 修复建议

    1. 对查询请求做好检查和限制。
    2. 查询接口传输时做好脱敏,不要在前台脱敏。

邮箱泄露

漏洞评级建议: 低危,造成影响非常严重建议中危或者高危

漏洞类型: 信息泄露

  • 详情

    渗透测试过程中,发现目标前端 JS 文件存在邮箱敏感信息泄露。
    泄露信息:xxxx@

  • 造成的危害

    恶意攻击者可利用该邮箱信息进行用户名构造爆破、或者发送恶意邮件进行钓鱼等。

  • 修复建议

    1. 不要在前端保留敏感信息。
    2. 对接口请求做好检查和限制。

任意文件读取 / 下载

漏洞评级建议: 高危

漏洞类型: 信息泄露

  • 详情

    在读取文件内容文件或文件下载处,未严格限制读取 / 下载文件的路径及文件后缀,导致可利用 ../,# 等目录操作字符进行目录穿越、截断等手段,从而读取 / 下载服务器上任意文件,比如配置文件等。

  • 造成的危害

    如果系统未对读取 / 下载文件的文件目录做限制,攻击者利用此漏洞可直接读取 web 目录下任意文件,比如配置文件、数据库文件等,甚至直接获取服务器上任意文件内容。

  • 修复建议

    1. 配置文件:在配置文件中限制访问的文件目录,比如 PHP 中 php.ini 配置 open_basedir。
    2. 特殊字符过滤:检查用户输入,过滤或转义含有 “../”、“..\”、“%00”,“..”,“./”,“#” 等跳转目录或字符终止符、截断字符的输入。
    3. 合法性判断:严格过滤用户输入字符的合法性,比如文件类型、文件地址、文件内容等。
    4. 白名单:白名单限定访问文件的路径、名称及后缀名。

目录浏览漏洞

漏洞评级建议: 低危,造成影响非常严重建议中危或者高危

漏洞类型: 信息泄露

  • 详情

    目录浏览漏洞主要是由于配置不当,当访问到某一目录中没有索引文件时(或者手工开启了目录浏览功能)即把当前目录中的所有文件及相关下层目录一一在页面中显示出来。通过该漏洞攻击者可获得服务器上的文件目录结构,从而下载敏感文件(备份文件存放地址、数据文件、数据库文件、源代码文件等)。

  • 造成的危害

    攻击者通过该漏洞可以看到服务器上的文件目录结构,获取应用系统文件敏感文件,比如备份文件、数据库文件、源代码文件等,导致应用程序大量敏感信息泄漏。

  • 修复建议

    1. 通过修改配置文件,去除中间件(如 IIS、apache、nginx)的文件目录索引功能。
        - IIS:只需要进入 IIS 管理器,选择对应的网站,然后在功能视图中的IIS项双击[目录浏览],然后在操作的地方点击[禁用]即可。另外也可以在网站目录下找到 web.config 文件,将 <directoryBrowse enabled="true" /> 中的 true 修改为false。
        - Apache:在配置文件中将 Options Indexes FollowSymLinks 在 Indexes 前面加上 - 符号。即: Options -Indexes FollowSymLinks。
        - Nginx:在配置文件中将 autoindex on; 去掉或者直接注释掉即可。
    2. 设置文件目录的访问权限。
    3. 在每个目录下创建一个空的 index.html 页面。
    

    下面列举出禁止 Apache 显示目录索引的常见的 3 种方法

    1. 修改目录配置:只需要将下面代码中的 Indexes 去掉,就可以禁止 Apache 显示该目录结构。用户就不会看到该目录下的文件和子目录列表了。
    <Directory "D:/Apache/blog.phpha.com">
    Options Indexes FollowSymLinks # 修改为: Options  FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
    1. 修改 Apache 配置文件 [httpd.conf]
    <VirtualHost *>
        <Directory "../vhosts/blog.phpha.com">
            Options -Indexes FollowSymLinks # 修改为 -Indexes 即可
        </Directory>
        ServerAdmin mail@jb51.com
        DocumentRoot "../vhosts/blog.phpha.com"
        ServerName shopex:80
        ServerAlias blog.phpha.com
        ErrorLog logs/blog.phpha.com-error_log
    </VirtualHost>
    
    1. 通过 .htaccess 文件:可以在根目录新建或修改 .htaccess 文件中添加
    <Files *>
    Options -Indexes
    </Files>
    

测试系统环境开放

漏洞评级建议: 中危

漏洞类型: 访问控制缺陷

  • 详情

    渗透测试过程中,发现目标测试系统访问对公网开放,无任何安全认证措施。

  • 造成的危害

    即使是测试系统也可能会存在一定的敏感数据,而且攻击者也可能通过拿下测试系统的机器近一步的横向渗透,对整个业务系统造成极大影响。

  • 修复建议

    1. 停止对外开放测试系统,并检查有无同类系统存在该问题。
    2. 应用系统在发布后应及时删除、关闭测试接口。
    3. 应用系统在发布后应及时删除、关停测试账号。
    4. 应用系统在发布后应及时删除测试文件。
    5. 应用系统在发布后应及时清除数据表中的测试数据。

某查询接口造成用户信息泄露

漏洞评级建议: 高危

漏洞类型: 信息泄露

  • 详情

    在 xxxx 页面时,经过更改的查询请求可以绕过查询限制,从而查询到任意用户的缴费数据。

  • 造成的危害

    恶意分子通过批量查询用户信息,导致用户 xxxx 信息泄漏,可以对用户实施钓鱼、诈骗等。甚至用于黑产。

  • 修复建议

    对查询请求做好检查和限制。

配置文件泄露 & 测试文件泄露

漏洞评级建议: 高危

漏洞类型: 信息泄露

  • 详情

    目标网站存在配置文件泄露问题,包含部分项目文件路径信息、配置参数信息等。

    1. 目标网站存在测试文件泄露问题,测试文件中可能包含源代码,可导致源代码泄露.
    2. 目标网站存在测试文件泄露问题,测试文件中可能包含程序的部署信息,可导致部署信息泄露.
    3. 目标网站存在测试文件泄露问题,测试文件中可能数据库或其他内网系统的连接方式,可导致数据库密码、内网地址等其他敏感信息泄露.
  • 造成的危害

    泄露的配置文件可能会包含路径信息,甚至可能包含部分数据库配置参数。

  • 修复建议

    1. 修改配置文件使目标路径不可访问。
    2. 禁止在 Web 站点的发布下放置任何测试配置文件。
    3. 禁止在正式部署环境中存在调试文件和调试信息。
    4. 开发环境与部署环境分离,不要直接在线上系统修改代码。
    5. 建立规范的部署流程,不要直接在源代码的工作目录进行发布和部署。

phpinfo 信息泄露

漏洞评级建议: 信息

漏洞类型: 信息泄露

  • 详情

    phpinfo 信息泄露漏洞常发生一些默认的安装包,比如 phpstudy 等,默认安装完成后,没有及时删除这些提供环境测试的文件,比较常见的为 phpinfo.php、1.php 和 test.php, 主要用于网站建设过程中测试搭建的 PHP 环境是否正确,很多网站在测试完毕后并没有及时删除,因此当访问这些测试页面时,会输出服务器的关键信息,这些信息的泄露将导致服务器被渗透的风险。

  • 造成的危害

    phpinfo 返回的信息中包含了服务器的配置信息,包括:

    1. PHP 编译选项以及文件扩展名的相关信息;
    2. php 的版本信息;
    3. php 的配置信息;
    4. 数据库信息等敏感信息。
      这些敏感信息会帮助攻击者展开进一步的攻击。PHP 中提供了 phpinfo () 函数,该函数返回 PHP 的所有信息,包括了 PHP 的编译选项及扩充配置、PHP 版本、服务器信息及环境变量、PHP 环境变量、操作系统版本信息、路径及环境变量配置、HTTP 标头、及版权宣告等信息。
  • 修复建议

    建议移除 phpinfo 文件。

svn 源码泄露漏洞

漏洞评级建议: 中危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    Subversion,简称 SVN,是一个开放源代码的版本控制系统,相对于的 RCS、CVS,采用了分支管理系统,它的设计目标就是取代 CVS。互联网上越来越多的控制服务从 CVS 转移到 Subversion。在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。

  • 造成的危害

    黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。"(可以利用 .svn/entries 文件,获取到服务器源码、svn 服务器账号密码等信息) 更严重的问题在于,SVN 产生的 .svn 目录下还包含了以 .svn-base 结尾的源代码文件副本 (低版本 SVN 具体路径为 text-base 目录,高版本 SVN 为 pristine 目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。

  • 修复建议

    1. 查找服务器上所有 .svn 隐藏文件夹,删除。
    2. 开发人员在使用 SVN 时,严格使用导出功能。禁止直接复制代码。

CVS 存储库文件泄露

漏洞评级建议: 中危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    cvs 项目在初始化 (cvs checkout project) 的时候,会在 project 目录下创建一个名为 CVS 的目录,其中保存了各个文件的修改和 commit 记录。通过此目录可以获取代码的历史版本。其中两个关键文件为: CVS/Root 和 CVS/Entries, 分别记录了项目的根信息和所有文件的结构。

  • 造成的危害

    通过此目录可以获取代码的历史版本。泄露源代码。

  • 修复建议

    删除相应文件夹,使用其他版本控制工具.

.git 源码泄漏

漏洞评级建议: 中危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    开发者在使用 git 作为版本控制时,在一个目录中初始化一个仓库以后,会在这个目录下产生一个名叫 .git 的隐藏文件夹,这个文件夹里面保存了这个仓库的所有版本等一系列信息。如果服务器将. git 文件夹放在了 web 目录下,就可能导致攻击者利用. git 文件夹内的信息获取应用程序所有源代码。

  • 造成的危害

    1. 攻击者利用此漏洞可获取应用程序源代码,分析源码进行进一步攻击利用;
    2. 攻击者利用此漏洞可获取数据配置信息,可能直接导致应用程序用户信息泄漏,设置获取服务器权限;
  • 修复建议

    1. 查找服务器上所有 .git 隐藏文件夹,删除。
    2. 中间件上设置 .git 目录访问权限,禁止访问。

DS_Store 信息泄漏

漏洞评级建议: 中危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    苹果的操作系统会在每一个文件夹中产生这个文件记录这个文件夹中的相关信息。这一文件包含了文件夹中所有的文件名和子文件夹名。和 windows 相比,等同于 desktop.ini 和 Thumbs.db 两个文件。

  • 造成的危害

    1. 攻击者利用该漏洞可能获取网站相关的文件夹和文件名;
    2. 攻击者可通过解析这一文件,可能会发现数据库备份文件、配置文件以及一些缓存文件,甚至是密钥等;
  • 修复建议

    1. 在不影响代码运行的情况下,删除 .DS_Store 文件。
    2. 在中间件中设置对应的文件、目录的访问权限。

.idea 信息泄漏

漏洞评级建议: 中危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    目标存在 idea 信息泄漏,导致网站的部分信息和绝对路径泄漏。

  • 造成的危害

    1. 攻击者利用该漏洞可能获取网站相关的文件夹和文件名;
    2. 攻击者可通过解析这一文件,可能会发现数据库备份文件、配置文件以及一些缓存文件,甚至是密钥等;
  • 修复建议

    1. 在不影响服务运行的情况下,删除 .idea 文件夹。
    2. 在中间件中设置对应的文件、目录的访问权限。

soap 接口泄露

漏洞评级建议: 高危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    渗透测试过程中,发现目标存在 soap 接口泄露。

  • 造成的危害

    攻击者可以通过该页面,访问敏感接口、收集 API 信息,可能导致数据泄露或服务器失陷。

  • 修复建议

    1. 对该页面添加权限认证,避免用户直接访问。

wadl 接口泄露

漏洞评级建议: 高危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    渗透测试过程中,发现目标存在 wadl 接口泄露。

  • 造成的危害

    攻击者可以通过该页面,访问敏感接口、收集 API 信息,可能导致数据泄露或服务器失陷。

  • 修复建议

    1. 对该页面添加权限认证,避免用户直接访问。

S3Bucket 策略配置不当导致敏感信息泄漏

漏洞评级建议: 高危,若无实际项目文件建议降为信息

漏洞类型: 信息泄露

  • 详情

    AWS 中的 S3 Bucket 桶访问策略如果没有严格限制,可能导致严重的信息泄露事件,运维人员应正确的配置 S3 访问策略,遵循最小权限原则。

  • 造成的危害

    攻击者利用该漏洞可能获取网站相关的文件夹和文件名;

  • 修复建议

    1. 存储桶禁止开启公共访问权限 (包括列出、写入、ACL 的读写等)。
    2. 敏感对象 (如 kyc 认证照片等信息) 禁止开启公共访问权限。
    3. 通过控制台定期检查是否存在公共访问的 S3 Bucket。

Swagger API 泄露

漏洞评级建议: 高危

漏洞类型: 信息泄露

  • 详情

    渗透测试过程中,扫描目标 API 端点,发现目标 swagger API 页面无需认证即可访问,并有部分操作数据的权限且可能泄露数据信息。

  • 造成的危害

    攻击者可在没有认证的情况下直接操作对应的 API 接口,可直接被非法增删改查数据。且因为攻击是在未认证下进行的,所以后续无法通过定位用户进行异常排查。

  • 修复建议

    1. 对该页面加上授权访问检查。
    2. 鉴权,服务端对请求的数据和当前用户身份做校验;完善基础安全架构,完善用户权限体系。
    3. 对于后台接口,确保所有 API 接口先经过登录控制器。
    4. 在验证用户身份权限前不进行任何数据的交互。

metrics 泄露

漏洞评级建议: 低危

漏洞类型: 信息泄露

  • 详情

    目标端点存在调试信息泄露。

  • 造成的危害

    1. 显示函数名与文件路径。
    2. 该端点数据可能揭示商业敏感信息 (例如,web 服务的流量)。
    3. 该端点会降低性能,为 DoS 攻击带来可能。
  • 修复建议

    1. 移除该端点。
    2. 将 pprof http 服务器放在本地主机上的一个单独的端口上,与应用程序 http 服务器分开。

debug 信息泄露

漏洞评级建议: 低危

漏洞类型: 信息泄露

  • 详情

    目标端点存在 debug 调试信息泄露。

  • 造成的危害

    1. 显示函数名与文件路径。
    2. 该端点数据可能揭示商业敏感信息 (例如,web 服务的流量)。
    3. 该端点会降低性能,为 DoS 攻击带来可能。
  • 修复建议

    1. 移除该端点。

prometheus api 信息泄露

漏洞评级建议: 低危

漏洞类型: 信息泄露

  • 详情

    Prometheus 是一种开源的、基于指标的事件监控和警报解决方案,许多使用 Prometheus 的组织尚未启用基本身份验证,导致泄漏端点信息和标签数据。

  • 造成的危害

    1. 不受信任的用户可以访问 Prometheus HTTP 端点和日志。他们可以访问数据库中包含的所有时间序列信息,以及各种操作 / 调试信息。
    2. 在某些情况下,端点信息会暴露软件版本和主机名,攻击者可以使用这些信息在特定服务器进行信息收集,或用于横向移动等后渗透利用技术。
  • 修复建议

    1. 启用 Prometheus 的基本身份验证。

不安全的输入#

HTTP 参数污染漏洞

漏洞评级建议: 中危

漏洞类型: 不安全的输入

  • 详情

    HTTP 参数污染漏洞(HTTP Parameter Pollution)简称 HPP,由于 HTTP 协议允许同名参数的存在,同时,后台处理机制对同名参数的处理方式不当,造成 “参数污染”。攻击者可以利用此漏洞对网站业务造成攻击,甚至结合其他漏洞,获取服务器数据或获取服务器最高权限。

  • 造成的危害

    HTTP 参数污染的风险实际上取决于后端所执行的操作,以及被污染的参数提交到了哪里。

    • 对客户端的攻击,比如投票、跳转、关注等;
    • 绕过安全防护软件;
  • 修复建议

    1. 对用户输入数据的参数的格式进行验证。
    2. 在 WAF 或其他网关设备(比如 IPS)在检查 URL 时,对同一个参数被多次赋值的情况进行特殊处理。
    3. 在代码层面,编写 WEB 程序时,要通过合理的 $_GET 方法获取 URL 中的参数值,而尝试获取 web 服务器返回给程序的其他值时要慎重处理。

CRLF Injection

漏洞评级建议: 中危

漏洞类型: 不安全的输入

  • 详情

    CRLF 是回车 + 换行(\r\n)的简称。在 HTTP 协议中,HTTP Header 与 HTTP Body 是用两个 CRLF 分隔的,浏览器就是根据这两个 CRLF 来取出 HTTP 内容并显示出来。所以,一旦我们能够控制 HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话 Cookie 或者 HTML 代码,所以 CRLF Injection 又叫 HTTP Response Splitting,简称 HRS。

  • 造成的危害

    1. 通过在响应头中设置一个 SESSION,即可造成一个 “会话固定漏洞”;
    2. 通过向响应头中注入恶意配置,即可造成一个无视浏览器 Filter 的反射型 XSS;
    3. 跳转劫持;
    4. 通过注入 html 代码可以进行钓鱼;
  • 修复建议

    1. 在设置 HTTP 响应头的代码中,过滤回车、换行 (%0d,%0a,%0D,%0A) 等字符,避免输入的数据污染到其他 HTTP 头。
    2. 对参数做合法性校验以及长度限制。

LDAP 注入

  • 详情

    由于 Web 应用程序没有对用户发送的数据进行适当过滤和检查,攻击者可修改 LDAP 语句的结构,并且以数据库服务器、Web 服务器等的权限执行任意命令,许可权可能会允许查询、修改或除去 LDAP 树状构造内任何数据。

  • 造成的危害
    攻击者可以在易受攻击的系统上执行任意 LDAP 语句。根据正在使用的后端数据库, SQL 注入漏洞会导致攻击者访问不同级别的数据 / 系统。不仅可以操作现有查询,还可以合并任意数据、使用子选择或追加附加查询。在某些情况下,可以读入或写出文件,或者在底层操作系统上执行 shell 命令。

  • 修复建议

    1. 对用户的输入内容进行严格的过滤。
    2. 使用转义特殊字符和白名单来验证输入。

SQL 注入

漏洞评级建议: 高危

漏洞类型: SQL注入

  • 详情

    Web 程序中对于用户提交的参数未做过滤直接拼接到 SQL 语句中执行,导致参数中的特殊字符破坏了 SQL 语句原有逻辑,攻击者可以利用该漏洞执行任意 SQL 语句,如查询数据、下载数据、写入 webshell、执行系统命令以及绕过登录限制等,SQL 注入漏洞允许攻击者通过操纵用户输入来更改后端 SQL 语句。当 web 应用程序接受直接放入 SQL 语句的用户输入,并且没有正确过滤掉危险字符时,就会发生 SQL 注入。

  • 造成的危害

    攻击者可以在易受攻击的系统上执行任意 SQL 语句。根据正在使用的后端数据库, SQL 注入漏洞会导致攻击者访问不同级别的数据 / 系统。不仅可以操作现有查询,还可以合并任意数据、使用子选择或追加附加查询。在某些情况下,可以读入或写出文件,或者在底层操作系统上执行 shell 命令。

  • 修复建议

    1. 使用预编译语句,使用 PDO 需要注意不要将变量直接拼接到 PDO 语句中。所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中。当前几乎所有的数据库系统都提供了参数化 SQL 语句执行接口,使用此接口可以非常有效的防止 SQL 注入攻击。
    2. 程序代码里的所有查询语句,使用标准化的数据库查询语句 API 接口,设定语句的参数进行过滤一些非法的字符,防止用户输入恶意的字符传入到数据库中执行 sql 语句。
    3. 对用户提交的的参数安全过滤,像一些特殊的字符 (,()*&……%# 等等) 进行字符转义操作, 以及编码的安全转换。
    4. 网站的报错信息尽量不要返回给客户端,比如一些类型错误、字段不匹配、字符错误,数据库的报错信息,尽可能的防止泄露给客户端,防止攻击者利用这些错误信息进行一些判断。
    5. 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为 int 型。
    6. 数据长度应该严格规定,能在一定程度上防止比较长的 SQL 注入语句无法正确执行。
    7. 网站每个数据层的编码统一,建议全部使用 UTF-8 编码,上下层编码不一致有可能导致一些过滤模型被绕过。
    8. 严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
    9. 过滤危险字符,例如:采用正则表达式匹配 union、sleep、and、select、load_file 等关键字,如果匹配到则终止运行。
    
    • 代码层面

      • 输入验证
        1. 类型判断:字符型、整型;
        2. 长度判断:设置最大长度值;
        3. 业务参数合法性判断:比如支付金额不可能为负值这种;
        4. 特殊字符过滤:比如 ',",\,<,>,&,*,;,#,select,from,where,sub,if,union,sleep,and,or 等;
        5. 验证所有的输入点,包括 UA、Cookie 以及其他 HTTP 头;
      • 预编译处理 & 参数化查询
        1. 所有与数据库交互的业务接口均采用参数化查询,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,参数化查询是防御 SQL 注入的最佳方法,比如:Java 中的 PreparedStatement,PHP 中的 PDO 等。
    • 数据库层面

      • 最小权限原则
        • 遵循最小化权限原则,严格限制网站用户的数据库的操作权限,禁止将任何高权限帐户(sa,dba、root 等)用于应用程序数据库访问,从而最大限度的减少注入攻击对数据库的危害。
      • 禁用敏感函数
        • 比如 MSSQL 中,拒绝用户访问敏感的系统存储过程,如 xp_dirtree,xp_cmdshell 等。
      • 权限控制
        • 限制用户所能够访问的数据库表。
    • 编码统一

      • 网站与数据层的编码统一,建议全部使用 UTF-8 编码,避免因上下层编码不一致导致一些过滤模型被绕过,比如宽字节注入等。

XSS

漏洞评级建议: 高危

漏洞类型: 不安全的输入

  • 详情

    渗透测试过程中,发现目标存在 XSS 漏洞,Web 程序代码中对用户提交的参数未做过滤或过滤不严,导致参数中的特殊字符破坏了 HTML 页面的原有逻辑,攻击者可以利用该漏洞执行恶意 HTML/JS 代码、构造蠕虫、篡改页面实施钓鱼攻击、以及诱导用户再次登录,然后获取其登录凭证等。

  • 造成的危害

    1. 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼 JavaScript 以监控目标网站的表单输入,甚至发起基于 DHTML 更高级的钓鱼攻击方式。
    2. 网站挂马:跨站后利用 IFrame 嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
    3. 身份盗用:Cookie 是用户对于特定网站的身份验证标志,XSS 可以盗取用户的 Cookie,就可以获取到用户对网站的操作权限,从而查看用户隐私信息。
    4. 垃圾信息发送:在社交网站社区中,利用 XSS 漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
    5. 劫持用户 Web 行为:一些高级的 XSS 攻击甚至可以劫持用户的 Web 行为,从而监视用户的浏览历史、发送与接收的数据等等。
    6. XSS 蠕虫:借助 XSS 蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏数据、实施 DDoS 攻击等。
    7. 控制受害者机器向其他系统发起攻击。
  • 修复建议
    xss 漏洞本质上是一种 html 注入,也就是将 html 代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义

    1. 不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对 URL、查询关键字、HTTP 头、REFER、POST 数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用 POST 而非 GET 提交表单; 对 "<",">",";",""" 等字符做过滤; 任何内容输出到页面之前都必须加以 en-code,避免不小心把 htmltag 显示出来。
    2. 实现 Session 标记 (session tokens)、CAPTCHA(验证码) 系统或者 HTTP 引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的 img 等 link,检查是否有重定向回本站、不是真的图片等可疑操作。
    3. cookie 防盗。避免直接在 cookie 中泄露用户隐私,例如 email、密码,等等; 通过使 cookie 和系统 IP 绑定来降低 cookie 泄露后的危险。这样攻击者得到的 cookie 没有实际价值,很难拿来直接进行重放攻击。
    4. 对输出到页面的数据进行相应的编码转换,如 HTML 实体编码、JS 编码等。对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行检查。
    5. 确认接收的内容被妥善地规范化,仅包含最小的、安全的 Tag(没有 JavaScript),去掉任何对远程内容的引用(尤其是样式表和 JavaScript),使用 HTTPonly 的 cookie。
    6. 不仅验证数据的类型,还要验证其格式、长度、范围和内容。不仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
    
    • 代码层面
      • 在服务端进行输入验证(输入验证)
        • 服务器后端进行输入验证,包括输入的数据类型、数据长度、数据格式、特殊字符等进行验证。
      • 数据输出实体编码(输出编码)
        • 输出编码手段主要有 3 种编码:URL 编码、HTML 编码和 JavaScript 编码。
        • JAVA:开源的 ESAPI library;框架(Spring:HtmlUtils.htmlEscape) PHP:使用 htmlspecialchars 等函数进行过滤输出。
    • 其他层面
      • 使用模版引擎
        • 开启模板引擎自带的 HTML 转义功能。例如: 在 ejs 中,尽量使用 <%= data %> 而不是 <%- data %>; 在 doT.js 中,尽量使用 {{! data } 而不是 {{= data }; 在 FreeMarker 中,确保引擎版本高于 2.3.24,并且选择正确的 freemarker.core.OutputFormat。
      • 避免内敛事件
        • 尽量不要使用 onLoad="onload ('{{data}}')"、onClick="go ('{{action}}')" 这种拼接内联事件的写法。在 JavaScript 中通过 .addEventlistener () 事件绑定会更安全。
      • 避免拼接 HTML
        • 前端采用拼接 HTML 的方法比较危险,如果框架允许,使用 createElement、setAttribute 之类的方法实现。或者采用比较成熟的渲染框架,如 Vue/React 等。
      • 使用 CSP
        • Content Security Policy:禁止加载外域代码,防止复杂的攻击逻辑;禁止外域提交,网站被攻击后,用户的数据不会泄露到外域;禁止内联脚本执行;禁止未授权的脚本执行。
      • 使用 httponly
        • HTTP-only Cookie: 禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。httponly 无法完全的防御 xss 漏洞,它只是规定了不能使用 js 去获取 cookie 的内容,因此它只能防御利用 xss 进行 cookie 劫持的问题。Httponly 是在 set-cookie 时标记的,可对单独某个参数标记也可对全部参数标记。由于设置 httponly 的方法比较简单,使用也很灵活,并且对防御 cookie 劫持非常有用,因此已经渐渐成为一种默认的标准。
    • 前端
      • 在不影响客户正常使用的情况下使用 js,由客户端运行,过滤特殊字符,如:单引号 '&' , '<' , '' 之类的敏感字符转义为 &amp , &lt , &gt,用户所编写的 HTML 代码就变成了字符,剩下富文本格式。
    • 后端
      • PHP:
        • 直接输出到 HTML 的可以尝试使用以下方法进行过滤: htmlspecialchars 函数、htmlentities 函数、HTMLPurifier.auto.php 插件等;
        • 输出到 JS 代码中,或者开发 Json API 的,则需要前端在 JS 中进行过滤:
            1. 尽量使用 innerText (IE) 和 textContent (Firefox), 也就是 jQuery 的 text () 来输出文本内容。
            1. 必须要用 innerHTML 等等函数,则需要做类似 php 的 htmlspecialchars 的过滤。
      • Java: 采用开源的实现 ESAPI library 参考网址: https://owasp.org/www-project-enterprise-security-api/
      • Asp: 使用 Microsoft 防跨站点脚本库 (AntiXSS) 并将其设置为您的默认 HTML 编码器。

XXE

漏洞评级建议: 高危

漏洞类型: 不安全的输入

  • 详情

    XML 外部实体注入(XML External Entity Injection)漏洞是指当恶意用户在提交一个精心构造的包含外部实体引用的 XML 文档给未正确配置的 XML 解析器处理时,该攻击就会发生。

  • 造成的危害

    1. 利用 XXE 进行 DOS 攻击;
    2. 读取本地任意敏感文件;
    3. 利用相关协议探测内网主机 IP、端口等信息;
    4. 在特定条件下利用 Java 中的 jar:// 协议,php 中的 phar:// 可能导致恶意文件上传;
    5. PHP 中如果安装了 expect 扩展,可利用 XXE 执行任意命令。
  • 修复建议

    • 使用语言中推荐的禁用外部实体的方法
      • PHP:libxml_disable_entity_loader(true);
      • Java:
        • DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
        • dbf.setExpandEntityReferences(false);
      • Python:
        • from lxml import etree
        • xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
    • 手动黑名单过滤
      • 过滤 XML 中的相关关键词,比如:<!DOCTYPE、<!ENTITY SYSTEM、PUBLIC 等。

SSRF

漏洞评级建议: 中危

漏洞类型: 不安全的输入

  • 详情

    很多 web 应用都提供了从其他的服务器上获取数据的功能。使用用户指定的 URL,web 应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的 web 应用作为代理攻击远程和本地的服务器。这种形式的攻击称为服务端请求伪造攻击 (Server-side Request Forgery)。即:利用一个可以发起网络请求的服务,当作跳板来攻击其他服务。

  • 造成的危害

    1. 可以对外网、服务器所在内网、本地端口扫描,获取开放端口信息;主机信息收集,web 应用指纹识别,获取服务 banner 信息等;
    2. 攻击内外网的 Web 应用,主要是使用 Get 参数就可以实现的攻击(比如 Struts2 漏洞利用,SQL 注入等); 攻击运行在内网或本地的应用程序(比如溢出);
    3. 根据识别出的应用针对性的发送 payload 攻击,例如 struts2、redis、攻击内网、本地的应用程序及服务等;穿越防火墙;
    4. 利用 file 等其他允许协议进行绕过攻击,比如利用 file 协议读取本地文件(file:///etc/passwd)
  • 修复建议

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

    2. 白名单的方式限制访问的目标地址,禁止对内网发起请求。

    3. 过滤或屏蔽请求返回的详细信息,验证远程服务器对请求的响应是比较容易的方法。如果 web 应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

    4. 验证请求的文件格式,禁止跟随 301、302 跳转。

    5. 限制请求的端口为 http 常用的端口,比如 80、443、8080、8000 等。

    6. 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

    • 解析目标 URL
      • 获取 scheme、host(推荐使用系统内置函数完成,避免自己使用正则提取)。
    • 校验 scheme
      • 检查 scheme 是否为合法 (如非特殊需求请只允许 http 和 https)。
    • 获取解析 IP
      • 解析 host 获取 dns 解析后的 IP 地址。
    • 检测 IP 是否合法
      • 检查解析后的 IP 地址是否为外网地址或者合法 IP。

SSTI

漏洞评级建议: 高危

漏洞类型: 不安全的输入

  • 详情

    SSTI (服务器端模板注入)如果攻击者能够控制要呈现的模板,服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,就可能导致上下文数据的暴露,甚至在服务器上运行任意命令的表达式。

  • 造成的危害

    1. 获取上下文敏感数据信息、配置信息;
    2. 读取、写入恶意文档到服务器中;
    3. 执行系统命令;
  • 修复建议

    1. 不要让用户对传入模板的内容或者模板本身进行控制。
    2. 减少或者放弃直接使用格式化字符串结合字符串拼接的模板渲染方式,使用正规的模板渲染方法。
    3. 如果需要将动态数据传递给模板,不要直接在模板文件中执行,可以使用模板引擎的内置功能来扩展表达式,实现同样的效果。

配置不当#

CSRF 跨站请求伪造

漏洞评级建议: 中危

漏洞类型: 配置不当

  • 详情

    CSRF(Cross-site request forgery)跨站请求伪造,也被称为 “One Click Attack” 或者 Session Riding,通常缩写为 CSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。攻击者通过伪造来自受信任用户的请求,达到增加、删除、篡改网站内容的目的。通常由于服务端没有对请求头做严格过滤引起的。CSRF 会造成密码重置,用户伪造等问题,可能引发严重后果。绝大多数网站是通过 cookie 等方式辨识用户身份,再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。CSRF 攻击会令用户在不知情的情况下攻击自己已经登录的系统。

  • 造成的危害

    CSRF 攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作。最常见的攻击场景为:攻击者冒充用户 / 管理员伪造请求,进行网页篡改;用户修改、添加用户、密码修改;发送帖子、消息等非法操作。

  • 修复建议

    1. 验证 HTTP Referer 字段
    2. 在请求地址中增加 csrftoken 验证,csrftoken 可以在用户登录后产生并放于 session 之中,然后在每次请求时把 csrftoken 从 session 中拿出,与请求中的 csrftoken 进行比对。对于 GET 请求,csrftoken 将附在请求地址之后,对于 POST 请求来说,要在 form 的最后加上 <input type="hidden" name="csrftoken" value="tokenvalue"/>;
    3. 在 HTTP 头中自定义属性并验证。
    4. 对于 web 站点,将持久化的授权方法(例如 cookie 或者 HTTP 授权)切换为瞬时的授权方法(在每个 form 中提供隐藏 field),可以帮助网站防止 CSRF 攻击。
    5. 过滤用户输入,不允许发布含有站内操作 URL 的链接;
    6. 在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的 cookie。

CORS 跨域漏洞

漏洞评级建议: 中危

漏洞类型: 配置不当

  • 详情

    跨域资源共享(CORS)是一种浏览器机制,可实现对位于给定域外部的资源的受控访问。它扩展了同源策略(SOP)并增加了灵活性。但是,如果网站的 CORS 策略配置和实施不当,它也可能带来基于跨域的攻击。CORS 并不是针对跨域攻击(例如跨站点请求伪造(CSRF))的保护措施。

  • 造成的危害

    假如两个互相受信任的源,如果其中一个网站存在 XSS,攻击者就可以利用 XSS 注入一些 JavaScript 代码,利用这些代码对信任其源的另一个网站进行敏感信息的获取。

  • 修复建议

    1. 正确配置跨域请求,如果 Web 资源包含敏感信息,则应在 Access-Control-Allow-Origin 标头中正确指定来源。
    2. 只允许信任的网站,Access-Control-Allow-Origin 中指定的来源只能是受信任的站点。使用通配符来表示允许的跨域请求的来源而不进行验证很容易被利用,应该避免。
    3. 避免将 null 列入白名单,避免使用标题 Access-Control-Allow-Origin: null。来自内部文档和沙盒请求的跨域资源调用可以指定 null 来源。应针对私有和公共服务器的可信来源正确定义 CORS 头。
    4. 避免在内部网络中使用通配符。当内部浏览器可以访问不受信任的外部域时,仅靠信任网络配置来保护内部资源是不够的。
    5. CORS 不能替代服务器端安全策略,CORS 定义了浏览器的行为,绝不能替代服务器端对敏感数据的保护 - 攻击者可以直接从任何可信来源伪造请求。因此,除了正确配置的 CORS 之外,Web 服务器还应继续对敏感数据应用保护,例如身份验证和会话管理。

拒绝服务类#

SlowHttp 缓慢攻击漏洞

漏洞评级建议: 中危

漏洞类型: 拒绝服务

  • 详情

    缓慢的 http 拒绝服务攻击是一种专门针对于 Web 的应用层拒绝服务攻击,按照设计,HTTP 协议要求服务器在处理之前完全接收请求。 如果 HTTP 请求没有完成,或者传输速率非常低,服务器会保持其资源忙于等待其余数据。如果服务器保持太多的资源请求和处理,这将造成一个拒绝服务。严重者一台主机即可让 web 运行缓慢甚至是崩溃。

  • 造成的危害

    攻击者利用 Web 应用在处理 HTTP 请求之前都要先接收完所有的 HTTP 头部,因为 HTTP 头部中包含了一些 Web 应用可能用到的重要信息的特点,发起一个 HTTP 请求,一直不停的发送 HTTP 头部,消耗服务器的连接和内存资源。

  • 修复建议

    1. 设置合适的 timeout 时间(Apache 已默认启用了 reqtimeout 模块),规定了 Header 发送的时间以及频率和 Body 发送的时间以及频率。

    2. 增大 MaxClients (MaxRequestWorkers):增加最大的连接数。根据官方文档,两个参数是一回事,版本不同,MaxRequestWorkers was called MaxClients before version 2.3.13.Theold name is still supported。

    3. 默认安装的 Apache 存在 Slow Attack 的威胁,原因就是虽然设置的 timeoute,但是最大连接数不够,如果攻击的请求频率足够大,仍然会占满 Apache 的所有连接。

    4. 将标题和消息体限制在最小的合理长度上。针对接受数据的每个资源,设置更严格的特定于 URL 的限制。

    5. 如果 Web 服务器从相同的 IP 接收到数千个连接,同一个用户代理在短时间内请求相同的资源,直接禁掉 IP 并且记录日志。

    6. 对 web 服务器的 http 头部传输的最大许可时间进行限制,修改成最大许可时间为 20 秒。

    • Weblogic

      1. 在配置管理界面中的协议 -> 一般信息下设置 完成消息超时时间小于 400。
      2. 在配置管理界面中的协议 ->HTTP 下设置 POST 超时、持续时间、最大 POST 大小为安全值范围。
    • Nginx

      1. 通过调整 $request_method,配置服务器接受 http 包的操作限制;
      2. 在保证业务不受影响的前提下,调整 client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout 的值,必要时可以适当的增加;
      3. 对于会话或者相同的 ip 地址,可以使用 HttpLimitReqModule and HttpLimitZoneModule 参数去限制请求量或者并发连接数;
      4. 根据 CPU 和负载的大小,来配置 worker_processes 和 worker_connections 的值,公式是:max_clients = worker_processes * worker_connections。
    • Apache

      1. mod_reqtimeout 用于控制每个连接上请求发送的速率。配置例如:
        请求正文部分,设置超时时间初始为 10 秒,将超时时间延长 1 秒,但最长不超过 40 秒。可以防护 slow message body 型的慢速攻击。

      2. mod_qos 用于控制并发连接数。配置例如:

        当服务器并发连接数超过 600 时,关闭 keepalive
        QS_SrvMaxConnClose 600
        每个源 IP 最大并发连接数为 50
        QS_SrvMaxConnPerIP 50

钓鱼欺骗#

URL Redirect

漏洞评级建议: 中危

漏洞类型: 钓鱼欺骗

  • 详情

    由于目标网站未对程序跳转的 URL 地址及参数做合法性判断,导致应用程序直接跳转到参数中指定的的 URL 地址。攻击者可通过将跳转地址修改为指向恶意站点,即可发起网络钓鱼、诈骗甚至窃取用户凭证等。

  • 造成的危害

    1. 攻击者可能会使用 Web 服务器攻击其他站点;
    2. 如果对输出没有做严格限制,将可能导致反射性 XSS 漏洞;
    3. 黑产将利用此漏洞,从信任网站跳转到攻击者构造的恶意网站用来进行钓鱼、诈骗等行为;
  • 修复建议

    1. 白名单规定跳转链接,如果某个业务事先已经确定将要跳转的网站,最稳妥的方式是将其直接编码在源代码中,通过 URL 中传入的参数来映射跳转网址。
    2. 严格验证跳转 URL 参数的有效性、合法性。
    3. 在进行页面跳转前校验传入的 URL 参数是否为可信域名。

存在暗链 / SEO 痕迹

漏洞评级建议: 高危

漏洞类型: 钓鱼欺骗

  • 详情

    暗链是对搜索引擎的一种欺骗,导致搜索引擎的误判,将高权重分配给原本没有价值的网站甚至是钓鱼网站。

  • 造成的危害

    1. 暗链指向会指向不正规的网站甚至是非法网站,这些网站存在欺诈、木马、钓鱼,会间接危害普通用户。
    2. 暗链所指向的网站主要有博彩、色情、股票内幕信息和网游外挂等不良信息。
  • 修复建议

    1. 挂链的基本原理是利用 CMS 漏洞、中间件漏洞、编辑器相关漏洞。
    2. 建议站点管理员时刻关注相应 web 服务的安全升级公告,及时更新相关应用及插件。

黑产#

网页木马后门 / Webshell

漏洞评级建议: 高危

漏洞类型: 入侵痕迹

  • 详情

    经渗透测试发现目标站点存在 webshell,攻击者可直接爆破口令使用木马,非常低成本的进行恶意操作。

  • 造成的危害

    攻击者可在利用该 webshell 来执行任意命令,写入后门,从而入侵服务器,获取服务器权限,直接导致服务器沦陷。

  • 修复建议

    1. 确认并删除木马文件,并进行本地文件漏洞扫描排查是否还存在有其他木马。
    2. 发现并及时修复已存在的漏洞。
    3. 通过查看日志、服务器杀毒等安全排查,确保服务器未被留下后门。

IDOR#

未授权访问

漏洞评级建议: 视情况而定,水平越权默认中危,垂直越权默认高危

漏洞类型: 访问控制缺陷

  • 详情

    渗透测试过程中,发现目标部分页面无需认证即可访问,没有对网站敏感页面进行登录状态、访问权限的检查,导致攻击者可未授权访问,获取敏感信息及进行未授权操作。

  • 造成的危害

    攻击者可在没有认证的情况下直接操作对应的 API 接口,可直接被非法增删改次数据。且因为攻击是在未认证下进行的,所以后续无法通过定位用户进行异常排查。

  • 修复建议

    1. 日常开发中要多留意业务逻辑可能出现的漏洞和水平权限漏洞或者其它未发现的漏洞。
    2. 鉴权,服务端对请求的数据和当前用户身份做校验;完善基础安全架构,完善用户权限体系。
    3. 对于后台接口,确保所有 API 接口先经过登录控制器。
    4. 在验证用户身份权限前不进行任何数据的交互。

越权访问漏洞

漏洞评级建议: 视情况而定,水平越权默认中危,垂直越权默认高危

漏洞类型: 访问控制缺陷

  • 详情

    越权漏洞是指应用程序未对当前用户操作的身份权限进行严格校验,导致用户可以操作超出自己管理权限范围的功能,从而操作一些非该用户可以操作的行为。

    • 水平越权
      • 攻击者可以访问与他拥有相同权限的用户的资源,资源权限 ID 不变,资源归属 ID 改变;
    • 垂直越权
      • 低级别攻击者可以访问高级别权限用户的资源,资源权限 ID 不变,资源归属 ID 改变;
      • 低级别攻击者可以访问高级别权限用户的资源,资源权限 ID 改变,资源归属 ID 不变;
  • 造成的危害

    • 水平越权
      • 水平越权会导致同一层级间的用户可以互相访问到对方的敏感信息,如姓名、手机号、联系地址、个人资料、订单记录等。同时还可能会以其他平级权限用户的身份来执行某行功能,如删除,添加,修改等。
    • 垂直越权
      • 垂直越权漏洞会导致低权限用户用来执行高权限用户的功能,获取高权限用户的账号信息,执行高权限用户的操作功能。
  • 修复建议

    1. 设置目录访问权限。
    2. 日常开发中要多留意业务逻辑可能出现的漏洞和水平权限漏洞或者其它未发现的漏洞。
    3. 鉴权,服务端对请求的数据和当前用户身份做校验;完善基础安全架构,完善用户权限体系。
    4. 通过修改配置文件,禁止中间件(如 IIS、apache、tomcat)的文件目录索引功能。
    5. 对于后台接口,确保所有 API 接口先经过登录控制器。
    6. 在验证用户身份权限前不进行任何数据的交互。
    7. 严格校验当前用户操作与当前登录用户身份权限是否匹配。

支付数据可被篡改

漏洞评级建议: 高危

漏洞类型: 参数控制缺陷

  • 详情

    填写完缴款页面,在进入网银缴费页面前,确认缴费信息时,可通过 burpsuite 软件篡改本地缴费金额,欺骗本地缴费系统,以达到以少付多的效果。

  • 造成的危害

    例如某机关单位张三缴款时利用该漏洞缴款 100000 元,本地篡改数据为 0.1 元,即可完成只花费 0.1 元实现 100000 元的缴款。

  • 修复建议

    1. 对支付数据表进行数据包加密;
    2. 对提交数据包做数据签名处理,保证支付数据参数无法修改;
    3. 服务端效验客户端提交的参数;
    4. 服务端严格校验支付参数的合法性,比如金额、数量的长度,金额、数量的正负等;
    5. 对于用户提交的数据,应从数据库重新拉取,并校验用户提交与用户所有是否匹配;
    6. 对于多线程等并发问题,可以先打入队列,在与数据库交互;

短信验证码接口可被爆破

漏洞评级建议: 中危

漏洞类型: 参数控制缺陷

  • 详情

    在用户注册页面, 其发所短信验证码接口未做限制,导致重复发包时可以绕过前台时间限制,对单个用户多次发送验证码。

  • 造成的危害

    攻击者可以重复 post 请求,针对某手机号进行短信轰炸。

  • 修复建议

    1. 将短信验证码时间限制判断放在后端进行。
    2. 同一手机号,60 秒内不能重复发送,24 小时内总共发送不超过 5 次。
    3. 加上 IP 限制,例如某 IP 一小时内连续登录发送 3 次,6 个小时内禁止该 ip 发送。

短信验证码接口可被遍历

漏洞评级建议: 中危

漏洞类型: 参数控制缺陷

  • 详情

    在用户注册页面, 由于没有对短信或者邮件发送次数进行限制,导致可无限次发送短信或邮件给用户,从而造成短信轰炸。

  • 造成的危害

    攻击者可以重复 post 请求,针对某手机号进行短信轰炸。

  • 修复建议

    1. 将短信验证码时间限制判断放在后端进行。
    2. 在服务器限制发送短信或邮件的频率,如同一账号 1 分钟只能发送 1 次短信或邮件,一天只能发送 3 次。
    3. 加上 IP 限制,例如某 IP 一小时内连续登录发送 3 次,6 个小时内禁止该 ip 发送。

验证码回显

漏洞评级建议: 高危

漏洞类型: 逻辑缺陷

  • 详情

    渗透测试过程中,在短信发送模块发现其在回包中包含了相应的验证码。

  • 造成的危害

    攻击者可以通过该漏洞,绕过验证码机制,取得相应权限。

  • 修复建议

    1. 不要将验证码回显给前端。

批量用户注册

漏洞评级建议: 中危

漏洞类型: 参数控制缺陷

  • 详情

    目标网站注册页面无认证码,通过抓包修改账号参数,即可批量注册,即使手机号、身份证相同也可成功。

  • 造成的危害

    攻击者可通过脚本批量注册用户,造成系统资源的浪费和占用.

  • 修复建议

    1. 在注册页面加上验证码。
    2. 后台再次确认数据唯一性。

中间件 / 服务#

XXX 中间件存在 XXX 远程代码执行漏洞

漏洞评级建议: 紧急

漏洞类型: 代码执行

  • 详情

    渗透测试过程中,发现目标站点存在 XXX 远程代码执行漏洞,该漏洞可以远程执行任意代码。

  • 造成的危害

    由于该漏洞影响范围较广,漏洞危害程度严重,可造成直接获取应用系统所在服务器的控制权限。

  • 修复建议

    及时更新网站 XXX 应用或更新相应补丁。具体修复方案参考官方的安全公告。

CVE-2021-44228 log4j2 rce 漏洞

漏洞评级建议: 紧急

漏洞类型: 代码执行

  • 详情:

    Apache Log4j2 是一个基于 Java 的日志记录工具。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。由于 Apache Log4j2 lookup 功能存在递归解析功能,攻击者可直接构造恶意请求,当程序将用户输入的数据进行日志记录时,⽆需进⾏特殊配置,即可触发远程代码执⾏。

  • 造成的危害:

    由于该漏洞影响范围较广,漏洞危害程度严重,在部分情况下可造成直接获取应用系统所在服务器的控制权限。

  • 修复建议:

FineReport(帆软)报表系统目录遍历漏洞

漏洞评级建议: 高危

漏洞类型: 信息泄露

  • 详情

    FineReport 报表软件是一款纯 Java 编写的、集数据展示 (报表) 和数据录入 (表单) 功能于一身的企业级 web 报表工具,它 “专业、简捷、灵活” 的特点和无码理念,仅需简单的拖拽操作便可以设计复杂的中国式报表,搭建数据决策分析系统。在帆软报表插件中存在目录遍历漏洞。

  • 造成的危害

    攻击者通过利用 FineReport 存在的目录遍历漏洞就可以绕过服务器的安全限制,访问任意的文件(可以是 web 根目录以外的文件),甚至执行系统命令。

  • 修复建议

    及时更新 FineReport 到官方最新版本。
    http://www.finereport.com/product/download

Struts2 反序列化漏洞

漏洞评级建议: 紧急

漏洞类型: 代码执行

  • 详情:

    在渗透测试过程中发现目服务中间件 Apache Struts2 存在远程代码执行漏洞,攻击者可以将恶意代码通过传递构造恶意代码的字段传递给存在漏洞的服务器,导致任意代码执行漏洞。

  • 造成的危害:

    攻击者可以构造恶意信息,服务器收到该恶意代码后解析出的命令可能会造成信息泄露或者被攻击者直接用拿下主机服务器等安全风险。

  • 修复建议:

    请及时安装 Struts2 中间件的最新版本 http://struts.apache.org/download.cgi

Ghostcat (CVE-2020-1938) 漏洞

漏洞评级建议: 高危

漏洞类型: 文件包含

  • 详情

    渗透测试过程中,发现目标存在 Ghostcat 漏洞。该漏洞允许黑客远程访问 Apache Tomcat 服务器,获取系统源代码。

  • 造成的危害

    该漏洞位于 Apache Tomcat 软件的 AJP 协议中,该漏洞允许未经身份验证的攻击者远程访问服务器上部署的应用程序和源代码文件。

  • 修复建议

    针对 CVE-2020-1938 漏洞,Apache Tomcat 官方已放出相应的修复新版本,建议及时安装官方新版本。

iis 短文件名泄露漏洞

漏洞评级建议: 低危

漏洞类型: 信息泄露

  • 详情

    目标存在 IIS 短文件名泄露漏洞。攻击者可利用此漏洞枚举网络服务器根目录中的文件。

  • 造成的危害

    攻击者可以利用该漏洞猜解后台地址和敏感文件甚至直接下载对应文件,或对 IIS 服务器中的 .Net Framework 进行拒绝服务攻击。

  • 修复建议
    修改 Windows 配置,关闭短文件名功能。

    1. 关闭 NTFS 8.3 文件格式的支持。该功能默认是开启的,对于大多数用户来说无需开启。
    2. 如果是虚拟主机空间用户,可采用以下修复方案:
      • 修改注册列表 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation 的值为 1 (此修改只能禁止 NTFS8.3 格式文件名创建,已经存在的文件的短文件名无法移除)。
      • 如果你的 web 环境不需要 asp.net 的支持你可以进入 Internet 信息服务 (IIS) 管理器 --- Web 服务扩展 - ASP.NET 选择禁止此功能。
      • 升级 net framework 至 4.0 以上版本。
      • 将 web 文件夹的内容拷贝到另一个位置,比如 D:\www 到 D:\www.back,然后删除原文件夹 D:\www,再重命名 D:\www.back 到 D:\www。如果不重新复制,已经存在的短文件名则是不会消失的。

Elasticsearch 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 漏洞描述:

    由于 Elasticsearch 授权模块需要付费,所以免费开源的 Elasticsearch 可能存在未授权访问漏洞。该漏洞导致,攻击者可以拥有 Elasticsearch 的所有权限。可以对数据进行任意操作。

  • 危害:

    攻击者通常可以请求一个开放 9200 或 9300 的端口对服务器进行恶意攻击。业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。

  • 修复建议:

    1. 限制 IP 访问,绑定固定 IP。
    2. 在 config/elasticsearch.yml 中为 9200 端口设置认证。

Kibana 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 漏洞描述:

    Kibana 是一个开源的数据分析和可视化平台,旨在与 Elasticsearch 协同工作,帮助分析师通过图形的方式来理解复杂的数据流动。Kibana 拥有一个基于浏览器的管理界面,可实时从 Elasticsearch 中获取数据,然后执行高级数据分析,最后将结果以图表,表格和地图的形式呈现出来。在默认设置下,Kibana 会开放在端口 5601 上。

  • 危害:

    Kibana 本身没有任何安全性设置,在默认配置下,Kibana 就可以访问 Elasticsearch 中的所有数据。

  • 修复建议:

    1. 设置防火墙策略,仅允许指定的 IP 来访问服务。
    2. 通过 nginx 设置反向代理,设置密码登录验证。
    3. 设置 kibana 监听本地地址,并设置 ElasticSearch 登录的账号和密码。
    4. 使用 htpasswd 创建 kibana 登录的账号密码,这里可以复用 ElasticSearch 创建的账号密码,也可以重新创建一 个。
    5. 配置 nginx 反向代理,配置好后,重启 nginx 和 kibana,通过 15601 登录验证访问 Kibana。

Shiro 反序列化

漏洞评级建议: 紧急

漏洞类型: 代码执行

  • 详情

    Apache Shiro 框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的 cookie。在服务端对 rememberMe 的 cookie 值,先 base64 解码然后 AES 解密再反序列化,就导致了反序列化 RCE 漏洞。

  • 造成的危害

    由于该漏洞影响范围较广,漏洞危害程度严重,可造成直接获取应用系统所在服务器的控制权限。

  • 修复建议

    对于 shiro 应用,管理员需及时关注官方的安全公告 https://issues.apache.org/jira/projects/SHIRO/issues

Druid Monitor 未授权访问

漏洞评级建议: 低危 若可以利用 session 为高危

漏洞类型: 访问控制缺陷

  • 详情

    Druid 是一款开源的,为监控而生的数据库连接池,并且 Druid 提供监控功能,监控 SQL 的执行时间、监控 Web URI 的请求、Session 监控。开发者配置不当时就可能造成未授权访问。

  • 造成的危害

    在 session 监控中,可以获取网站用户的 session,从而伪造用户 session 进行登录。

  • 修复建议

    做好权限的控制,不允许未登录的用户直接访问 Druid Monitor 页面。

Spring Actuator 组件未授权访问

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    目标站点使用了 Spring Actuator 组件,在使用默认配置的情况下会导致未授权访问漏洞.

    当存在 heapdmup 端点时,通过 JVM 分析工具可以获取应用对象的配置敏感信息,可能导致大量敏感信息泄露。

  • 造成的危害

    攻击者通过未授权访问,可以获取大量敏感信息,严重情况下,甚至可以获取到 webserver 的控制权限。

  • 修复建议

    1. 禁用所有接口,将配置改为: endpoints.enable=false
    2. 引入 spring-boot-starter-security 依赖
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      
    3. 在 application.properties 中指定 actuator 的端口以及开启 security 功能,配置访问权限验证,这时再访问 actuator 功能时就会弹出登录窗口,需要输入账号密码验证后才允许访问。
      management.port=8099
      management.security.enabled=true
      security.user.name=admin
      security.user.password=admin
      

solr 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    目标 solr 的管理界面没有认证机制,未授权的攻击者可以直接访问到管理界面。

  • 造成的危害

    solr 的管理界面通常包含如下信息:solr 的配置信息(包括路径,用户名,系统版本信息),数据库的配置信息(地址,用户名,密码),数据库搜索数据等。 solr 未授权访问的危害很大,轻则可查询所有 数据库 信息,重则可读取系统任意文件,甚至 getshell.

  • 修复建议

    1. 添加 Apache Solr 访问权限控制。
    2. 禁止外网或白名单以外的 IP 访问 solr/admin 目录。

CVE-2017-1000486 PrimeFaces 5.x 表达式注入

漏洞评级建议: 紧急

漏洞类型: 访问控制缺陷

  • 详情

    目标存在 CVE-2017-1000486 PrimeFaces 5.x 表达式注入漏洞.

  • 造成的危害

    攻击者可以构造恶意信息,服务器收到该恶意代码后解析出的命令可能会造成信息泄露或者被攻击者直接用于控制主机服务器等安全风险。

  • 修复建议

    1. 升级 Primefaces 组件。
    2. 过滤不安全的输入值。

CVE-2019-16097

漏洞评级建议: 高危

漏洞类型: 逻辑缺陷

  • 详情

    目标 harbor 存在任意管理员注册漏洞,攻击者在请求中构造特定字符串,在未授权的情况下可以直接创建管理员账号,从而接管 Harbor 镜像仓库。

  • 造成的危害

    攻击者通过在请求中添加关键参数,即可利用该漏洞创建管理员账户,从而接管 Harbor 镜像仓库。

  • 修复建议

    1. 升级 Harbor 版本到 1.7.6 和 1.8.3。

CVE-2020-13935 DOS 漏洞

漏洞评级建议: 高危

漏洞类型: DOS漏洞

  • 详情:

    攻击者发送大量特定请求导致在影响版本范围内的使用 Websocket 协议的 Tomcat 服务器无法响应。

  • 造成的危害:

    Apache Tomcat WebSocket 拒绝服务漏洞是由于 WebSocket 帧中的攻击载荷长度未正确验证导致,无效的攻击载荷长度可能会触发无限循环,如果有大量的包含无效攻击载荷长度的请求发生,可能会导致拒绝服务。

  • 修复建议:

    1. 官方已发布漏洞修复版本,检查您的 Tomcat 服务器是否在受影响版本范围。
    2. 检查你的网站或系统是否使用到 Websocket 协议,如受影响,请你选择合理时间进行升级操作,升级到修复版本,避免影响业务。

C/S#

数据库#

Oracle 远程数据投毒漏洞 (CVE-2012-1675)

漏洞评级建议: 低危

漏洞类型: 信息泄露

  • 详情

    服务器存在 oracle 远程数据投毒漏洞,该漏洞可以远程获取到 oracle 的内存信息,若是能获取到内存中的数据即为存在漏洞,进而可以再爆破 oracle 的 SID。

  • 造成的危害

    攻击者可以在不需要用户名密码的情况下利用网络中传送的数据消息 (包括加密或者非加密的数据),如果结合 (CVE-2012-3137 漏洞进行密码破解) 从而进一步影响甚至控制局域网内的任何一台数据库。

  • 修复建议

    1. 不应该使用安装 Oracle 时默认的 SID (ORCL),应该设置复杂度较高的 SID。
    2. 对于短时间内难以通过第 1 种方式修补漏洞的情况,应考虑加强主机和网络层面的访问控制策略。例如采用白名单的方式,仅允许授权主机 IP 访问该端口,避免漏洞被攻击者恶意利用。
    3. 针对该漏洞,oracle 给出了不同环境的解决方法:http://www.oracle.com/technetwork/topics/security/alert-cve-2012-1675-1608180.html

Redis 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

  • 造成的危害

    攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的 config 命令,可以进行写文件操作,攻击者可以成功将自己的 ssh 公钥写入目标服务器的 /root/.ssh 文件夹的 authotrized_keys 文件中,进而可以使用对应私钥直接使用 ssh 服务登录目标服务器、添加计划任务、写入 Webshell 等操作。

  • 修复建议

    1. 禁用一些高危命令,常见如:flushdb,flushall,config,keys 等。
    2. 禁止使用 root 权限启动 redis 服务,以低权限运行 Redis 服务。
    3. 对 redis 访问启动密码认证。
    4. 禁止外网访问 Redis。
    5. 添加 IP 访问限制,并更改默认 6379 端口。
    6. 保证 authorized_keys 文件的安全。

Mongodb 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    目标 Mongodb 服务存在未授权访问漏洞,开启 MongoDB 服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。

  • 造成的危害

    使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登录到数据服务器。

  • 修复建议

    1. 为 MongoDB 添加认证:MongoDB 启动时添加 --auth 参数、为 MongoDB 添加用户。
    2. MongoDB 自身带有一个 HTTP 服务和并支持 REST 接口。在 2.6 以后这些接口默认是关闭的。mongoDB 默认会使用默认端口监听 web 服务,一般不需要通过 web 方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择 -nohttpinterface 参数 nohttpinterface=false。
    3. 启动时加入参数 --bind_ip 127.0.0.1 或在 /etc/mongodb.conf 文件中添加以下内容:bind_ip = 127.0.0.1。

Memcahce 未授权访问

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    目标 Memcahce 服务存在未授权访问漏洞,Memcached 端口对外开放并且没有配置认证选项,未授权用户可直接获取数据库中所有信息,造成严重的信息泄露。

  • 造成的危害

    除 memcached 中数据可被直接读取泄漏和恶意修改外,由于 memcached 中的数据像正常网站用户访问提交变量一样会被后端代码处理,当处理代码存在缺陷时会再次导致不同类型的安全问题。不同的是,在处理前端用户直接输入的数据时一般会接受更多的安全校验,而从 memcached 中读取的数据则更容易被开发者认为是可信的,或者是已经通过安全校验的,因此更容易导致安全问题。

  • 修复建议

    1. 配置 memcached 监听本地回环地址 127.0.0.1。
    vim /etc/sysconfig/memcached
    OPTIONS="-l 127.0.0.1"  # 设置本地为监听
    /etc/init.d/memcached restart   # 重启服务
    
    2. 当 memcached 配置为监听内网 IP 或公网 IP 时, 使用主机防火墙(iptalbes、 firewalld 等)和 网络防火墙对 memcached 服务端口 进行过滤。
    

influxdb 未授权访问

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    InfluxDB 是一个使用 Go 语言编写的开源分布式,支持高并发的时序数据库,其使用 JWT 作为鉴权方式。在用户开启了认证,但未设置参数 shared-secret 的情况下,JWT 的认证密钥为空字符串。

  • 造成的危害

    攻击者可以伪造任意用户身份在 InfluxDB 中执行 SQL 语句。

  • 修复建议

    1. 为 influxdb 配置身份验证.
    2. 配置仅白名单范围内 IP 允许访问服务.

远程服务#

CVE-2018-15473 OpenSSH 用户枚举漏洞

漏洞评级建议: 低危

漏洞类型: 信息泄露

  • 详情

    通过向 OpenSSH 服务器发送一个错误格式的公钥认证请求,可以判断是否存在特定的用户名。如果用户名不存在,那么服务器会发给客户端一个验证失败的消息。如果用户名存在,那么将因为解析失败,不返回任何信息,直接中断通讯。

  • 造成的危害

    由于 SSH 本身的认证机制存在缺陷,导致攻击者可以使用字典,暴力枚举 SSH 存在的用户名 (Username)。

  • 修复建议

    升级 openssh。

VNC 未授权

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    目标机器开放了 5900,5901,5902 等 VNC 端口,但并未设置 VNC 密码,可以使用 VNC 客户端直接连上去进行操作。

  • 造成的危害

    攻击者可以获取目标机器的桌面权限,若目标未锁屏或登出,即可执行任意恶意操作,获取敏感信息等。

  • 修复建议

    1. 设置 VNC 服务的密码。
    2. 限制白名单 IP 连接到对应的 VNC 端口。

文件服务#

CVE-1999-0554 目标主机 showmount -e 信息泄露

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    目标服务器由于错误的 nfs 配置,可以对目标主机进行 "showmount -e" 操作。

  • 造成的危害

    NFS 服务配置漏洞将泄露目标主机大量敏感信息,比如目录结构。更糟糕的是,如果访问控制不严的话,攻击者有可能直接访问到目标主机上的数据。

  • 修复建议

    1. 修改 NFS 配置文件,限制可以获取 NFS 输出列表的 IP 和用户。
    2. 除非绝对必要,请关闭 NFS 服务、MOUNTD。

SMB 弱口令

漏洞评级建议: 高危

漏洞类型: 弱口令漏洞

  • 详情

    渗透测试过程中,发现远程 SMB Server 允许以弱口令组合登录。

  • 造成的危害

    这可能允许攻击者上传恶意文件或者下载敏感文件。

  • 修复建议

    1. 不要使用常见的弱口令作为密码。
    2. 定期修改密码。
    3. 及时 SMB 服务更新到最新版本。
    4. 对采用白名单的方式,仅允许授权主机 IP 访问该端口,避免漏洞被攻击者恶意利用。

分布式#

Hadoop 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    该问题产生是由于管理员在配置失误所致,导致直接开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口。

  • 造成的危害

    黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。

  • 修复建议

    1. 如无必要,关闭 Hadoop Web 管理页面。
    2. 开启身份验证,防止未经授权用户访问。
    3. 设置 “安全组” 访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口。

ZooKeeper 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。在通常情况下,zookeeper 允许未经授权的访问。

  • 造成的危害

    攻击者渗透中遇到 ZooKeeper 集群后,可以查找事务日志来获取 admin 的密码或者其他敏感资源的认证方法。用户或者客户端根本不需要任何的认证就可以连上 ZooKeeper 的服务端,并且可以对 znode 进行增删等操作。这样数据是非常不安全的,极易被攻击和篡改。

  • 修复建议

    1. 修改 ZooKeeper 默认端口,采用其他端口服务。
    2. 添加访问控制,配置服务来源地址限制策略。
    3. 增加 ZooKeeper 的认证配置。

虚拟化 & 云平台#

Docker Remote API 未授权访问漏洞

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情:

    目标 Docker Remote API 配置不当可导致未授权访问,可被攻击者恶意利用。

  • 危害:

    攻击者无需认证即可访问到 Docker 数据,可能导致敏感信息泄露,黑客也可以删除 Docker 上的数据。攻击者可进一步利用 Docker 自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。

  • 修复方法:

    1. 修改 Docker Remote API 服务默认参数。
    2. 修改 Docker 的启动参数:定位到 DOCKER_OPTS 中的 tcp://0.0.0.0:2375,将 0.0.0.0 修改为 127.0.0.1 或将默认端口 2375 改为自定义端口为 Remote API 设置认证措施。
    3. 设置防火墙策略。如果正常业务中 API 服务需要被其他服务器来访问,可以配置安全组策略或 iptables 策略,仅允许指定的 IP 来访问 Docker 接口。
    4. 修改 Docker 服务运行账号。请以较低权限账号运行 Docker 服务;另外,可以限制攻击者执行高危命令。

    总之、不要将端口直接暴露在公网,内网中使用需要设置严格的访问规则.

Kubelet 未授权访问

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    kubelet 是在 Node 上用于管理本机 Pod 的,kubectl 是用于管理集群的。kubectl 向集群下达指令,Node 上的 kubelet 收到指令后以此来管理本机 Pod。Kubelet 服务启动后会监听多个端口,用于接收 Kubernetes API Server 组件发送的请求,目标 Kubelet 端口存在未授权访问.

  • 造成的危害

    攻击者可以通过暴露出来的接口服务获取容器的权限,甚至通过创建自定义的容器获取宿主机的权限。

  • 修复建议

    1. 将 Kubelet 组件的启动参数 --anonymous-auth 值设为 false,即不允许匿名访问
    2. 将 Kubelet 组件的启动参数 --authorization-mode 值设为 Webhook
    3. 如非业务需要,可以关闭 Web 端口的服务,保持最小化原则,避免安全风险的产生。

Kubernetes API Server 未授权访问

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    Kubernetes API Server 可以在两个端口上提供了对外服务:8080(insecure-port,非安全端口)和 6443(secure-port,安全端口),其中 8080 端口提供 HTTP 服务且无需身份认证,6443 端口提供 HTTPS 服务且支持身份认证 (8080 和 6443 端口并不是固定的,是通过配置文件来控制的)。如果 8080 在外部环境中被暴露出来,攻击者便可以利用此端口进行对集群的攻击。

  • 造成的危害

    如果将该端口暴露,那么任何网络可达的攻击者都能够通过该端口直接与 API Server 交互,进而控制整个集群。

  • 修复建议

    1. 禁止在 Kubernetes APIServer 组件的配置文件中修改 --insecure-port 启动参数值为 8080,使用默认配置值
    2. 禁止在 Kubernetes APIServer 组件的配置文件中修改 --insecure-bind-address 启动参数值为 0.0.0.0,使用默认配置值
    3. 使用 API Server 的安全端口(6443),并为其设置证书

Kubernetes Dashboard 未授权访问

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    Kubernetes Dashboard 是一个通用的,基于 Web 的 Kubernetes 集群用户界面。它允许用户管理集群中运行的应用程序,并对其进行故障排除,以及管理集群本身。在其早期版本中(v1.10.1 之前)存在未授权访问风险。

  • 造成的危害

    所有能够访问到宿主机的用户,包括攻击者,都将能够直接访问 Dashboard,存在信息泄漏风险。

  • 修复建议

    1. 将 KubernetesDashboard 升级至高于 v1.10.1 的版本

etcd 未授权

漏洞评级建议: 高危

漏洞类型: 访问控制缺陷

  • 详情

    etcd 是 k8s 集群中的数据库组件,默认监听在 2379 端口。如果 2379 没有指定证书校验,没有实施访问控制,那么就存在未授权。

  • 造成的危害

    恶意攻击者可以通过 etcd 查询集群内管理员的 token,然后用这个 token 访问 api server 接管集群。

  • 修复建议

    1. 在启动 etcd 时,指定 --client-cert-auth 参数打开证书校验
    2. 通过 iptables / 防火墙等实施访问控制

OS#

windows#

MS12-020

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情

    MS12-020 漏洞是微软在 12 年发布的一个 windows 系统漏洞,该漏洞针对于 windows xp 和 windows sever 2003 等系统。攻击者通过该漏洞对目标主机进行攻击,可导致目标主机蓝屏。

  • 造成的危害

    远程攻击者在未经认证的情况下往服务器发送畸形恶意的数据包,便可以以系统权限或者 NET SERVICE 权限执行任意命令。

  • 修复建议

    针对 MS12-020 漏洞,微软官方已放出相应的补丁,建议及时安装官方补丁:http://technet.microsoft.com/en-us/security/bulletin/ms12-020

MS14-066

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情

    目标主机存在 MS14-066 漏洞,由于安全通道(Schannel)安全包对包的处理不当,远程 Windows 主机受到远程代码执行漏洞的影响。

  • 造成的危害

    攻击者可以通过将特制数据包发送到 Windows 服务器来利用此漏洞。

  • 修复建议

    针对 MS14-066 漏洞,微软官方已放出相应的补丁,建议及时安装官方补丁:https://docs.microsoft.com/en-us/security-updates/securitybulletins/2014/ms14-066

MS15-034

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情

    目标主机存在 MS15-034 漏洞,如果攻击者向受影响的 Windows 系统发送经特殊设计的的 HTTP 请求,此漏洞可能允许远程执行代码。

  • 造成的危害

    利用 HTTP.sys 的安全漏洞,攻击者只需要发送恶意的 http 请求数据包,就可能远程读取 IIS 服务器的内存数据,或使服务器系统蓝屏崩溃。

  • 修复建议

    针对 MS15-034 漏洞,微软官方已放出相应的补丁,建议及时安装官方补丁:https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2015/ms15-034

MS17-010

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情

    目标主机存在 MS17-010 漏洞。如果攻击者向 Windows SMBv1 服务器发送特殊设计的消息,那么可能允许远程执行代码。

  • 造成的危害

    该漏洞是 Windows 的 SMB 服务处理 SMB v1 请求时发生的漏洞,这个漏洞导致攻击者可以使用该漏洞使目标机器反代连接到 cc 服务器,进行远程控制主机、在局域网传播木马等破坏行为。

  • 修复建议

    针对 MS17-010 漏洞,微软官方已放出相应的补丁,建议及时安装官方补丁:https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/ms17-010

CVE-2019-0708 漏洞

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情

    目标主机存在 Windows 高危远程漏洞 CVE-2019-0708。当未经身份验证的攻击者使用 RDP 连接到目标系统并发送经特殊设计的请求时,远程桌面服务(以前称为 “终端服务”)中存在远程执行代码漏洞。此漏洞是预身份验证,无需用户交互。

  • 造成的危害

    攻击者一旦成功利用该漏洞,便可以在目标系统上执行任意代码,包括获取敏感信息、执行远程代码、发起拒绝服务攻击等等攻击行为。

  • 修复建议

    针对 CVE-2019-0708 漏洞,Microsoft 已经为此发布了一个安全公告以及相应补丁:
    https://portal.msrc.microsoft.com/zh-CN/security-guidance/advisory/CVE-2019-0708
    https://support.microsoft.com/en-us/help/4500331/windows-update-kb4500331
    

Linux#

CVE-2016-5195

漏洞评级建议: 高危

漏洞类型: 内核提权

  • 详情

    该漏洞是 Linux 内核的内存子系统在处理写时拷贝 (Copy-on-Write) 时存在条件竞争漏洞,导致可以破坏私有只读内存映射。

  • 造成的危害

    黑客可以获取低权限的本地用户后,利用此漏洞获取其他只读内存映射的写权限,进一步获取 root 权限。

  • 修复建议

    及时更新 linux 系统内核至最新版本。


Protocol#

SNMP 默认团体字符串可被枚举

漏洞评级建议: 低危

漏洞类型: 认证缺陷

  • 详情

    渗透测试过程中,发现目标 SNMP 服务配置了默认的团体字符串,snmp 是用来进行网络管理的。cacti 和 mrtg 等监控工具都是基于 snmp 协议。

  • 造成的危害

    snmp 弱口令或者口令泄漏引起的安全问题:一是信息泄漏,二是设备的配置可能被修改从而被他人控制。

  • 修复建议

    1. 修改 SNMP 的默认团体字符串,使用强度更高的字符串。
    2. 开启 snmp 服务的设备采用 snmp v3 用户,因为 snmp v3 支持用户认证与加密,安全性更好、更可靠。

不安全的 SSL:过于广泛的信任证书

漏洞评级建议: 信息

漏洞类型: 错误的证书验证

  • 修复建议:

    以 JAVA 语言源代码为例,不要直接使用默认的 URLConnection 建立 SSL/TLS 连接,建议使用 HttpsURLConnection 进行替代,并对证书进行判断和处理。

不安全的 SSL:使用默认证书

漏洞评级建议: 信息

漏洞类型: 错误的证书验证

  • 修复建议:
    降低对预加载的系统证书的信任级别,包括:
    1. 自定义信任锚:使用仅包含您要信任的证书的自定义密钥库。
    2. 证书固定:信任默认证书,但验证并强制证明证书链中存在后端服务器使用的证书。 或者,可以验证(固定)公钥。
    

不安全的 SSL:版本过低

漏洞评级建议: 信息

漏洞类型: 错误的证书验证

  • 详情:

    SSL 协议是 HTTP 的补充,使用加密等方法让 HTTP 更安全;TLS 是基于 SSL v3 的升级版协议,目前版本发展为 v1.0 v1.1 v1.2。当前 TLS 版本过低,存在许多严重漏洞,这些漏洞使得目标存在被攻击的风险。

  • 造成的危害:

    使用老旧的弱加密算法,信息将存在被中间人攻击和窃取的风险。

  • 修复建议:

    使用严格的 https 证书,升级 ssl 到最新的版本。

SSL RC4 Cipher Suites Supported (Bar Mitzvah)

漏洞评级建议: 信息

漏洞类型: 配置缺陷


安卓#

程序源文件安全#

加固壳识别

漏洞评级建议: 高危

  • 详情:

    检测 App 程序采用了何家厂商的加固方案。

  • 造成的危害:

    针对 Android 平台应用所面临的反编译和二次打包问题,对应用进行加固是目前最有效的解决方案。由于通用加固方案的加固强度较低、加固方式较为普遍,无法有效防止反编译工具的破解,或者容易被脱壳并且反编译,因此,建议采用企业级定制化加固方案,有效地保护源代码安全和防止篡改及二次打包风险。

  • 检测结果:

    该 App 程序已经使用 XXX 的加固方案。

Java 代码反编译风险

漏洞评级建议: 高危

  • 详情:

    检测 java 层代码是否存在源代码被反编译而泄露的风险。

  • 造成的危害:

    Apk 如果未采取有效的保护措施,可能面临被反编译的风险。反编译是将二进制程序转换成人们易读的一种描述语言的形式。反编译的结果是应用程序的代码,这样就暴露了客户端的所有逻辑,比如与服务端的通讯方式,加解密算法、密钥,转账业务流程、软键盘技术实现等等。攻击者可以利用这些信息窃取客户端的敏感数据,包括手机号、密码;截获与服务器之间的通信数据;绕过业务安全认证流程,直接篡改用户账号信息;对服务器接口发起攻击等。

  • 检测结果:

    该 Apk 已经被加固或是采用其他防反编译方案,反编译 Java 代码失败。

  • 修复建议:

    1. 代码混淆,即使用代码混淆的工具,将程序结构打乱,这样即使源代码被反编译了,仍然很难梳理出程序的正常逻辑结构。
    2. 代码隔离。即在别的服务器上仅仅存放页面的代码,实际的应用程序访问到自己的服务器上。这种保护效果也比较好,问题就是,如果被部署服务器和访问服务器之间网络无法共通,那么此方法则不可行。
    3. 本地代码保护,通过本地加密技术动态生成可执行的 jar 包,将加密之后的应用发布,则在反编译时,需要输入密码,如果无密码,则无法解密。
    4. 通过加密工具进行加密,之后发布已经加密的包,通过 GO 语言生成的动态脚本执行启动命令。

So 文件破解风险

漏洞评级建议: 低危

  • 详情:

    检测 Apk 中的 so 文件是否可被破解读取。

  • 造成的危害:

    So 文件为 Apk 中包含的动态链接库文件,Android 利用 NDK 技术将 C/C++ 语言实现的核心代码编译为 so 库供 Java 层调用。So 被破解可能导致核心功能的汇编代码甚至源代码泄露,不仅损害开发者的知识产权,并且可能暴露了客户端的核心功能逻辑,攻击者可以利用这些信息窃取客户端的敏感数据,包括手机号、密码;截获与服务器之间的通信数据;绕过业务安全认证流程,直接篡改用户账号信息;对服务器接口发起攻击等。

  • 检测结果:

    该 App 应用中存在的 so 文件可被破解,导致核心源码泄露。

  • 修复建议:

    第三方支持:使用具有 so 文件保护功能的第三方专业加固方案,防止 so 文件被破解。

篡改和二次打包风险

漏洞评级建议: 高危

  • 详情:

    检测客户端的源代码、资源文件、配置文件等被篡改后,是否可以重新打包并正常运行。

  • 造成的危害:

    Apk 篡改后二次打包不仅已经严重危害开发者版权和经济利益,而且也使 app 用户遭受到不法应用的恶意侵害。对客户端程序添加或修改代码,修改客户端资源图片,配置信息、图标,添加广告,推广自己的产品,再生成新的客户端程序,可导致大量盗版应用的出现分食开发者的收入;恶意的二次打包还能实现应用钓鱼、添加病毒代码、添加恶意代码,从而窃取登录账号密码、支付密码,拦截验证码短信,修改转账目标账号、金额等等。

  • 检测结果:

    该 Apk 无法被篡改或者二次打包后无法运行。

  • 修复方案:

    1. Java 代码中加入签名校验。
    2. NDK 中加入签名校验。
    3. 利用二次打包工具本身的缺陷阻止打包。

Janus 签名机制漏洞

漏洞评级建议: 高危

  • 详情:

    检测 App 程序是否存在 Janus 签名机制漏洞。

  • 造成的危害:

    Google 披露了一个名为 “Janus” 的安卓漏洞(漏洞编号:CVE-2017-13156),该漏洞可以让攻击者绕过安卓系统的 Signature scheme V1 签名机制,用篡改过的 APK 覆盖原有的应用,并可访问原应用所有的数据,直接对 App 进行篡改。由于安卓系统的其他安全机制也是建立在签名和校验基础上的,所以可以说该漏洞相当于绕过了安卓系统的整个安全机制。该漏洞的影响范围:安卓 5.0-8.0 的各个版本系统;使用安卓 Signature scheme V1 签名的 App APK 文件。该漏洞的危害:对存储在原手机上的数据进行读取;对用户的输入做各种监听、拦截、欺诈,引导用户输入密码,转账;更新 Android 的系统 APP,从获得更高的系统权限,甚至 root / 越狱,为其他攻击做准备。

  • 检测结果:

    该 App 存在 Janus 签名机制漏洞。

  • 修复建议

    采用 Android signature scheme V2 签名机制。V2 签名校验整个 ZIP 文件,包括了 Central Directory 和 End of Central Directory 部分,因此只要修改了偏移量,V2 签名校验就会失败。
    尽快升级到最新版 Android 系统,更新安全补丁。

资源文件泄露风险

漏洞评级建议: 低危

  • 详情:

    检测 Apk 中的资源文件是否可被读取及篡改。

  • 造成的危害:

    Apk 中包含多种类型的资源文件,包括图标,图片,javascript 文件等,其中 js 文件中可能包含资源文件中的重要显示界面及执行,如果 js 文件被读取可能造成功能逻辑泄露,如果被篡改,可能被植入钓鱼页面或者恶意代码,造成用户的敏感信息泄露。

  • 检测结果:

    该 App 应用中的 js 类资源文件无法被读取。

  • 修复建议:

    对资源文件 (.js) 进行加密保护,防止资源文件泄露。

应用签名未校验风险

漏洞评级建议: 高危

  • 详情:

    检测 App 程序启动时是否校验签名证书。

  • 造成的危害:

    签名证书是对 App 开发者身份的唯一标识,开发者可利用签名证书有效降低 App 的盗版率。未进行签名证书的 App,可能被反编译后进行二次打包。重新打包签名的应用,可能导致 App 被仿冒盗版,影响其合法收入,甚至可能被添加钓鱼代码、病毒代码、恶意代码,导致用户敏感信息泄露或者恶意攻击。

  • 检测结果:

    该 App 应用重新签名后无法正常启动。

  • 修复建议:

    增加程序本地签名校验及云端的签名校验。

代码未混淆风险

漏洞评级建议: 中危

  • 详情:

    检测 App 程序的源代码是否已经经过混淆处理。

  • 造成的危害:

    代码混淆是一种用来隐藏代码结构及流程的技术,可以增加代码阅读的难度。代码混淆通过将 Java 代码中的方法名,变量名,类名,包名等这些元素名称改成毫无关联且无意义的名字(如单个字母或者无意义的组合),或者对简单的逻辑分支进行混淆,使攻击者难以找到函数调用的内容,无法掌控 app 内部实现逻辑,从而增加逆向工程和破解的难度。应用代码如果不经过混淆处理,一旦被反编译,源代码将直接暴露给攻击者,造成程序业务逻辑泄露、加解密算法失效、通信加密失效,攻击者可以利用这些信息窃取客户端的敏感数据,包括账号、密码;绕过业务安全认证流程,直接篡改用户账号信息;对服务器接口发起攻击等。虽然代码混淆并不能真正阻止逆向工程 ,但可以增大反编译代码被解读的难度。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的代码未混淆风险已被屏蔽。

  • 修复建议:

    对 Android 代码进行混淆,混淆器将代码中的所有变量、函数、类的名称加密为简短的英文字母代号,在 APP 被破解后增加破解者对代码的阅读难度。

使用调试证书发布应用风险

漏洞评级建议: 低危

  • 详情:

    检测 App 是否使用了调试证书发布应用。

  • 造成的危害:

    签名证书是验证应用开发者身份的关键标识,可用于判断 App 是否是由合法开发者发布的正版应用,并且 App 常使用签名校验作为防止 App 被二次打包的措施。使用调试证书发布应用,可能导致 App 无法在应用市场上架,并且 debug 证书的有效期仅有一年使用;使用 debug 证书发布的应用可能会出现各个版本的签名证书不一致的情况,这样会导致 App 应用无法成功升级;同时,证书的不一致性可能造成 App 使用的签名校验措施频繁改动或者被迫取消,最终导致应用被二次打包。

  • 检测结果:

    该应用使用了开发者的 release 证书发布应用。


本地数据存储安全#

Webview 明文存储密码风险

漏洞评级建议: 高危

  • 详情:

    检测 App 应用的 Webview 组件中是否使用明文保存用户名及密码。

  • 造成的危害:

    Android 的 Webview 组件中默认打开了提示用户是否保存密码的功能,如果用户选择保存,用户名和密码将被明文存储到该应用目录 databases/webview.db 中。而本地明文存储的用户名和密码,不仅会被该应用随意浏览,其他恶意程序也可能通过提权或者 root 的方式访问该应用的 webview 数据库,从而窃取用户登录过的用户名信息以及密码。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 Webview 组件明文保存用户名及密码风险已被屏蔽。若需获取该测评项目完整结果,请提交未加固的 Apk 重新进行检测。

Webview File 同源策略绕过漏洞

漏洞评级建议: 高危

  • 详情:

    检测 Apk 中 WebView 的 file 域协议是否存在同源策略绕过的漏洞。

  • 造成的危害:

    JavaScript 的延时执行能够绕过 file 协议的同源检查,并能够访问受害应用的所有私有文件,即通过 WebView 对 Javascript 的延时执行和将当前 Html 文件删除掉并软连接指向其他文件就可以读取到被符号链接所指的文件,然后通过 JavaScript 再次读取 HTML 文件,即可获取到被符号链接所指的文件。大多数使用 WebView 的应用都会受到该漏洞的影响,恶意应用通过该漏洞,可在无特殊权限下盗取应用的任意私有文件,尤其是浏览器,可通过利用该漏洞,获取到浏览器所保存的密码、Cookie、收藏夹以及历史记录等敏感信息,从而造成敏感信息泄露。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 webview File 同源策略绕过漏洞已被屏蔽。

明文数字证书风险

漏洞评级建议: 中危

  • 详情:

    检测客户端是否包含明文存储的数字证书文件。

  • 造成的危害:

    Apk 中使用的数字证书可被用来校验服务器的合法身份,以及在与服务器进行通信的过程中对传输数据进行加密、解密运算,保证传输数据的保密性、完整性。明文存储的数字证书如果被篡改,客户端可能连接到假冒的服务端上,导致用户名、密码等信息被窃取;如果明文证书被盗取,可能造成传输数据被截获解密,用户信息泄露,或者伪造客户端向服务器发送请求,篡改服务器中的用户数据或造成服务器响应异常。

  • 检测结果:

    该 Apk 中不存在明文存储的数字证书文件。

调试日志函数调用风险

漏洞评级建议: 低危

  • 详情:

    检测 App 程序中是否调用了调试日志函数。

  • 造成的危害:

    调试日志函数可能输出重要的日志文件,其中包含的信息可能导致客户端用户信息泄露,暴露客户端代码逻辑等,为发起攻击提供便利,例如:Activity 的组件名,是 Activity 劫持需要的信息;通信交互的日志,会成为发动服务器攻击的依据;跟踪的变量值,可能泄露一些敏感数据,输入的账号、密码等。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的日志函数调用已被屏蔽。

  • 修复建议:

    关闭调试日志函数调用,或者确保日志的输出使用了正确的级别,涉及敏感数据的日志信息在发布版本中被关闭。

数据库注入漏洞

漏洞评级建议: 高危

  • 详情:

    检测 App 应用的数据库是否存在 sql 注入漏洞。

  • 造成的危害:

    由于 Content provider 组件读写权限设置不当,并且未对 sql 查询语句的字段参数作过滤判断,app 本地数据库可能被注入攻击。这种风险可能导致存储的敏感数据信息被查询泄露,例如账户名,密码等,或者产生查询异常导致应用崩溃。

  • 检测结果:

    该 App 应用无数据库注入漏洞。

AES/DES 加密方法不安全使用漏洞

漏洞评级建议: 低危

  • 详情:

    检测 App 程序中使用 AES/DES 加密算法时是否使用了不安全的加密模式。

  • 造成的危害:

    AES/DES 是 android 程序中常用的两种对称加密算法,其工作模式有 ECB、CBC、CFB 和 OFB。当其使用 ECB 或 OFB 工作模式时,加密数据可能被选择明文攻击 CPA 破解。加密方法失效后可能导致客户端隐私数据泄露,加密文件破解,传输数据被获取,中间人攻击等后果,造成用户敏感信息被窃取。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 AES/DES 加密算法不安全使用漏洞已被屏蔽。

RSA 加密算法不安全使用漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在 RSA 加密算法不安全使用的漏洞。

  • 造成的危害:

    RSA 算法是最为典型的非对称加密算法,也是当今应用范围最为广泛的非对称加密算法,也是第一个能用于数据加密也能用于数字签名的算法。使用 RSA 加密算法时,应注意以下两点:1. 密钥长度过短,会导致密钥被破解,通常小于 512bit 的密钥即存在破解的风险;2. 加密算法没有使用正确的工作模式和填充方式,容易导致部分加密数据被破解或者遭到选择明文攻击(CPA)。RSA 加密算法的不安全使用,可能导致客户端隐私数据泄露,加密文件破解,传输数据被获取,中间人攻击等后果,造成用户敏感信息被窃取,甚至造成财产损失。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 RSA 加密算法不安全使用漏洞已被屏蔽。

密钥硬编码漏洞

漏洞评级建议: 高危

  • 详情:

    检测 App 中是否存在密钥硬编码漏洞。

  • 造成的危害:

    密钥硬编码是指在代码中直接将加密算法的密钥设置为一个固定值。通常加密算法本身都是公开的,而加密内容的保密则主要是依赖于加密密钥。如果密钥泄露,根据加密算法和加密后的密文,很容易得到加密前的明文。而密钥硬编码在代码中,通过反编译攻击者可以直接查看密钥内容,整个加密算法将形同虚设。密钥硬编码,可直接造成加密数据被破解,客户端与服务器之间的通信内容被破解,导致应用内的加密文件被破解,或是用户的敏感信息泄露。

  • 检测结果:

    该 App 应用中不存在密钥硬编码漏洞。

动态调试攻击风险

漏洞评级建议: 高危

  • 详情:

    检测客户端 App 运行时是否面临 C 层动态调试的风险。

  • 造成的危害:

    如果 App 存在 C 层代码动态调试的风险,攻击者可以利用 GDB、IDA、Ptrace 等调试器跟踪运行的目标程序,查看、修改内存中的代码和数据,甚至分析篡改程序的业务逻辑,对客户关键数据或者服务器进行恶意攻击,例如修改客户端业务操作的数据,比如转账账号、金额等,导致用户的损失。

  • 检测结果:

    该 App 存在 C 层动态调试的风险。

  • 修复建议:

    第三方支持:使用具有反动态调试功能的第三方专业加固方案,防止应用被动态调试。

Webview 远程调试风险

漏洞评级建议: 中危

  • 详情:

    检测 App 程序是否存在 Webview 远程调试风险。

  • 造成的危害:

    Android 应用可在 WebView 中直接实现对 js 代码的远程调试。在 4.4 版本以上的 Android 系统上可通过将 WebView 类静态方法 setWebContentsDebuggingEnabled 设置为 true,然后使用 Chrome 浏览器的开发工具 inspect 在 Android 应用中直接调试 WebView。开启 Webview 的远程调试功能,可能会被非法使用者直接利用,获取 js 源代码,从而可能造成功能逻辑泄露;如果 js 被篡改,可能被植入钓鱼页面或者恶意代码,造成用户的敏感信息泄露。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 Webview 远程调试风险漏洞已被屏蔽。

应用数据任意备份风险

漏洞评级建议: 中危

  • 详情:

    检测 App 是否存在应用数据被任意备份的风险。

  • 造成的危害:

    Android 2.1 以上的系统可为 App 提供应用程序数据的备份和恢复功能,该由 AndroidMainfest.xml 文件中的 allowBackup 属性值控制,其默认值为 true。当该属性没有显式设置为 false 时,攻击者可通过 adb backup 和 adbrestore 对 App 的应用数据进行备份和恢复,从而可能获取明文存储的用户敏感信息,如用户的密码、证件号、手机号、交易密码、身份令牌、服务器通信记录等。利用此类信息攻击者可伪造用户身份,盗取用户账户资产,或者直接对服务器发起攻击。

  • 检测结果:

    该 App 中的应用数据存在被外部调用备份的风险。

  • 修复建议:

    关闭 AndroidManifest.xml 中的组件导出权限,对于必须导出的组件必须限制于授权用户或者应用组件。建议再 AndroidManifest.xml 中把 android 和 android 属性显式设置为 false。

敏感函数调用风险

漏洞评级建议: 低危

  • 详情:

    检测 App 程序中是否调用了包含敏感行为的函数。

  • 造成的危害:

    敏感行为包括发送、拦截短信,读取、修改通讯录、通话记录,拨打电话,发送地理位置,使用摄像头,访问浏览器历史记录等。函数调用这些敏感行为,可能导致用户隐私数据泄露,钓鱼扣费等风险。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的敏感函数调用已被屏蔽。

  • 修复建议:

    审核包含敏感行为的函数调用,确保其使用是必要且限制于授权用户的。

数据库文件任意读写漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在可被任意读写的数据库文件。

  • 造成的危害:

    database 配置模式安全风险源于:创建数据库 (Database) 时没有正确的选取合适的创建模式 (MO DE_PRIVATE、MODE_WORLD_READABLE 以及 MODE_WORLD_WRITEABLE) 进行权限控制,从而导致数据库 (Database) 内容被恶意读写,造成账户密码、身份信息、金融账户其他敏感信息的泄露, 甚至可能导致攻击者进一步实施恶意攻击。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的数据库文件任意读写漏洞已被屏蔽。

全局可读写的内部文件漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 应用中是否存在内部文件,可被其他任意 App 读写。

  • 造成的危害:

    为了实现不同软件之间的数据共享,设置内部文件为全局可读或全局可写,导致其他应用可以读取和修改该文件。如果此类文件包含了关键配置信息,账户信息数据等敏感信息,可能会被盗取或者恶意篡改,导致如程序无法运行,业务逻辑被修改等问题。

  • 检测结果:

    该 App 应用不包含全局可读写内部文件。

SharedPreferences 数据全局可读写漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在 SharedPreferences 数据全局可读写漏洞。

  • 造成的危害:

    SharedPreferences 作为 Android 系统的本地数据存储方式之一,可将应用数据以键值对(key-value)的存储形式永久保存于 App 应用中。当使用 SharedPreferences 方式在创建本地存储文件时,如果使用了 MODE_WORLD_READABLE 模式,或者使用了 MODE_WORLD_WRITEABLE 模式并且配置了 “android” 属性值时,可能导致储存于 SharedPreferences 文件中的敏感信息被其他程序读写,导致应用内明文存储的个人身份信息、密码以及 token 等重要敏感信息泄露,或者存储的用户信息、历史数据被篡改,诱导用户误操作等。更为严重的是具备 root 权限的程序或用户可对所有应用程序通过任意模式(包括 MODE_PRIVATE)创建的的 Shared Preferences 文件进行读写操作。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 SharedPreferences 数据全局可读写漏洞已被屏蔽。

SharedUserId 属性设置漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在 sharedUserId 属性设置漏洞。

  • 造成的危害:

    SharedPreferences 作为 Android 系统的本地数据存储方式之一,可将应用数据以键值对(key-value)的存储形式永久保存于 App 应用中。当使用 SharedPreferences 方式在创建本地存储文件时,如果使用了 MODE_WORLD_READABLE 模式,或者使用了 MODE_WORLD_WRITEABLE 模式并且配置了 “android” 属性值时,可能导致储存于 SharedPreferences 文件中的敏感信息被其他程序读写,导致应用内明文存储的个人身份信息、密码以及 token 等重要敏感信息泄露,或者存储的用户信息、历史数据被篡改,诱导用户误操作等。更为严重的是具备 root 权限的程序或用户可对所有应用程序通过任意模式(包括 MODE_PRIVATE)创建的的 Shared Preferences 文件进行读写操作。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 sharedUserId 属性设置漏洞已被屏蔽。

Internal Storage 数据全局可读写漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在 Internal Storage 数据全局可读写漏洞。

  • 造成的危害:

    Internal Storage 作为 Android 系统的本地数据存储方式之一,可将应用数据直接存储于设备的内部存储器中。当使用 Internal Storage 方式在创建本地存储文件时,如果使用了 MODE_WORLD_READABLE 模式,或者使用了 MODE_WORLD_WRITEABLE 模式,或者配置了 “android” 属性值时,可能导致储存于 Internal Storage 文件中的敏感信息被其他程序读写,导致应用内明文存储的个人身份信息、密码以及 token 等重要敏感信息泄露,或者存储的用户信息、历史数据被篡改,诱导用户误操作等。更为严重的是具备 root 权限的程序或用户可对所有应用程序通过任意模式(包括 MODE_PRIVATE)创建的 Internal Storage 文件进行读写操作。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 Internal Storage 数据全局可读写漏洞已被屏蔽。

getDir 数据全局可读写漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在 getDir 数据全局可读写的漏洞。

  • 造成的危害:

    Context.getDir(String name , int mode)是访问 Andoid 系统的 InternalStorage 的一个重要方式,用于在应用程序的数据文件夹下获取或者创建一个存放应用程序自定义文件的文件夹。当该函数的第二参数使用了如果使用了 MODE_WORLD_READABLE 模式,或者使用了 MODE_WORLD_WRITEABLE 模式,或者配置了 “android” 属性值时,可能导致储存于该文件夹中的敏感信息被其他程序读写,导致应用内明文存储的个人身份信息、密码以及 token 等重要敏感信息泄露,或者存储的用户信息、历史数据被篡改,诱导用户误操作等。更为严重的是具备 root 权限的程序或用户可对所有应用程序通过任意模式(包括 MODE_PRIVATE)创建的文件夹进行读写操作。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 getDir 数据全局可读写漏洞已被屏蔽。

FFmpeg 文件读取漏洞

漏洞评级建议: 高危

  • 详情:

    检测 App 中是否存在 FFmpeg 文件读取漏洞。

  • 造成的危害:

    FFmpeg 是一个使用广泛的多媒体框架,支持解码、编码、转码、复用、解复用、流媒体、过滤器和播放几乎任何格式的多媒体文件,目前有非常多的视音频软件或是视频网站、手机 APP 都采用了这个库。该漏洞利用了 FFmpeg 处理 HLS(HTTP Live Streaming)播放列表的功能,在 AVI 文件中的 GAB2 字幕块中嵌入了一个恶意构造的 HLS 文件,然后提供使用 FFmpeg 的目标站点进行转码,在解析的过程中该 avi 文件被当做一个 XBIN 的视频流来处理,再通过 XBIN 的编解码器根据构造的目标路径把站点本地的文件包含进来,最后通过下载转码后的视频文件来获取目标站点本地的文件内容 (例如:/etc/passwd 文件内容)。FFmpeg 中存在的该漏洞,不仅可以触发本地文件读取以获得服务器文件,如果客户端使用了有漏洞的 FFmpeg 库,同样能触发本地文件读取漏洞,这样通过一段视频,就能获得手机中的文件内容了。该漏洞可能导致服务器端以及应用内存储的个人身份信息、密码等重要敏感信息泄露。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 FFmpeg 文件读取漏洞已被屏蔽。

Java 层动态调试风险

漏洞评级建议: 中危

  • 详情:

    检测 java 层调试功能是否被打开,java 代码层是否面临被动态调试的风险。

  • 造成的危害:

    客户端软件 AndroidManifest.xml 中的调试标记如果开启,可被 Java 调试工具例如 jdb 进行调试,获取和篡改用户敏感信息,甚至分析并且修改代码实现的业务逻辑,例如窃取用户密码,绕过验证码防护等。

  • 检测结果:

    该 Apk 中 AndroidManifest.xml 中的调试标记已被关闭,Java 层无法被调试。

内网测试信息残留漏洞

漏洞评级建议: 低危

  • 描述:

    通过检测是否包含内网 URl 地址,判断是否发布包中是否包含测试数据。

  • 造成的危害:

    残留的测试数据,例如 URL 地址,测试账号,密码,可能会被盗取并恶意利用在正式服务器上进行攻击,例如账号重试,攻击安全薄弱的测试服务器以获取服务器安全漏洞或者逻辑漏洞。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的内网测试信息已被屏蔽。

  • 修复建议:

    建议开发者根据测评结果检测相关文件中是否包含更多的测试数据。

随机数不安全使用漏洞

漏洞评级建议: 低危

  • 详情:

    检测应用中是否存在随机数可被猜解的漏洞。

  • 造成的危害:

    Android 应用中通常使用 SecureRandom 类来生成随机数值,用于程序的逻辑功能或者加密算法。错误的使用方式可造成生成的随机数并非完全随机分布,且产生重复的 "随机值"。当 SecureRandom 类使用相同的种子生成随机数时,生成的随机数也相同,这样可导致使用的随机数或加密算法被破解。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的随机数不安全使用漏洞已被屏蔽。

代码残留 URL 信息检测

漏洞评级建议: 低危

  • 详情:

    检测程序代码内部存在的 URL 地址信息。

  • 造成的危害:

    在移动应用的程序代码内部,可能存在大量开发人员或其他工作人员无意识留下的信息内容。URL 信息检测就是通过检测移动应用程序代码内部所存在的 URL 地址信息,尽可能呈现出应用中所有的 URL 信息,便于应用开发者查看并评估其安全性。移动应用发布包中的 URL 地址信息,可能会被盗取并恶意利用在正式服务器上进行攻击,攻击安全薄弱的测试服务器以获取服务器安全漏洞或者逻辑漏洞。

  • 检测结果:

    存在风险,该 App 应用中存在以下 URL 地址信息。

  • 修复建议:

    1、核查并评估所有的 URL 信息,判断是否存在涉及内部业务等敏感信息的URL 地址,进行删除。
    2、尽量不要将与客户端业务相关的 URL 信息以硬编码的方式写在应用客户端中,建议以动态的方式生成所需要请求的 URL。
    

残留账户密码信息检测

漏洞评级建议: 低危

  • 详情:

    检测程序代码内部是否包含残留的账户、密码信息。

  • 造成的危害:

    移动应用发布包中如果存在残留的账户、密码信息,可能会被盗取并恶意利用在正式服务器上进行攻击,例如账号重试,攻击安全薄弱的测试服务器以获取服务器安全漏洞或者逻辑漏洞。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的账户密码信息已被屏蔽。

残留手机号信息检测

漏洞评级建议: 低危

  • 详情:

    检测程序代码内部是否包含残留手机号信息。

  • 造成的危害:

    移动应用发布包中如果存在残留的手机号信息,可能会被盗取并恶意利用在正式服务器上进行攻击,攻击安全薄弱的测试服务器以获取服务器安全漏洞或者逻辑漏洞。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的手机号信息已被屏蔽。


通信数据传输安全#

HTTP 传输数据风险

漏洞评级建议: 低危

  • 详情:

    检测 app 程序是否使用 HTTPS 协议对传输数据进行加密。

  • 造成的危害:

    无线传输的数据能被第三方轻易截获,由于客户端与服务器之间的传输数据遵循通信协议指定的格式和内容类型,如果未使用加密措施,传输数据可被还原成网络层的数据包并进行解包分析,直接暴露用户的各种关键数据,例如用户名,密码等。加入了 SSL(Secure Socket Layer)子层实现的 HTTPS 协议可确保数据在网络上加密传输,即使传输的数据被截获,也无法解密和还原。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的使用未加密的 HTTP 协议传输数据风险已被屏蔽。

HTTPS 未校验服务器证书漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 在使用 HTTPS 协议传输数据时是否对服务器证书进行校验。

  • 造成的危害:

    使用 HTTPS 协议时,客户端必须对服务器身份进行完整性校验,以验证服务器是真实合法的目标服务器。如果没有校验,客户端可能与仿冒的服务器建立通信链接,即 “中间人攻击”。Android 中默认的 HTTPS 证书验证机制不接受不可信的连接,因而是安全的,但 Android 允许开发者重定义证书验证方法:1)使用 X509TrustManager 类检查证书是否合法并且是否未过期;2)使用 HostnameVerifier 类检查证书中的主机名与使用该证书的服务器的主机名是否一致。重写的 X509TrustManager,其中的 checkServerTrusted () 方法不对验证失败做任何处理,即不对证书进行正确校验结果,是导致 “中间人攻击” 的主要原因之一。当发生中间人攻击时,仿冒的中间人可以冒充服务器与手机客户端进行交互,同时冒充手机客户端与服务器进行交互,在充当中间人转发信息的时候,窃取手机号,账号,密码等敏感信息,甚至可能对通信内容进行篡改。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 HTTPS 未校验服务器证书漏洞已被屏蔽。

HTTPS 未校验主机名漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 在使用 HTTPS 协议传输数据时是否对服务器主机名进行校验。

  • 造成的危害:

    使用 HTTPS 协议时,客户端必须对服务器身份进行完整性校验,以验证服务器是真实合法的目标服务器。如果没有校验,客户端可能与仿冒的服务器建立通信链接,即 “中间人攻击”。Android 中默认的 HTTPS 证书验证机制不接受不可信的连接,因而是安全的,但 Android 允许开发者重定义证书验证方法:1)使用 X509TrustManager 类检查证书是否合法并且是否未过期;2)使用 HostnameVerifier 类检查证书中的主机名与使用该证书的服务器的主机名是否一致。重写的 HostnameVerifier,其中的 Verify () 方法不对主机名验证失败做任何处理,即不对主机名进行正确校验,是导致 “中间人攻击” 的主要原因之一。当发生中间人攻击时,仿冒的中间人可以冒充服务器与手机客户端进行交互,同时冒充手机客户端与服务器进行交互,在充当中间人转发信息的时候,窃取手机号,账号,密码等敏感信息,甚至可能对通信内容进行篡改。

  • 检测结果:

    该 App 在使用 HTTPS 协议传输数据时已对服务器主机名进行了校验。

HTTPS 允许任意主机名漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 在使用 HTTPS 协议传输数据时是否允许任意服务器主机名。

  • 造成的危害:

    使用 HTTPS 协议时,客户端必须对服务器身份进行完整性校验,以验证服务器是真实合法的目标服务器。如果没有校验,客户端可能与仿冒的服务器建立通信链接,即 “中间人攻击”。Android 中默认的 HTTPS 证书验证机制不接受不可信的连接,因而是安全的,但 Android 允许开发者重定义证书验证方法:1)使用 X509TrustManager 类检查证书是否合法并且是否未过期;2)使用 HostnameVerifier 类检查证书中的主机名与使用该证书的服务器的主机名是否一致。重写的 HostnameVerifier,当被配置为接受任何服务器主机名时,等同不对主机名进行校验,是导致 “中间人攻击” 的主要原因之一。当发生中间人攻击时,仿冒的中间人可以冒充服务器与手机客户端进行交互,同时冒充手机客户端与服务器进行交互,在充当中间人转发信息的时候,窃取手机号,账号,密码等敏感信息,甚至可能对通信内容进行篡改。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 HTTPS 允许任意主机名漏洞已被屏蔽。

Webview 绕过证书校验漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 应用的 webview 组件是否在发现 https 网页证书错误后继续加载页面。

  • 造成的危害:

    客户端的 Webview 组件访问使用 HTTPS 协议加密的 url 时,如果服务器证书校验错误,客户端应该拒绝继续加载页面。但如果重载 WebView 的 onReceivedSslError () 函数并在其中执行 handler.proceed (),客户端可以绕过证书校验错误继续访问此非法 URL。这样将会导致 “中间人攻击”,攻击者冒充服务器与手机客户端进行交互,同时冒充手机客户端与服务器进行交互,在充当中间人转发信息的时候,窃取手机号,账号,密码等敏感信息。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 Webview 绕过证书校验漏洞已被屏蔽。


身份认证安全#

界面劫持风险

漏洞评级建议: 中危

  • 详情:

    检测客户端 App 的应用界面是否存在可被劫持的风险。

  • 造成的危害:

    界面劫持是指当客户端程序调用一个应用界面时,被恶意的第三方程序探知,如果该界面组件是恶意程序预设的攻击对象,恶意程序立即启动自己的仿冒界面并覆盖在客户端程序界面之上。此时用户可能在无察觉的情况下将自己的账号、密码信息输入到仿冒的信息输入界面中,恶意程序再把这些数据返回到服务器中,完成钓鱼攻击。目前主要的界面劫持攻击通常发生在 Android5.0 以下的设备中。界面劫持风险将导致用户关键信息,例如账号、密码、银行卡等关键信息被窃取等风险。

  • 检测结果:

    存在风险,该 App 应用存在界面劫持风险。

  • 修复建议:

    第三方支持:使用第三方的专业防界面劫持 SDK,防止应用界面被劫持。

输入监听风险

漏洞评级建议: 中危

  • 详情:

    检测 app 程序在进行输入时是否存在输入被监听的风险。

  • 造成的危害:

    应用程序中的敏感信息通常主要来源于使用者的直接输入,如果用户的输入数据被监听或者按键位置被记录,很可能导致用户的输入数据被获取,其中的账号、密码等隐私信息泄露。而 Android 系统的默认输入键盘中通常都面临数据监听的风险。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的输入监听风险已被屏蔽。

截屏攻击风险

漏洞评级建议: 中危

  • 详情:

    检测 App 的界面是否可被截图或者录制的风险。

  • 造成的危害:

    截屏攻击是指对 App 应用运行中的界面进行截图或者录制。截图攻击的主要对象是 Android 应用中的身份认证、登录界面和资金操作界面。而在 Android5.0 中新增了屏幕录制接口,无需特殊权限,使用系统 API(MediaProjection)即可实现屏幕录制,并且攻击程序可以通过自定义的字符覆盖掉系统的录屏提示,诱导用户在不知情的情况下启动屏幕录制功能。当恶意程序获取到应用截图或者屏幕录像后,将其发送给攻击者,攻击者便能直接查看或者还原手机界面的操作情况,从而轻而易举获取用户 QQ、微信等应用的用户名及密码,甚至银行客户端中输入的银行账号及支付密码,导致用户的资金损失。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的截屏攻击风险已被屏蔽。


内部数据交互安全#

动态注册 Receiver 风险

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在动态注册 Receiver 风险。

  • 造成的危害:

    BroadcastReceiver 组件的注册方式可分为两种,一种是静态注册,即提前在 AndroidManifest.xml 文件中声明组件;另外一种是动态注册,即在代码中使用 registerReceiver () 方法注册 BroadcastReceiver,只有当 registerReceiver () 的代码执行到了才进行注册,取消时则调用 unregisterReceiver () 方法。而容易被忽略的是 registerReceiver () 方法注册的是全局 BroadcastReceiver,在其生命周期里是默认可导出的,如果没有指定权限访问控制,可以被任意外部应用访问,向其传递 Intent 来执行特定的功能。因此,动态注册的 BroadcastReceive 可能导致拒绝服务攻击、应用数据泄漏或是越权调用等风险。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的动态注册 Receiver 风险已被屏蔽。

Content Provider 数据泄露漏洞

漏洞评级建议: 高危

  • 详情:

    检测 App 是否存在 Content Provider 数据泄露风险。

  • 造成的危害:

    Content provider 可被用于在不同应用程序或者进程之间共享数据,而应用程序的不同数据内容应该具有严格的访问权限。如果权限设置不当,应用程序的 content provider 数据可能被其他程序直接访问或者修改,导致用户的敏感数据泄露,或者应用数据被恶意篡改,例如盗取账号信息,修改支付金额等。

  • 检测结果:

    该 App 应用中不存在可被其他程序访问的 content provider 数据。

组件导出风险

漏洞评级建议: 中危

  • 描述:

    组成 Apk 的四个组件,Activity,Service,Broadcast Receiver 和 Content Provider,如果设置了导出权限,都可能被系统或者第三方的应用程序直接调出并使用。

  • 造成的危害:

    组件导出可能导致登录界面被绕过、信息泄露、数据库 SQL 注入、DOS、恶意调用等风险。

  • 修复建议:

    关闭 AndroidManifest.xml 中的组件导出权限,对于必须导出的组件必须限制于授权用户或者应用组件。

Activity 组件导出风险

漏洞评级建议: 中危

  • 详情:

    检测 apk 中的 Activity 组件是否存在导出的风险。

  • 造成的危害:

    Activity 作为组成 Apk 的四个组件之一,是 Android 程序与用户交互的界面,如果 Activity 打开了导出权限,可能被系统或者第三方的 App 直接调出并使用。Activity 导出可能导致登录界面被绕过、拒绝服务攻击、程序界面被第三方恶意调用等风险。

  • 检测结果:

    该 Apk 中的 Activity 组件开启了导出权限,存在组件导出风险。

  • 修复建议:

    关闭 AndroidManifest.xml 中的 Activity 组件导出权限,对于必须导出的组件必须限制于授权用户或者应用组件。

Service 组件导出风险

漏洞评级建议: 中危

  • 详情:

    检测 apk 中的 Service 组件是否存在导出的风险。

  • 造成的危害:

    Service 作为组成 Apk 的四个组件之一,一般作为后台运行的服务进程,如果设置了导出权限,可能被系统或者第三方的 App 直接调出并使用。Service 导出可能导致拒绝服务攻击,程序功能被第三方恶意调用等风险。

  • 检测结果:

    该 Apk 中的 Service 组件开启了导出权限,存在组件导出风险。

  • 修复建议:

    关闭 AndroidManifest.xml 中的 Service 组件导出权限,对于必须导出的组件必须限制于授权用户或者应用组件。

Broadcast Receiver 组件导出风险

漏洞评级建议: 中危

  • 详情:

    检测 apk 中的 Broadcast Receiver 组件是否存在导出的风险。

  • 造成的危害:

    Broadcast Receiver 作为组成 Apk 的四个组件之一,对外部事件进行过滤接收,并根据消息内容执行响应,如果设置了导出权限,可能被系统或者第三方的 App 直接调出并使用。Broadcast Receiver 导出可能导致敏感信息泄露、登录界面被绕过等风险。

  • 检测结果:

    存在风险,该 Apk 中的 Broadcast Receiver 组件开启了导出权限,存在组件导出风险。

  • 修复建议:

    关闭 AndroidManifest.xml 中的 Broadcast Receiver 组件导出权限,对于必须导出的组件必须限制于授权用户或者应用组件。

Content Provider 组件导出风险

漏洞评级建议: 中危

  • 详情:

    检测 apk 中的 Content Provider 组件是否存在导出的风险。

  • 造成的危害:

    Content Provider 组成 Apk 的四个组件之一,是应用程序之间共享数据的容器,可以将应用程序的指定数据集提供给第三方的 App,如果设置了导出权限,可能被系统或者第三方的 App 直接调出并使用。Content Provider 导出可能导致程序内部的敏感信息泄露,数据库 SQL 注入等风险。

  • 检测结果:

    该 Apk 中的 Content Provider 组件无法被导出。

PendingIntent 错误使用 Intent 风险

漏洞评级建议: 低危

  • 详情:

    检测 App 中是否存在 PendingIntent 使用了隐式 Intent 或者空 Intent 的风险。

  • 造成的危害:

    PendingIntent 提供了一种特殊的异步处理机制,App 可创建一个待处理的 Intent 给其他应用,并且允许这个应用以与自己相同的权限来执行这个 Intent。即使创建 Intent 的原始 App 应用已经被关闭,其他应用在获取 PendingIntent 之后,仍可能对 Intent 进行修改,并以原始应用的权限与 ID 来执行修改后的恶意行为。这样可能导致原始 App 获取的系统权限和用户数据泄露,例如系统被恶意关闭,短信劫持,系统数据删除,甚至应用中涉及的用户数据被恶意篡改,或者执行恶意操作如转账、发送信息等。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 PendIntent 错误使用 Intent 风险已被屏蔽。

Intent 组件隐式调用风险

漏洞评级建议: 低危

  • 详情:

    检测 Apk 中的 Intent 组件是否存在隐式调用的风险。

  • 造成的危害:

    Intent 通常用于 Activity、Service、Broadcast Receiver 等组件之间进行信息传递,包括发送端和接收端。当使用隐式的 Intent 调用时,并未对 intent 消息接收端进行限制,因此可能存在该消息被未知的第三方应用劫持的风险。Intent 消息被劫持,可能导致用户的敏感数据泄露,或者恶意程序执行等风险。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 Intent 组件隐式调用的风险已被屏蔽。

Intent Scheme URL 攻击漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 应用中是否存在 Intent Scheme URL 攻击漏洞。

  • 造成的危害:

    利用 intent scheme URLs (意图协议 URL),可以通过 web 页面发送 intent 来启动 App 应用。攻击者可构造特殊格式的 URL 直接向系统发送意图,启动 App 应用的 Activity 组件或者发送异常数据,导致应用的敏感信息泄露或者应用崩溃。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 Intent Scheme URL 攻击漏洞已被屏蔽。

Fragment 注入攻击漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 应用中是否存在 Fragment 注入攻击漏洞。

  • 造成的危害:

    Activity 可包含多个 Fragment 来展示界面,PreferenceActivity 是支持 Fragment 的基类 activity,其根据传入的参数 EXTRA_SHOW_FRAGMENT,(‘:android’) 动态创建 fragment 实现界面展示。 当 PreferenceActivity 的 activity 是属性为 export,PreferenceActivity 不检查传入的参数直接根据其构建对象时,可以构造 intent 中的 extra 数据,调用应用内部的任意 fragment。fragment 注入攻击可导致应用的敏感信息泄露、远程代码执行或者应用崩溃。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 Fragment 注入攻击漏洞已被屏蔽。

反射调用风险

漏洞评级建议: 低危

  • 详情:

    检测 App 程序是否存在反射调用风险。

  • 造成的危害:

    在 Java 程序中,反射调用可用于强行访问正常途径没有访问权限的代码,在知道目标类的类名和方法名的情况下动态的去调用一些 protected 甚至是 private 的方法或类。反射调用在为 Java 程序对自身进行检查,访问程序的内部属性以及私有方法时提供了便利,但绕过了 Java 的代码访问权限,也容易留下安全漏洞。使用反射调用机制,可能绕过系统安全设置,访问程序的私有数据,造成用户敏感数据泄露。

  • 检测结果:

    该 App 不存在反射调用风险。


恶意攻击防范能力#

"应用克隆" 漏洞攻击风险

漏洞评级建议: 高危

  • 详情:

    检测 App 中是否存在利用 webview 跨域访问进行 “应用克隆” 漏洞攻击的风险。

  • 造成的危害:

    WebView 是 Android 用于显示网页的控件。当 Android 应用中存在包含 webview 的可被导出 Activity 组件时,若该 WebView 允许通过 file url 对 http 域进行访问,并且未对访问的路径进行严格校验,则可能导致 “应用克隆” 漏洞攻击。攻击者利用该漏洞,可远程获取用户隐私信息(包括手机应用数据、照片、文档等敏感信息)导致数据泄露,可远程打开并加载恶意 HTML 文件,甚至获取 App 中包括用户登录凭证在内的所有本地敏感数据。

  • 检测结果:

    该 Apk 经过加固保护,可能存在的 “应用克隆” 漏洞攻击风险无法被获取。

动态注入攻击风险

漏洞评级建议: 高危

  • 详情:

    检测客户端 App 运行时是否面临动态注入的风险。

  • 造成的危害:

    动态注入是指通过 OS 特定机制,利用系统 API 将代码写入到目标进程并让其执行。通过动态注入,攻击者可以将一段恶意代码写到目标进程,这段代码可以加载其它可执行程序,进而实施 hook,监控程序运行、获取敏感信息等。常见的动态注入,可以实现窃取输入的登录账号、密码、支付密码,修改转账的目标账号、金额,窃取通讯数据等。

  • 检测结果:

    存在风险,该 App 存在动态注入的风险。

  • 修复建议:

    使用具有反动态注入功能的第三方专业加固方案,防止应用被动态注入。

Webview 远程代码执行漏洞

漏洞评级建议: 高危

  • 详情:

    危险 api 可通过 webview 对象向页面 javascript 导出 java 本地接口,可能导致任意命令执行。

  • 造成的危害:

    Webview 是 Android 用于浏览网页的组件,其包含的接口函数 addJavascriptInterface 可以将 Java 类或方法导出以供 JavaScript 调用,实现网页 JS 与本地 JAVA 的交互。由于系统没有限制已注册 JAVA 类的方法调用,因此未注册的其它任何 JAVA 类也可以被反射机制调用,这样可能导致被篡改的 URL 中存在的恶意代码被执行,用户手机被安装木马程序,发送扣费短信,通信录或者短信被窃取,甚至手机被远程控制。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 webview 组件远程代码已被屏蔽。

未移除有风险的 Webview 系统隐藏接口漏洞

漏洞评级建议: 高危

  • 详情:

    检测 App 程序中是否已经移除有风险的 Webview 系统隐藏接口。

  • 造成的危害:

    Webview 远程代码执行最早在 CVE-2012-663 中被发现,起初产生的原因是由于 WebView addJavascriptInterface 接口引起的。在 2014 年公布的 CVE-2014-1939 中,研究人员发现在 Android 系统中 android/webkit/webview 中默认内置的一个 searchBoxJavaBridge_ API 同时存在远程代码执行漏洞。而最近公布的一次关于 WebView 远程代码执行的漏洞是 CVE-2014-7224,其中发现的是两个新的攻击向量存在于 android/webkit/AccessibilityInjector.java 中,这两个接口分别是”accessibility” 和”accessibilityTraversal”,调用了此组件的应用在开启了辅助功能选项中第三方服务的安卓系统上也将面临远程代码执行漏洞。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的未移除 Webview 系统隐藏接口漏洞已被屏蔽。

zip 文件解压目录遍历漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在解压 zip 文件时可导致目录遍历的漏洞。

  • 造成的危害:

    App 在运行过程中,可能对下载的或者本地存储中的 zip 格式文件进行解压。由于在 zip 压缩包下的文件路径名中允许存在 “../” 字符串,而 “../” 在 Android 系统中将被解释为返回上层目录,那么攻击者可能利用多个 “../” 构造出不安全的 zip 压缩包。当 app 程序中使用 ZipEntry.getName () 解压 zip 文件时,没有对上级目录字符串 (../) 进行过滤校验,可能会导致被解压的文件发生目录跳转,解压到当前目录以外的其他目录,并且覆盖应用原有的文件。如果被覆盖掉的文件是 js、so 和 dex 等文件,可能导致拒绝服务攻击,甚至是恶意代码执行。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的 zip 文件解压目录遍历漏洞已被屏蔽。

下载任意 apk 漏洞

漏洞评级建议: 高危

  • 详情:

    检测应用中是否存在下载任意 apk 的漏洞。

  • 造成的危害:

    具有下载 apk 功能的组件存在导出漏洞,并且未对组件调用者进行校验。攻击者可利用导出组件的手段下载攻击者指定的任意 apk 文件,并且在下载过程中伪装 apk 文件的下载信息,例如图标、描述等,导致用户被诱导下载安装恶意应用。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的下载 apk 漏洞已被屏蔽。

拒绝服务攻击漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 应用中的组件是否存在拒绝服务攻击的漏洞。

  • 造成的危害:

    Intent 通常用于 Activity、Service、Broadcast Receiver 等组件之间进行信息传递,其负责对应用中一次操作的动作及数据进行描述。当 intent 中包含空数据、异常或者畸形数据时,如果 Android 应用程序没有对 Intent.getXXXExtra() 获取的异常或者畸形数据进行异常捕获,那么可导致接收该 Intent 的应用崩溃。拒绝服务攻击漏洞可能导致安全防护、监控类应用失效,也可能导致应用被大面积恶意攻击而崩溃,造成经济利益损失或者客户流失。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的拒绝服务攻击漏洞已被屏蔽。

从 sdcard 加载 dex 风险

漏洞评级建议: 中危

  • 详情:

    检测 App 程序中的是否存在从 sdcard 动态加载 dex 的风险。

  • 造成的危害:

    低于 Anroid4.1 的系统版本允许 APP 动态加载存储在 sdcard 的 dex 文件,该目录也可被其他应用读写。当 APP 对于从外部加载的 DEX 文件未做完整性校验时,向加载的 dex 注入恶意代码或者使用恶意代码替换 dex 文件,将会导致恶意代码执行。常见的恶意代码,可能导致登录账号、密码、支付密码被窃取,恶意扣费,病毒注入等风险。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的从 sdcard 动态加载 dex 的风险已被屏蔽。

从 sdcard 加载 so 风险

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在从 sdcard 动态加载 so 的风险。

  • 造成的危害:

    出于节省 Apk 包大小,或者动态升级 so 文件的原因,App 程序可能将部分 so 文件存储或者下载于 sdcard 上,然后进行动态加载。为成功动态加载 so 文件,App 首先将 so 文件读取到应用私有目录下,再使用 system.load 函数加载该目录下的 so 文件,并且该目录是应用私有目录(/data/data/<packagename>/)下的非默认 lib 库文件夹。该过程中 APP 动态加载了存储在 sdcard 上的 so 文件,如果存储的 so 文件被存在恶意行为的 so 文件替换,将会导致恶意代码执行。常见的恶意代码,可能导致登录账号、密码、支付密码被窃取,恶意扣费,病毒注入等风险。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的从 sdcard 加载 so 文件的风险已被屏蔽。

未使用编译器堆栈保护技术风险

漏洞评级建议: 低危

  • 详情:

    检测 App 程序中是否存在未使用编译器堆栈保护技术风险。

  • 造成的危害:

    缓冲区溢出攻击是指当程序向内存缓冲区内填充数据位数时超过了缓冲区本身的容量,导致溢出的数据覆盖在合法数据上,从而修改内存中将执行的程序地址。这种攻击通常发生在堆栈中,攻击者需要事先分析被攻击进程的虚拟地址空间布局,然后采用硬编码方式向堆栈缓冲区填充恶意代码。如果系统每次加载应用进程和动态链接库时,基地址都加载到固定虚拟内存地址处,攻击者可得出应用程序的地址空间布局,便可以通过构造恶意的缓冲区数据,使该函数返回时跳转至攻击者注入的恶意代码或 shellcode 处执行。缓冲区溢出攻击,可能导致程序执行失败、系统宕机或者恶意程序执行等后果,造成用户数据泄露或者对手机系统实现恶意操作。攻击者利用堆栈溢出漏洞时,通常会破坏当前的函数栈。Stack Canaries 漏洞探测技术,可以对缓冲区溢出进行预警。在所有函数调用发生时,向栈帧内压入一个被称作 canary 的随机数,当栈中发生溢出时,canary 将被首先覆盖,之后才是 EBP 和返回地址。在函数返回之前,系统通过检测栈帧中的 canary 数值是否发生变化来判断是否发生了栈溢出漏洞,此时程序将跳转到 stack_chk_fail 输出错误消息并终止执行。

  • 检测结果:

    存在风险,该 App 程序中未使用编译器堆栈保护技术。

  • 修复建议:

    1. 开发者应该在编译 Native 程序即 so 文件时使用 Canary 探测技术,防止缓冲区溢出攻击的发生。
    

未使用地址空间随机化技术风险

漏洞评级建议: 低危

  • 详情:

    检测 App 程序中是否存在未使用地址空间随机化技术风险。

  • 造成的危害:

    应用程序的地址空间布局是固定的,自低向高依次为代码区,BSS 区,堆栈区,攻击者通过分析能轻易得出各区域的基地址。基于这些信息,只要攻击者的注入代码被执行,攻击程序就能随意跳转到其指定的内存区域,最终获取系统的控制权。而地址空间随机化技术的基本思想,则是动态随机分配内存地址给程序代码区,BSS 区,堆栈区的基地址,即使攻击者注入的代码被执行,也会因为无法找到合法的返回地址而产生错误,最终攻击进程无法执行。ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术。

  • 检测结果:

    该 App 程序中已经使用了使用地址空间随机化技术。

Root 设备运行风险

漏洞评级建议: 中危

  • 详情:

    检测 App 程序是否可以在被 Root 的手机设备中运行。

  • 造成的危害:

    为了获取更大的手机自主使用功能,如卸载应用、禁用自启动程序等,不少用户会将手机进行 Root 处理以获取 Root 权限。Root 权限包括:超越任何用户和用户组来对文件或目录进行读取、修改或删除;对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要。获取 Android 的 Root 权限通常是通过系统漏洞,替换或添加可绕过用户验证的可执行 SU 程序。在给手机用户赋予 Root 权限的同时,也给了其他应用获取 Root 权限的可能性。恶意程序可能在用户不知情的情况下申请 Root 权限,读取到其他应用的文件或者进程中的敏感信息,例如支付宝、手机银行等应用的账号和密码等;或者任意读取手机中的短信记录和联系人信息;也可能获取到系统权限的重启功能,恶意重启或关闭设备。

  • 检测结果:

    存在风险,该 App 可以在被 Root 的手机中运行。

  • 修复建议:

    1. 开发者应在应用启动时增加对应用运行环境的检测,当发现运行设备为 Root 设备时,应禁止应用启动。
    2. 通过 which 命令检测系统 PATH 变量指定的路径下是否存在 su 程序来检测运行环境是否为 Root 设备。
    

不安全的浏览器调用漏洞

漏洞评级建议: 中危

  • 详情:

    检测 App 中是否存在不安全的浏览器调用漏洞。

  • 造成的危害:

    Chrome V8 引擎 3.20 至 4.2 版本中存在远程代码执行漏洞(CNNVD-201608-414)。该漏洞是由于源代码中 “observe_accept_invalid” 异常类型被误写为 “observe_invalid_accept”,造成 kMessages 关键对象信息泄露,从而可利用该漏洞执行任意代码。远程攻击者可通过诱使用户扫描二维码或者诱使用户点击恶意链接对应用进行攻击,可能导致用户隐私泄露,如通讯录,短信,录音,录像等;用户财产损失,如窃取支付密码、钱包密码等;远程控制手机等。

  • 检测结果:

    该 Apk 经过加固保护,源代码中可能存在的不安全的浏览器调用漏洞险已被屏蔽。


代码审计#

B/S#

任意文件上传漏洞

漏洞评级建议: 高危

漏洞类型: 文件上传

  • 详情

    代码审计过程中发现目标站点存在文件上传漏洞,应用系统在文件上传功能处对用户上传文件类型、格式、内容等未做合法性校验,导致攻击者可以上传 Webshell(.php、.jsp、asp 等)恶意脚本文件或者非期望格式的文件比如:HTML 文件、SHTML 文件等,同时可利用目录跳转等字符或者控制上传目录,直接上传文件到 Web 目录或任意目录下,从而可能导致在远程服务器上执行任意恶意脚本文件,从而直接获取应用系统权限。

  • 造成的危害

    1. 上传恶意脚本文件到服务器中,通过访问该恶意文件从而执行文件中的恶意代码;
    2. 攻击者可利用目录跳转上传 php、config 等文件,覆盖原有的系统文件,到达篡改系统文件、甚至获取系统权限的目的;
    3. 攻击者可上传 html、shtm 等文件,并写入非法博彩、赌博等恶意 SEO 页面或者写入恶意 js 文件进行钓鱼来非法获取用户信息等;
  • 修复建议

    • 代码层面

      • 服务端采用白名单方式校验文件后缀,不建议采用黑名单方式校验后缀,黑名单方式校验可能导致攻击者利用文件特性、系统特性、黑名单不全等方式进行绕过攻击;
      • 服务端对上传文件进行重命名,防止利用目录跳转等方式控制上传目录;
      • 服务端使用系统函数来判断文件类型及文件内容是否合法,比如 PHP 中的 getimagesize;
      • 对上传的文件回显相对路径或者不显示路径;
      • 限制文件上传类型,限制上传文件大小,并确保上传文件被访问正确返回;
    • 其他层面

      • 建议使用 OSS 静态存储服务器来存储用户上传的文件;
      • 设置目录权限限制,禁止上传目录的执行权限;
      • 保证使用的 Nginx、Apache、IIS 等容器版本不存在解析漏洞;
      • 保证使用的第三方处理软件的版本比如 FFmpeg、ImageMagick 等不存在已知漏洞;
      • 确保上传的文件放在安全的路径下,必要时可以将上传的文件存在 web server 之外的远程服务器;
    • JAVA

      • JAVA 版本不要使用小于 jdk-7u40 版本,避免存在 0x00 截断漏洞。
    • PHP

      • 添加判断文件类型时,可以结合使用 MIME Type、后缀检查等方式。在文件类型检查中,推荐白名单方式,此外,对于图片的处理,可以使用压缩函数或者 resize 函数,在处理图片的同时破坏图片中可能包含的 HTML 代码。
      • 白名单过滤,在获取到文件扩展名后对 WhiteList 数组里的扩展名迭代判断,如果文件扩展名被命中,程序将认为文件是合法的,否则不允许上传。
    • Apache

      • 在使用多后缀名时,后缀验证尽量使用白名单的方式,这样即使使用不存在的后缀名,也无法绕过。
      • Apache 配置文件中,Order Allow,Deny,Deny from all。禁止. php. 这样的文件执行
      • 关闭 Apache 配置文件中的 .+.ph(p[345]?|t|tml) 此类的正则表达式,防止 php3,php4,php5,pht,phtml 解析。
      • htaccess 文件

代码执行漏洞

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情

    在代码审计过程中发现,在系统命令执行处,输入的信息未作严格校验,对用户输入的命令没有进行限制或者过滤不严,此时攻击者通过提交恶意构造的参数破坏命令语句结构,导致攻击者可以达到执行恶意命令的目的。

  • 造成的危害

    攻击者可在应用处通过利用拼接、管道符、通配符等绕过手段来执行任意命令,写入后门,从而入侵服务器,获取服务器权限,直接导致服务器沦陷。

  • 修复建议

    1. 在代码级调用 shell 时,对命令行中的特殊字符(比如 |、&、;等)进行转义,防止执行其他非法命令。

    2. 根据业务逻辑进行白名单方式校验或使用正则表达式进行过滤。

    3. PHP 中可使用 escapeshellarg、escapeshellcmd 来转义对应敏感字符。

    4. 对于相关敏感的命令执行函数,做好参数校验和合法性验证,或者直接在配置文件中禁用该函数,不要让用户可以直接控制 eval、system、exec、shell_exec 等函数的参数 。

    • JAVA
      1. 查看是否有此系统命令的编程替代实现,尽量减少软件中对系统命令的调用。
      2. 关闭前端或中间件自带的系统命令调试台,禁止前端使用者可以修改系统命令参数。
      3. 根据业务逻辑进行白名单方式校验或使用正则表达式进行过滤。
      4. 调用 /command/exec/string,/command/exec/array,/command/processbuilder 参数时对命令行中的特殊字符(比如 |、&、;等)进行转义,防止执行其他非法命令。

管理员认证绕过漏洞

漏洞评级建议: 高危

漏洞类型: 逻辑缺陷

  • 详情

    在代码审计过程中,发现后端在判断是否是管理员后,将该值传到前台存储。若攻击者修改返回包中的该值,可能导致后端敏感接口泄露。应用程序未对当前用户操作的身份权限进行严格校验,导致用户可以操作超出自己管理权限范围的功能,从而操作一些非该用户可以操作的行为。

    • 水平越权
      • 攻击者可以访问与他拥有相同权限的用户的资源,资源权限 ID 不变,资源归属 ID 改变;
    • 垂直越权
      • 低级别攻击者可以访问高级别权限用户的资源,资源权限 ID 不变,资源归属 ID 改变;
      • 低级别攻击者可以访问高级别权限用户的资源,资源权限 ID 改变,资源归属 ID 不变;
  • 造成的危害

    • 水平越权
      • 水平越权会导致同一层级间的用户可以互相访问到对方的敏感信息,如姓名、手机号、联系地址、个人资料、订单记录等。同时还可能会以其他平级权限用户的身份来执行某行功能,如删除,添加,修改等。
    • 垂直越权
      • 垂直越权漏洞会导致低权限用户用来执行高权限用户的功能,获取高权限用户的账号信息,执行高权限用户的操作功能。
  • 修复建议

    • 代码层面

      1. 日常开发中要多留意业务逻辑可能出现的漏洞和水平权限漏洞或者其它未发现的漏洞。
      2. 鉴权,服务端对请求的数据和当前用户身份做校验;完善基础安全架构,完善用户权限体系。
      3. 对于后台接口,确保所有 API 接口先经过登录控制器。
      4. 在验证用户身份权限前不进行任何数据的交互。
      5. 严格校验当前用户操作与当前登录用户身份权限是否匹配。
    • JAVA

      1. 页面传递过来比对 根据 userId 查询数据库查到的权限列表
      2. 通过 Spring AOP 和自定义函数实现认证明确模块权限值
      3. 获取用户权限存入 session,然后用户操作资源时会提交一个资源的权限值,在判断用户是否包含有此权限。
      4. 创建一个代理类使用 @Aspect @Component 注解进行标记
      5. 编写一个增强:@Around (value="pointcut ()")
        • 判定用户是否登录
        • 获取用户权限
        • 将权限存入 session 给后端页面判断
        • 后台的权限校验

任意文件下载漏洞

漏洞评级建议: 高危

漏洞类型: 信息泄露

  • 详情

    代码审计过程中发信息,在读取文件内容文件或文件下载处,未严格限制读取 / 下载文件的路径及文件后缀,导致可利用../,# 等目录操作字符进行目录穿越、截断等手段,从而读取 / 下载服务器上任意文件,比如配置文件等。

  • 造成的危害:

    如果系统未对读取 / 下载文件的文件目录做限制,攻击者利用此漏洞可直接读取 web 目录下任意文件,比如配置文件、数据库文件等,甚至直接获取服务器上任意文件内容。

  • 修复建议:

    • 常规修复

      1. 配置文件:在配置文件中限制访问的文件目录,比如 PHP 中 php.ini 配置 open_basedir
      2. 特殊字符过滤:检查用户输入,过滤或转义含有 “../”、“..\”、“%00”,“..”,“./”,“#” 等跳转目录或字符终止符、截断字符的输入
      3. 合法性判断:严格过滤用户输入字符的合法性,比如文件类型、文件地址、文件内容等
      4. 白名单:白名单限定访问文件的路径、名称及后缀名
    • PHP

      1. php.ini 配置 open_basedir 限定文件访问范围
      2. 过滤.(点),使用户在 url 中不能回溯上级目录
    • JAVA

      1. 使用 path.eqals 对下载的文件路径进行严格控制,只允许下载某部分目录下的文件。
      2. 使用 name.lastIndexOf 获取文件后缀名并做白名单严格控制。

使用悬空指针

漏洞评级建议: 中危

漏洞类型: 逻辑缺陷

  • 详情

    在代码审计过程中,发现代码中使用了悬空指针来引用无效的内存资源。

  • 造成的危害

    悬空指针是引用无效或不正确的内存资源的指针。引用这些内存资源可能会造成内存损坏,从而导致不可预测的程序行为或系统不稳定。访问 "不安全可控"(invalid) 的内存区域将导致 "Undefined Behavior"。

  • 修复建议

    1. 在释放一块内存时,将指向这块内存的指针变量设置为 NULL。访问指针变量前,先判断是否为 NULL。
    2. 当有多个指针变量都指向同一块内存时,释放这块内存时,需要将所有指针变量的值都置为 NULL,这需要维护所有指向这块内存的指针变量的信息,但是这种方式开销大,所以通常很少使用。使用频率不是非常高的对象,可以在使用前先根据 id 等索引查找,如果找不到,则不要使用。如果有使用者时,不能释放这块内存,我们可以使用引用计数。

错误调用标准库

漏洞评级建议: 中危

漏洞类型: 错误调用

  • 详情

    在代码审计过程中发现,该程序正调用标准库函数,但未能检查并处理函数的错误返回。

  • 造成的危害

    该程序正调用标准库函数。这些函数通常返回一个有效值,或某种形式的值以表示有错误发生。未能检查调用是成功还是失败可能造成意外或未定义行为。

  • 修复建议

    1. 当调用系统函数,有些函数并不需要对其返回值进行检查。
    2. 请参考语言或系统规范,以获得对标准接口的完整使用方式。

日志污染

漏洞评级建议: 中危

漏洞类型: 特殊字符过滤

  • 详情

    在代码审计过程中发现,程序将用户未经过滤的输入包含在日志中。

  • 造成的危害

    包含未经清理的用户输入的日志可能导致导致敏感数据泄露,甚至使得攻击者利用有效日志来进行日志注入攻击。

  • 修复建议

    1. 不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对 URL、查询关键字、HTTP 头、REFER、POST 数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用 POST 而非 GET 提交表单;对 "<",">",";",""" 等字符做过滤;
    2. 不要将用户输入的所有信息都保存到日志,进行过滤和筛选,只保留有用信息即可

冗余的控制语句

漏洞评级建议: 低危

漏洞类型: 冗余语句

  • 详情

    在代码审计过程中发现,程序语言设计时,存在大量冗余的控制语句。

  • 造成的危害

    当两个条件语句在执行流中有依赖时,一个条件可以在逻辑上包含另一个条件语句。在这种情况下,其中一个条件是多余和不必要的,这种情况可能是编辑错误造成的。

  • 修复建议

    1. 检测并删除无效或从未执行的代码。
    2. 请参考语言或系统规范,以获得对标准接口的完整使用方式,避免出现多余代码。

SQL 注入漏洞

漏洞评级建议: 高危

漏洞类型: SQL注入

  • 详情:

    Web 程序中对于用户提交的参数未做过滤直接拼接到 SQL 语句中执行,导致参数中的特殊字符破坏了 SQL 语句原有逻辑,攻击者可以利用该漏洞执行任意 SQL 语句,如查询数据、下载数据、写入 webshell、执行系统命令以及绕过登录限制等,SQL 注入漏洞允许攻击者通过操纵用户输入来更改后端 SQL 语句。当 web 应用程序接受直接放入 SQL 语句的用户输入,并且没有正确过滤掉危险字符时,就会发生 SQL 注入。

  • 造成的危害:

    攻击者可以在易受攻击的系统上执行任意 SQL 语句。根据正在使用的后端数据库, SQL 注入漏洞会导致攻击者访问不同级别的数据 / 系统。在某些情况下,可以读入或写出文件,或者在底层操作系统上执行 shell 命令。

  • 修复建议:

    • 输入验证

      1. 类型判断:字符型、整型;
      2. 长度判断:设置最大长度值;
      3. 业务参数合法性判断:比如支付金额不可能为负值这种;
      4. 特殊字符过滤:比如 ',",\,<,>,&,*,;,#,select,from,where,sub,if,union,sleep,and,or 等;
      5. 验证所有的输入点,包括 UA、Cookie 以及其他 HTTP 头;
    • 预编译处理 & 参数化查询

      1. 所有与数据库交互的业务接口均采用参数化查询,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,参数化查询是防御 SQL 注入的最佳方法,比如:Java 中的 PreparedStatement,PHP 中的 PDO 等。

特定语言漏洞#

PHP#

PHP 反序列化

漏洞评级建议: 高危

漏洞类型: 代码执行

  • 详情:

    在代码审计过程中发现,程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而导致任意代码执行漏洞,获取服务器权限等危险操作。

  • 造成的危害:

    攻击者可以构造恶意信息,服务器收到该恶意代码后解析出的命令可能会造成信息泄露或者被攻击者直接用拿下主机服务器等安全风险。

  • 修复建议:

    1. 对传入的对象进行严格的过滤检查。

    2. 在反序列化过程执行的文件读写、命令或代码执行函数中是否有用户可控的参数。

    • PHP 中反序列化和一些魔术方法结合使用时就可能会产生安全风险:
      • maniac 实例化,构造方法 (__construct) 被调用;反序列执行,析构方法 (__destreuct) 被调用;当没有传入合法的序列化字符串,就会自动调用 action 解析方法,做好过滤特殊函数。
      • unserialize () 会自动调用__wakeup (),__wakeup 中实例化目标对象,这时会调用构造函数__construct,因为构造函数被调用,所传入的参数会作为 fwrite 的参数写入用户恶意文件,做好过滤特殊函数,以防止任意代码执行漏洞。
      • 用户传入的参数被反序列化,导致魔术方法__wakeup 被自动调用,这时参数传入的值将被作为 eval 的参数使用,对输入的数值进过滤,去除特殊构造语句,可修复 PHP 反序列化漏洞。

java#

安全性低的随机函数

漏洞评级建议: 低危

漏洞类型: 敏感数据泄露

  • 详情:

    在代码审计过程中发现,该程序使用了安全性不强的随机数生成器。

  • 造成的危害:

    Java API 在 java.util.Random 类里提供 PRNG (随机数),当使用了相同种子时它会生成相同的序列。

  • 修复建议:

    1. 使用 java.security.SecureRandom 类这样的更安全的 PRNG (随机数)。

测试项#

弱口令组合爆破测试

  • 详情

    渗透测试过程中对目标系统 / 登录页面进行弱口令组合爆破测试,测试使用 TOP1000 弱口令组合字典。

  • 测试结果

    经检测,截至爆破结束,未发现目标系统 / 登录页面存在弱口令组合。

敏感文件目录爆破测试

  • 详情

    渗透测试过程中对目标 URL 进行目录扫描、敏感文件扫描,使用 TOP5000 常见路径字典和 TOP1000 备份文件字典。

  • 测试结果

    经检测,截至爆破结束,未发现目标存在敏感文件目录。

任意文件上传测试

  • 详情

    渗透测试过程中对目标编辑器上传页面进行任意文件上传漏洞测试。

  • 测试结果

    使用多个服务器可执行文件后缀对目标进行测试,经检查上传失败,未发现存在文件上传漏洞。

RDP 爆破测试

  • 详情

    渗透测试过程中发现目标主机开启 RDP 服务,对目标服务使用 TOP1000 弱口令组合进行爆破测试。

  • 测试结果

    经检测,截至爆破结束,未发现目标 RDP 服务存在弱口令组合。

Struts2 漏洞测试

  • 详情

    渗透测试过程中使用工具对目标网站进行 Apache Struts2 框架漏洞测试。

  • 测试结果

    使用渗透测试工具测试,经检查,未发现目标网站存在 Apache Struts2 框架漏洞。

XSS 漏洞测试

  • 详情

    渗透测试过程中对目标网站进行 XSS 漏洞测试,如果利用成功,攻击者可窃取用户 cookie 信息,登录后台获取用户敏感数据。

  • 测试结果

    使用 TOP10000 xss 漏洞代码,经检查,未发现目标存在 XSS 漏洞。

SQL 注入测试

  • 详情

    渗透测试过程中发现目标存在搜索功能,对目标搜索接口进行 SQL 注入测试。该漏洞可以获取到数据库的所有数据,甚至可以获得主机权限。

  • 测试结果

    经检测,未注入成功,未发现目标存在 SQL 注入漏洞。

Oracle 远程数据投毒漏洞测试

  • 详情

    对目标 Oracle 数据库进行远程数据投毒漏洞测试。该漏洞可以远程获取到 Oracle 的内存信息,若是能获取到内存中的数据即为存在漏洞,进而可以再爆破 Oracle 的 SID。

  • 测试结果

    经检查,目标不存在 Oracle 远程数据投毒漏洞。

TLS 安全可靠性测试

  • 详情

    对目标 TLS 安全可靠性进行了扫描,测试了常见 TLS 存在的漏洞及加密认证方式支持程度。

  • 测试结果

    经检查,发现不存在可实际利用的中高危漏洞。

URL 跳转漏洞测试

  • 详情

    渗透测试过程中,对目标网站进行 URL 跳转漏洞测试,通过常见 Top100 跳转参数生成 URL 跳转字典。

  • 测试结果

    对字典批量生成的大量跳转结果进行验证,未发现目标存在 URL 跳转漏洞。

CORS 漏洞测试

  • 详情

    渗透测试过程中,对目标进行 CORS 漏洞测试。

  • 测试结果

    经检测,未利用成功,未发现目标存在 CORS 漏洞。

xxx 未授权访问漏洞测试

  • 详情

    渗透测试过程中,对目标 XXX 服务进行未授权访问漏洞测试。若利用成功,该漏洞无需认证即可访问目标服务管理页面,并有部分操作数据的权限且泄露数据信息。

  • 测试结果

    经检测,漏洞未能利用成功,未发现目标存在 xxx 未授权访问漏洞。

JQuery XSS 测试

  • 详情

    渗透测试过程中,发现目标站点存在 JQuery 框架库,所引用的 jQuery 版本可能会存在 XSS 漏洞。

  • 测试结果

    通过 JQuery XSS 测试模板检测,目标站点 JQuery 框架库未发现 XSS 漏洞。

Apache Log4j 测试

  • 详情

    渗透测试过程中,对目标进行 Apache Log4j 远程代码执行漏洞测试。

  • 测试结果

    经检测,未利用成功,未发现目标存在 Apache Log4j 远程代码执行漏洞。

wadl/SOAP 接口 Fuzz 测试

  • 详情

    渗透测试过程中,对目标暴露的 wadl/SOAP 接口进行 Fuzz 测试,探测可能存在的 xxe、sql 注入等漏洞问题。

  • 测试结果

    经检测,未利用成功,未发现目标 wadl/SOAP 接口存在可能的注入漏洞。


凑数#

密码明文传输

漏洞评级建议: 低危

漏洞类型: 信息泄露

  • 详情

    用户登录过程中使用明文传输用户登录信息,若用户遭受中间人攻击时,攻击者可直接获取该用户登录账户,从而进行进一步渗透。

  • 造成的危害

    明文传输用户账号密码,存在被中间人攻击、窃取密码的风险。

  • 修复建议

    1. 用户登录信息使用加密传输,如密码在传输前使用安全的算法加密后传输,可采用的算法包括:不可逆 hash 算法加盐(4 位及以上随机数,由服务器端产生);安全对称加密算法,如 AES (128、192、256 位),且必须保证客户端密钥安全,不可被破解或读出;非对称加密算法,如 RSA (不低于 1024 位)、SM2 等。
    2. 使用 https 来保证传输的安全。

JQuery 版本过低存在 XSS 漏洞风险

漏洞评级建议: 低危

漏洞类型: 版本过低

  • 详情

    渗透测试过程中,发现目标站点存在 JQuery 框架库漏洞,所引用的 jQuery 版本可能会存在 XSS 漏洞。

  • 造成的危害

    目标网站使用了存在漏洞的 JQuery 库,jQuery 中过滤用户输入数据所使用的正则表达式存在缺陷,可能导致 location.hash 跨站脚本攻击。攻击者可以利用此漏洞进行 XSS、cookioe 劫持等攻击。

  • 修复建议

    1. 更新 jQuery 到 3.5.0 或更高版本。
    2. 使用全局的 XSS 过滤清理用户输入的 HTML。

缺少 Content-Security-Policy 头

漏洞评级建议: 低危

漏洞类型: 配置不当

  • 详情

    远程网络应用程序未设置 Content-Security-Policy 响应头。

  • 造成的危害

    Content-Security-Policy 响应头的缺失使得目标 URL 更易遭受跨站脚本攻击。

  • 修复建议

    需要在 Web 应用程序的所有页面上设置以下响应头:Content-Security-Policy: default-src'self'

缺少 X-Content-Type-Options 头

漏洞评级建议: 低危

漏洞类型: 配置不当

  • 详情

    X-Content-Type-Options HTTP 消息头相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改。远程网络应用程序未设置 X-Content-Options 响应头,这就禁用了客户端的 MIME 类型嗅探行为。

  • 造成的危害

    X-Content-Type-Options 响应头的缺失使得目标 URL 更易遭受跨站脚本攻击。

  • 修复建议

    需要在 Web 应用程序的所有页面上设置以返回头:X-Content-Type-Options:nosniff , 这样页面中 script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。

缺少 X-Frame-Options 头

漏洞评级建议: 低危

漏洞类型: 配置不当

  • 详情

    远程 Web 应用程序未设置 X-Frame-Options 响应头。微软已经提出 X-Frame-Options 作为缓解点击劫持攻击的一种方法,并且已经在 Chrome 和 Safari 中实施。

  • 造成的危害

    攻击者可以使用一个透明的、不可见的 iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的 iframe 页面。通过调整 iframe 页面的位置,可以诱使用户恰好点击 iframe 页面的一些功能性按钮上,导致被劫持。

  • 修复建议

    修改 web 服务器配置,添加 X-frame-options 响应头。赋值有如下三种:
    (1)DENY:不能被嵌入到任何 iframe 或 frame 中。
    (2)SAMEORIGIN:页面只能被本站页面嵌入到 iframe 或者 frame 中。
    (3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
    也可在代码中加入,在 PHP 中加入:
    header('X-Frame-Options: deny');
    

缺少 x-xss-protection 头

漏洞评级建议: 低危

漏洞类型: 配置不当

  • 详情

    远程网络应用程序未设置 x-xss-protection 响应头。X-XSS-Protection 响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,当检测到跨站脚本攻击 (XSS) 时,浏览器将停止加载页面。

  • 造成的危害

    X-XSS-Protection 响应头的缺失使得目标 URL 更易遭受跨站脚本攻击。

  • 修复建议

    需要在 Web 应用程序的所有页面上设置以下响应头:X-XSS-Protection:1; mode=block

启用了危险的 Method

漏洞评级建议: 低危

漏洞类型: 配置不当

  • 详情

    目标服务器启用了不安全的传输方法,如 PUT、TRACE、DELETE、MOVE 等,这些方法表示可能在服务器上使用了 WebDAV,由于 dav 方法允许客户端操纵服务器上的文件,如上传、修改、删除相关文件等危险操作,如果没有合理配置 dav,有可能允许未授权的用户对其进行利用,修改服务器上的文件。

  • 造成的危害

    恶意攻击者可能使用该方法修改服务器上的任意文件,从而给用户造成数据损失,系统损坏等结果。

  • 修复建议

    正确配置的 WEB 服务器不应允许任意用户随意使用危险的方法在服务器上对文件进行修改,因此建议:

    1. 如果实在必要,请进行配置,限定这些 Http 方法能够操作的目录为指定目录,该目录不应包含重要的文件;
    2. 如非必要,关闭不安全的传输方法,只开启 POST、GET 方法。
    3. 如果服务器不使用 WebDAV 可直接禁用,或为允许 webdav 的目录配置严格的访问权限,如认证方法,认证需要的用户名,密码。
  • 参考链接

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。