Skip to content

Latest commit

 

History

History
2112 lines (1392 loc) · 123 KB

出报告专用.md

File metadata and controls

2112 lines (1392 loc) · 123 KB

出报告专用


最后修改时间 2020-7-1


修复建议

认证

  • 对于存在弱口令的系统,需在加强使用者安全意识的前提下,督促其修改密码,或者使用策略来强制限制密码长度和复杂性。
  • 对于存在弱口令或是空口令的服务,在一些关键服务上,应加强口令强度,同时需使用加密传输方式,对于一些可关闭的服务来说,建议关闭该服务以达到安全目的。
  • 对于出现验证码功能的系统或服务,不能只在前端进行防护,而是要在后台进行二次检测,做到前后端同时加固。

应用

主机

APP


认证

弱口令/空口令

web 后台系统弱口令

漏洞评级建议: 高危

  • 详情

    渗透测试过程中,发现目标 web 后台管理存在弱口令组合。

  • 造成的危害

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

  • 修复建议

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

ftp 弱口令

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

  • 详情

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

  • 造成的危害

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

  • 修复建议

    FTP 服务如果不是必须使用,可以关闭,或更新到最新版本,并不要采用弱口令。

ftp 匿名登陆

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

  • 详情

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

  • 造成的危害

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

  • 修复建议

    FTP 服务如果不是必须使用,可以关闭,或更新到最新版本,并关闭匿名访问。

SSH 弱口令

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    1. 修改口令,增加口令复杂度,如包含大小写字母、数字和特殊字符等。
    2. 修改默认口令,避免默认口令被猜解。
    3. 指定健壮的口令策略,比如指定每隔30天修改一次密码,密码不得与历史密码相同。

数据库弱口令

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    1. 修改口令,增加口令复杂度,如包含大小写字母、数字和特殊字符等。
    2. 修改默认口令,避免默认口令被猜解。
    3. 指定健壮的口令策略,比如指定每隔30天修改一次密码,密码不得与历史密码相同。

xxx 弱口令/空口令

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

  • 详情

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

  • 造成的危害

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

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

  • 修复建议

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

xxx 后台无安全认证

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

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

主机

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
    

应用

web

常见

代码执行漏洞

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    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. 限制文件上传类型。
    2. 限制上传文件大小。
    3. 确保上传文件被访问正确返回。
    4. 确保上传的文件放在安全的路径下,必要时可以将上传的文件存在 web server 之外的远程服务器。
    5. 设置项目目录权限:可写目录不执行,执行目录不可写。
    • 代码层面
      • 服务端采用白名单方式校验文件后缀,不建议采用黑名单方式校验后缀,黑名单方式校验可能导致攻击者利用文件特性、系统特性、黑名单不全等方式进行绕过攻击;
      • 服务端对上传文件进行重命名,防止利用目录跳转等方式控制上传目录;
      • 服务端使用系统函数来判断文件类型及文件内容是否合法,比如 PHP 中的 getimagesize;
      • 对上传的文件回显相对路径或者不显示路径;
    • 其他层面
      • 建议使用 OSS 静态存储服务器来存储用户上传的文件;
      • 设置目录权限限制,禁止上传目录的执行权限;
      • 保证使用的 Nginx、Apache、IIS 等容器版本不存在解析漏洞;
      • 保证使用的第三方处理软件的版本比如 FFmpeg、ImageMagick 等不存在已知漏洞

任意文件读取/下载

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

任意文件包含

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

任意文件删除

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

CSRF

漏洞评级建议: 中危

  • 详情

    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而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。
    

SSRF

漏洞评级建议: 中危

  • 详情

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

  • 造成的危害

    1. 内网、本地端口扫描,获取开放端口信息;
    2. 主机信息收集,web 应用指纹识别,获取服务 banner 信息等;
    3. 根据识别出的应用针对性的发送 payload 攻击,例如 struts2、redis、攻击内网、本地的应用程序及服务等;
    4. 穿越防火墙;
    5. 利用 file 等其他允许协议进行绕过攻击,比如利用 file 协议读取本地文件(file:///etc/passwd)
  • 修复建议

    1. 限制返回信息格式。
    2. 避免回显,删除或统一错误信息。
    3. 黑名单内网 ip 地址。
    4. 只允许使用 http 和 https 协议。
    
    • 解析目标URL
      • 获取scheme、host(推荐使用系统内置函数完成,避免自己使用正则提取)
    • 校验scheme
      • 检查 scheme 是否为合法 (如非特殊需求请只允许 http 和 https)
    • 获取解析IP
      • 解析 host 获取 dns 解析后的 IP 地址
    • 检测IP是否合法
      • 检查解析后的 IP 地址是否为外网地址或者合法 IP

XSS

漏洞评级建议: 高危

  • 详情

    XSS 又称 CSS,全称 Cross SiteScript,跨站脚本攻击,是 Web 程序中常见的漏洞,XSS 属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有 XSS 漏洞的网站中输入(传入)恶意的 HTML 代码,当其它用户浏览该网站时,这段 HTML 代码会自动执行,从而达到攻击的目的。如,盗取用户 Cookie、破坏页面结构、重定向到其它网站等。

    根据是否写入数据看来分类主要有反射性和存储型两大类。

    • 反射型跨站脚本(Reflected XSS)
      • 反射性 XSS 通常需要被攻击者点击对应的链接才能触发,且受到 XSS Auditor、NoScript 等防御手段的影响较大。
    • 储存型跨站脚本(Persistent XSS)
      • 存储型 XSS 由于存储在数据库或其他持久性中间件中,所以用户只需浏览了包含恶意代码的页面即可在用户无感知的情况下触发。

    区别:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。

  • 造成的危害

    1. 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼 JavaScript 以监控目标网站的表单输入,甚至发起基于 DHTML 更高级的钓鱼攻击方式。
    2. 网站挂马:跨站后利用 IFrame 嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
    3. 身份盗用:Cookie 是用户对于特定网站的身份验证标志,XSS 可以盗取用户的 Cookie,就可以获取到用户对网站的操作权限,从而查看用户隐私信息。
    4. 用户劫持:一些高级的 XSS,比如 xss 蠕虫等。
    5. 控制受害者机器向其他系统发起攻击。
  • 修复建议

    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. 确认接收的内容被妥善地规范化,仅包含最小的、安全的 Tag(没有 JavaScript),去掉任何对远程内容的引用(尤其是样式表和 JavaScript),使用 HTTPonly 的 cookie。
    
    • 代码层面
      • 在服务端进行输入验证(输入验证)
        • 服务器后端进行输入验证,包括输入的数据类型、数据长度、数据格式、特殊字符等进行验证。
      • 数据输出实体编码(输出编码)
        • 输出编码手段主要有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()来输出文本内容。
          • 2.必须要用innerHTML等等函数,则需要做类似php的htmlspecialchars的过滤。
      • Java:采用开源的实现 ESAPI library 参考网址:https://owasp.org/www-project-enterprise-security-api/
      • Asp:使用 Microsoft 防跨站点脚本库 (AntiXSS) 并将其设置为您的默认 HTML 编码器。

SQL 注入

漏洞评级建议: 高危

  • 详情

    页面存在 SQL 注入漏洞,SQL 注入漏洞允许攻击者通过操纵用户输入来更改后端 SQL 语句。当 web 应用程序接受直接放入 SQL 语句的用户输入,并且没有正确过滤掉危险字符时,就会发生 SQL 注入。

  • 造成的危害

    攻击者可以在易受攻击的系统上执行任意 SQL 语句。根据正在使用的后端数据库, SQL 注入漏洞会导致攻击者访问不同级别的数据/系统。不仅可以操作现有查询,还可以合并任意数据、使用子选择或追加附加查询。在某些情况下,可以读入或写出文件,或者在底层操作系统上执行 shell 命令。 某些 SQL 服务器包含存储和扩展过程(数据库服务器功能)。如果攻击者能够获得这些程序的访问权限,可能会危及整个机器。

  • 修复建议

    1. 程序代码里的所有查询语句,使用标准化的数据库查询语句 API 接口,设定语句的参数进行过滤一些非法的字符,防止用户输入恶意的字符传入到数据库中执行 sql 语句。
    2. 对用户提交的的参数安全过滤,像一些特殊的字符(,()*&……%# 等等)进行字符转义操作,以及编码的安全转换。
    3. 网站的报错信息尽量不要返回给客户端,比如一些字符错误,数据库的报错信息,尽可能的防止泄露给客户端。
    
    • 代码层面

      • 输入验证
        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编码,避免因上下层编码不一致导致一些过滤模型被绕过,比如宽字节注入等。

XXE

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

    1. 利用 XXE 进行 DOS 攻击;
    2. 读取本地任意敏感文件;
    3. 利用相关协议进行SSRF探测内网主机 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 等。

SSTI

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

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

URL Redirect

漏洞评级建议: 中危

  • 详情

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

  • 造成的危害

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

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

CRLF Injection

漏洞评级建议: 中危

  • 详情

    CRLF 是回车 + 换行(\r\n)的简称。在HTTP协议中,HTTP Header 与H TTP 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. 对参数做合法性校验以及长度限制。

HTTP参数污染漏洞

漏洞评级建议: 中危

  • 详情

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

  • 造成的危害

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

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

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

信息泄露类

测试系统环境开放

漏洞评级建议: 中危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    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 info

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

  • 详情

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

  • 造成的危害

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

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

逻辑类漏洞

未授权访问

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

  • 详情

    接口未授权访问,顾名思义在不进行请求授权的情况下,能够直接对相应的业务逻辑功能进行访问、操作等。通常是由于认证页面存在缺陷或者无认证、安全配置不当等导致的。

  • 造成的危害

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

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

越权漏洞

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

  • 详情

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

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

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

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

支付数据可被篡改

漏洞评级建议: 高危

  • 详情

    填写完缴款页面,在进入网银缴费页面前,确认缴费信息时,可通过 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 发送。

批量用户注册

漏洞评级建议: 中危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

存在爆破风险

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

  • 详情

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

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

  • 造成的危害

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

  • 修复建议

    1. 修改错误提示信息,加强逻辑认证。
    2. 针对登陆次数进行限制,可使用登陆远程 IP 或用户名两种方式进行锁定,登录错误次数 5 分钟之内超过 3 次锁定 1-3 小时。
    3. 对于管理类系统配置登陆用户允许的 IP 范围

验证码可绕过

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

  • 详情

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

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

  • 造成的危害

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

  • 修复建议

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

中间件/服务

Ghostcat(CVE-2020-1938)漏洞

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

iis 短文件名泄露漏洞

漏洞评级建议: 低危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    1. 升级 .net framework 至 4.0 版本或以上
    2. 修改注册表中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 值 NtfsDisable8dot3NameCreation 为 1

Elasticsearch 未授权访问漏洞

漏洞评级建议: 高危

  • 漏洞描述:

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

  • 危害:

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

  • 修复建议:

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

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

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

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

漏洞评级建议: 低危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

数据库

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

漏洞评级建议: 低危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    1. 不应该使用安装 Oracle 时默认的 SID(ORCL),应该设置复杂度较高的 SID。
    2. 对于短时间内难以通过第1种方式修补漏洞的情况,应考虑加强主机和网络层面的访问控制策略。例如采用白名单的方式,仅允许授权主机 IP 访问该端口,避免漏洞被攻击者恶意利用。

Redis 未授权访问漏洞

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    1. 禁止使用 root 权限启动 redis 服务。
    2. 对 redis 访问启动密码认证。
    3. 添加 IP 访问限制,并更改默认 6379 端口。

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 服务端口 进行过滤。
    

远程服务

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

漏洞评级建议: 低危

  • 详情

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

  • 造成的危害

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

  • 修复建议

    升级 openssh。

文件服务

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

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

分布式

Hadoop 未授权访问漏洞

漏洞评级建议: 高危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

ZooKeeper 未授权访问漏洞

漏洞评级建议: 高危

  • 详情

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。在通常情况下,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 服务;另外,可以限制攻击者执行高危命令。

协议

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

漏洞评级建议: 低危

  • 详情

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

  • 造成的危害

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

  • 修复建议

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

ssl 版本过低

漏洞评级建议: 信息

  • 详情:

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

  • 造成的危害:

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

  • 修复建议:

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


安卓

程序源文件安全

加固壳识别

漏洞评级建议: 高危

  • 详情:

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

  • 造成的危害:

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

  • 检测结果:

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

Java 代码反编译风险

漏洞评级建议: 高危

  • 详情:

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

  • 造成的危害:

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

  • 检测结果:

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

So 文件破解风险

漏洞评级建议: 低危

  • 详情:

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

  • 造成的危害:

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

  • 检测结果:

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

  • 修复建议:

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

篡改和二次打包风险

漏洞评级建议: 高危

  • 详情:

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

  • 造成的危害:

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

  • 检测结果:

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

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 签名机制漏洞。

资源文件泄露风险

漏洞评级建议: 低危

  • 详情:

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

  • 造成的危害:

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

  • 检测结果:

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

应用签名未校验风险

漏洞评级建议: 高危

  • 详情:

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

  • 造成的危害:

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

  • 检测结果:

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

代码未混淆风险

漏洞评级建议: 中危

  • 详情:

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

  • 造成的危害:

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

  • 检测结果:

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

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

漏洞评级建议: 低危

  • 详情:

    检测 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:debuggable 和 android:allowBackup 属性显式设置为 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:sharedUserId”属性值时,可能导致储存于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:sharedUserId”属性值时,可能导致储存于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:sharedUserId”属性值时,可能导致储存于 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:sharedUserId”属性值时,可能导致储存于该文件夹中的敏感信息被其他程序读写,导致应用内明文存储的个人身份信息、密码以及 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:show_fragment’)动态创建 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//)下的非默认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 经过加固保护,源代码中可能存在的不安全的浏览器调用漏洞险已被屏蔽。


测试项

弱口令组合爆破测试

  • 详情

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

  • 测试结果

    XXXXX

敏感文件目录爆破测试

  • 详情

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

  • 测试结果

    XXXXX

文件上传测试

  • 详情

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

  • 测试结果

    XXXXX

RDP 爆破测试

  • 详情

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

  • 测试结果

    XXXXX

Struts2 漏洞测试

  • 详情

    渗透测试过程中对目标网站测试Apache Struts2框架漏洞。

  • 测试结果

    XXXXX.

XSS 漏洞测试

  • 详情

    渗透测试过程中对目标网站进行XSS跨站脚本攻击漏洞测试。

  • 测试结果

    XXXXX.

SQL注入测试

  • 详情

    渗透测试过程中发现目标存在搜索功能,进行SQL注入测试。

  • 测试结果

    经检测,未注入成功,目标不存在SQL 注入测试。

Oracle 远程数据投毒漏洞测试

  • 详情

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

  • 测试结果

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

TLS安全可靠性测试

  • 详情

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

  • 测试结果

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