常见漏洞修复方案

1 信息泄露类

1.1 目录遍历

【漏洞描述】
由于服务器中间件配置不当,客户端可以直接访问站点文件目录。如目录中恰好存在敏感文件(如配置文件、备份文件、数据库文件等),可被直接下载,导致严重的敏感信息泄露。
【漏洞危害】
黑客可获得服务器上的文件目录结构,从而下载敏感文件,为后续攻击进行准备,进一步加大是服务沦陷的分险。
【修复建议】

  1. 通过修改配置文件,去除中间件(如IIS、apache、tomcat)的文件目录索引功能
  2. 设置目录权限
  3. 在每个目录下创建一个空的index.html页面。

1.2 Phpinfo

【漏洞描述】
web站点的某些测试页面可能会使用到PHP的phpinfo()函数,会输出服务器的关键信息,从而造成信息泄露,通过获取的信息可进行下一步的攻击计划!
【漏洞危害】
黑客可获得服务器信息、web的绝对路径以及php版本等信息,为后续攻击进行准备,进一步加大是服务沦陷的分险。
【修复建议】

  1. 删除该PHP文件!

1.3 备份文件泄露

【漏洞描述】
误将网站备份文件或是敏感信息文件存放在某个网站目录下,外部黑客可通过暴力破解文件名等方法下载该备份文件,导致网站敏感信息泄露。
【漏洞危害】
黑客可能会获得服务器上的文件目录结构、敏感账号、网站源码等数据,通过代码审计等手段进行后续攻击,进一步加大是服务沦陷的分险。
【修复建议】

  1. 不要在网站目录下存放网站备份文件或敏感信息的文件。
  2. 如需存放该类文件,请将文件名命名为难以猜解的字符串并存在web以外的目录。

1.4 内网IP地址泄露

【漏洞描述】
网站的内部IP地址,常常被攻击者通过信息收集,得到其内网的IP地址,对于渗透攻击,打下良好基础,如内网Ip地址段,IP路由等等。
【漏洞危害】
网站的内部IP地址,常常被攻击者通过信息收集,得到其内网的IP地址,对于渗透攻击,打下良好基础,如内网Ip地址段,IP路由等等
【修复建议】

  1. 建议开发人员不要在源代码中注释中包含有内网IP。
  2. 关闭Web 应用程序/服务器中有问题的详细错误消息。
  3. 删除携带内网IP地址的页面,并制定完善的安全编码策略,并且及时检查存在的页面代码是否包含内部IP地址问题。
  4. 加强编程人员良好的安全编码意识,系统地学习安全编码的知识,减少源代码泄露的风险。
  5. 建立起良好的代码审核、审查体系,由专人负责代码的审计,增加安全监督环节。
  6. 合理配置WEB服务器,禁止在数据交互中,传输内网IP地址。

1.5 不安全HTTP请求方法

【漏洞描述】
目标服务器启用了不安全的传输方法,如PUT、TRACE、DELETE、MOVE等,这些方法表示可能在服务器上使用了 WebDAV,由于dav方法允许客户端操纵服务器上的文件,如上传、修改、删除相关文件等危险操作,如果没有合理配置dav,有可能允许未授权的用户对其进行利用,修改服务器上的文件。
【漏洞危害】
黑客利用此漏洞会使网站目录结构发生变化,随意删除新增网站文件,使网站无法正常工作,甚至直接造成服务器沦陷。
【修复建议】

  1. 关闭不安全的传输方法,推荐只使用POST、GET方法!
  2. 如果服务器不需要支持 WebDAV,请务必禁用它。
  3. 为允许webdav的目录配置严格的访问权限,如认证方法,认证需要的用户名,密码。

1.6 错误信息泄露

【漏洞描述】
黑客可通过特殊的攻击向量,使web服务器出现500、404等相关错误,导致信息泄漏如绝对路径、webserver版本、源代码、sql语句等敏感信息,恶意攻击者很有可能利用这些信息实施进一步的攻击。
【漏洞危害】
黑客通过此漏洞获得服务器和web等敏感信息,为后续攻击进行准备,进一步加大是服务沦陷的分险。
【修复建议】

  1. 自定义错误页面或归一化错误页面信息提示!
  2. 修正代码!

1.7 密码明文传输

【漏洞描述】
用户登录过程中使用明文传输用户登录信息,若用户遭受中间人攻击时,攻击者可直接获取该用户登录账户,从而进行进一步渗透。
【漏洞危害】
黑客若利用此漏洞得到用户登录账户,可配合其他漏洞使用,增大服务器沦陷的分险,还会对用户造成损失及骚扰。
【修复建议】
1、用户登录信息使用加密传输,如密码在传输前使用安全的算法加密后传输,可采用的算法包括:不可逆hash算法加盐(4位及以上随机数,由服务器端产生);安全对称加密算法,如AES(128、192、256位),且必须保证客户端密钥安全,不可被破解或读出;非对称加密算法,如RSA(不低于1024位)、SM2等。
2、使用https来保证传输的安全。

1.8 个人隐私信息泄露

【漏洞描述】
个人隐私信息泄露指泄露了个人的基本信息、设备信息、账户信息、隐私信息、社会关系信息、网络行为信息等敏感数据信息,常见多为基本信息(姓名、性别、年龄、身份证号码、电话号码、Email地址及家庭住址等在内的个人基本信息)、账户信息( 网银帐号、第三方支付帐号,社交帐号和重要邮箱帐号等)等。
【漏洞危害】
a) 垃圾短信源源不断
b) 骚扰电话接二连三
c) 垃圾邮件铺天盖地
d) 冒名办卡透支欠款
e) 案件事故从天而降
f) 冒充他人要求转帐
g) 帐户钱款不翼而飞
h) 个人名誉无端受损
【修复建议】

  1. 删除对应泄露的敏感信息。
  2. 对系统处理、存储或传输的数据进行分类,根据分类进行访问控制。
  3. 对用户敏感信息的传输和存储进行加密。

1.9 IIS短文件名泄露

【漏洞描述】
Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。危害:攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
【漏洞危害】
黑客可通过该漏洞尝试获取网站服务器下存放文件的文件名,达到获取更多信息来入侵服务器的目的。
【修复建议】

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

2 认证和授权类

2.1 未授权访问

【漏洞描述】
由于没有对相关敏感页面进行访问权限的检查,导致攻击者可未授权访问,而引发重要权限可被操作、数据库、网站目录等敏感信息泄露!
【漏洞危害】
黑客可以使用此漏洞进行重要权限可被操作、数据库、网站目录等敏感信息泄露,最后使服务器沦陷。
【修复建议】

  1. 在系统中,加入用户身份认证机制或者tonken验证,防止可被直接通过连接就可访问到用户的功能进行操作,简而言之,一定对系统重要功能点增加权限控制,对用户操作进行合法性验证。
  2. 对相关页面进行严格的访问权限的控制以及对访问角色进行权限检查!

2.2 任意文件下载

【漏洞描述】
文件下载处由于未对下载路径进行过滤,利用路径回溯符…/跳出程序本身的限制目录实现来下载任意文件,如下载系统密码文件等!
【漏洞危害】
通过任意文件下载,可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等。
【修复建议】

  1. 将下载区独立出来,放在项目路径外,给每个下载资源固定的URL,而不是所有的下载资源都是统一的URL:http://www.test.com/downloadilename=文件名
  2. 净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
  3. 任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。
  4. 要下载的文件地址保存至数据库中。
  5. 文件路径保存至数据库,让用户提交文件对应ID下载文件。
  6. 用户下载文件之前需要进行权限判断。
  7. 文件放在web无法直接访问的目录下。
  8. 不允许提供目录遍历服务。
  9. 公开文件可放置在web应用程序下载目录中通过链接进行下载。
  10. 记录文件下载日志。

2.3 任意文件读取

【漏洞描述】
网站的业务需要,可能提供文件查看的功能,如果对用户查看的文件不做限制,就能够查看任意的文件,可以是源文件,敏感文件等等。
【漏洞危害】
黑客可以通过任意文件读取漏洞可以读取配置的信息甚至系统文件更重要,严重的话,就可能导致SSRF,进而漫游内网。
【修复建议】

  1. 将下载区独立出来,放在项目路径外,给每个下载资源固定的URL,而不是所有的下载资源都是统一的URL:http://www.test.com/downloadilename=文件名
  2. 净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
  3. 任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。
  4. 要下载的文件地址保存至数据库中。
  5. 文件路径保存至数据库,让用户提交文件对应ID下载文件。
  6. 用户下载文件之前需要进行权限判断。
  7. 文件放在web无法直接访问的目录下。
  8. 不允许提供目录遍历服务。
  9. 公开文件可放置在web应用程序下载目录中通过链接进行下载。
  10. 记录文件下载日志。

2.4 信息越权查询

【漏洞描述】
由于没有对用户访问角色的权限进行严格的检查及限制,导致当前账号可对其他账号进行相关查询。
【漏洞危害】
越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响应包中,页面不一定能看见)中返回登录名、登录密码、手机号、身份证等敏感信息,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱裤,而且很难被防火墙发现。
【修复建议】

  1. 鉴权,服务端对请求的数据和当前用户身份做校验,在每个页面加载前进行权限认证;
  2. 不要直接使用对象的实名或关键字,例如订单ID使用随机数;
  3. 基础安全架构,完善用户权限体系,要知道哪些数据对于哪些用户,那些数据不应该由哪些用户操作;
  4. 特别敏感操作可以让用户再次输入密码或其他的验证信息。

2.5 任意密码重置

【漏洞描述】

  1. 任意账号密码重置
    在密码找回、密码重置功能中,如果后台逻辑存在问题,可能实现重置任意账号的密码。一般手段为:在密码找回、密码重置的最后一步将账号ID修改为目标ID,如果系统未有严格校验,将导致对目标ID进行密码修改。
  2. 绕过验证重置密码
    区别于“任意账号密码重置”,“绕过验证码重置密码”主要发生在劫持用户会话后,修改用户的密码,一般主要是绕过用户的原密码、手机验证码、邮箱验证码之类。
    【漏洞危害】
    黑客可以轻松的得到用户的账号和密码,对网站造成严重损失以及给用户造成骚扰甚至损失,如金融账号导致银行卡盗刷,社交账号故意挑拨关系,甚至故意发布不实言论,触犯法律,后果简直不堪设想。可见漏洞的严重性。
    【修复建议】
  1. 此类问题往往出现在多步骤密码找回/重置功能中,校验每一步的有效性。
  2. 严格排查逻辑缺陷涉及错误,避免只在客户端进行校验,服务端要强制校验。
  3. 图片验证码以及手机短信验证码的安全校验

2.6 功能越权操作

【漏洞描述】
越权操作漏洞是一种很常见的逻辑安全漏洞。是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他账户的增、删、查、改功能,从而导致越权漏洞
【漏洞危害】
越权操作会导致站点的数据不安全,用户可以操作本不属于自己操作范围的数据,导致网站数据被泄露,危机网站以及用户安全。
【修复建议】

  1. 基础安全架构,完善用户权限体系。要知道哪些数据对于哪些用户,哪些数据不应该由哪些用户操作;
  2. 鉴权,服务端对请求的数据和当前用户身份做校验;
  3. 不要直接使用对象的实名或关键字。
  4. 对于可控参数进行严格的检查与过滤!

2.7 生物识别绕过(人脸,指纹)

【漏洞描述】
生物特征识别是一种系统,可根据个人独特的身体特征来帮助识别一个人,我们将这些功能称为“生物特征数据”,有超过20个唯一标识符,包括指纹、面部特征和声音特征,生物识别技术用于验证个人身份,验证个人身份的生物识别被绕过。
【漏洞危害】
攻击者可以通过生物识别绕过登录其他用户账号,使其他账号造成损失及困扰,在管理员账号泄露的情况下,很可能导致进一步损失。

  1. 【修复建议】
  2. 指纹模块制造商需要增强指纹模块的活体检测能力,例如对手指真皮进行检测、对脉搏进行检测,同时手机厂商应该优先采购这些安全性高的模块;高安全需求的场合,采用多因素复合认证,同时建议多采用基于用户行为习惯的识别、基于行为风控的判断。
  3. 通常对于软件层面的一些安全问题,都可以通过系统升级解决,对出问题的代码进行打补丁,一定时间的收敛后,威胁会大大降低,防止生物信息泄露。
  4. 指纹识别录制可验证两次,第一次指纹中心,第二次由内逐渐向外扩散,清晰录制指纹走向;针对于声纹识别,使用不同的频率段来对声纹进行收集,对声纹使用随机几种转化率,某一个频率段不使用固定的频率;对于人脸识别,加固对活体人脸的具体点位的刻画印象,人脸识别可以再添加一个眨眼,转动头等动作,进行二次识别。

2.8 url跳转

【漏洞描述】
恶意用户完全可以借用URL跳转漏洞来欺骗安全意识低的用户,从而导致钓鱼攻击,如:构造一个假的登陆页面、“中奖”、活动优惠、公告提醒等之类的欺诈,同时借助URL跳转,也可以突破常见的基于“白名单方式”的一些安全限制,如传统IM里对于URL的传播会进行安全校验,但是对于大公司的域名及URL将直接允许通过并且显示会可信的URL,而一旦该URL里包含一些跳转漏洞将可能导致安全限制被绕过。
【漏洞危害】
黑客借助此漏洞来进行钓鱼攻击,以此来诱骗受害人对网站的信任,导致用户造成损失及更大的危险。可以进行不法网站的推广或者挂马,来达到自己的目的。
【修复建议】
建议对实现跳转功能的函数进行数据验证,保证所有生成的链接都是来自于我们可信域的(白名单或设置可信域),可以避免用户跳转至恶意链接,从而防止用户被利用此漏洞跳转至钓鱼、挂马网站。

2.9 jsonp跨域请求

【漏洞描述】
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页js是无法与不是 server1.example.com的服务器沟通,而 HTML 的

  1. 严格安装 JSON 格式标准输出 Content-Type 及编码( Content-Type : application/json; charset=utf-8 )。
  2. 严格过滤 callback 函数名及 JSON 里数据的输出。
  3. 严格限制对 JSONP 输出 callback 函数名的长度(如防御上面 flash 输出的方法)。
  4. 其他一些比较“猥琐”的方法:如在 Callback 输出之前加入其他字符(如:/**/、回车换行)这样不影响 JSON 文件加载,又能一定程度预防其他文件格式的输出。还比如 Gmail 早起使用 AJAX 的方式获取 JSON ,听过在输出 JSON 之前加入 while(1) ;这样的代码来防止 JS 远程调用。

2.10 SSO认证缺陷

【漏洞描述】
SSO认证就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统,SSO认证存在缺陷,可越权登录他人账户。
【漏洞危害】
攻击者可以登录其他用户账号,使其他账号造成损失及困扰,在管理员账号泄露的情况下,很可能导致进一步损失。
【修复建议】
客户端 ?、身份提供者 (IdP) 和服务提供者 (SP)。 C 的目标,通常是由用户引导的 Web 浏览器,是访问 SP 提供的服务或资源。

  1. 使用 RelayState 时,实现必须仔细清理它们允许的 URL 方案,禁止未编码的字符;
  2. SP 应可禁止接受未经请求的响应。
  3. 强制执行单个会话。让 SP 确保它在所有这些消息中都与同一个 C 交互。 SP 可以使用 IP 地址来识别客户端并将协议消息绑定在一起。
  4. 通过用户的反馈。如果 IdP 在身份验证期间通知用户尝试访问 SP 上的 URI 并在向 SP 发出身份验证断言之前请求明确同意,则可以避免这种情况。通过这种方式,用户可能会意识到认证将被发送到与预期不同的 SP,并且停止协议。
  5. 通过 cookie 实现,强制连接绑定使用会话。
  6. 自签名客户端证书或移动端序列号绑定。 SP 确保它与同一客户端交互的一种简单而有效的方法是要求后者提供自签名证书。

2.11 ip伪造

【漏洞描述】
可以通过伪造IP地址能够绕过应用或系统IP地址限制,访问和执行系统相关功能。
【漏洞危害】
攻击者可利用该漏洞访问受限系统,造成应用系统数据泄漏(如欺骗白名单等),也可进行系统欺骗,对用户造成骚扰(如短信轰炸、邮件轰炸等)及对系统通正常运行造成压力(如可提交大量垃圾数据等)。
【修复建议】

  1. 使用getServerName()代替getHeader(“Host”);
  2. 在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法Host header,或者在Apache和Nginx里指定一个ServerName名单;同时,Apache开启UseCanonicalName选项。

3 命令执行类

3.1 Struts2远程命令执行

【漏洞描述】
Struts2远程命令执行漏洞是指Struts2框架的代码未对用户可控参数做过滤,导致用户输入的数据直接带入执行命令的代码中,可被用来执行任意命令。
【漏洞危害】
黑客可以随意执行系统命令、继承Web服务程序的权限去执行系统命令或读写文件、反弹 shell、控制整个网站甚至服务器、进一步进行内网渗透。
【修复建议】

  1. 建议用户到官方获取最新补丁或者最新版本程序!

3.2 Jboss远程代码执行

【漏洞描述】
Jboss远程命令执行漏洞是指Jboss的代码未对用户可控参数做过滤,导致用户输入的数据直接带入执行命令的代码中,可被用来执行任意命令。
【漏洞危害】
黑客可以随意执行系统命令、继承Web服务程序的权限去执行系统命令或读写文件、反弹 shell、控制整个网站甚至服务器、进一步进行内网渗透。
【修复建议】

  1. 建议用户到官方获取最新补丁或者最新版本程序!

3.3 文件包含

【漏洞描述】
在程序代码中进行文件包含操作时,由于传入的文件路径被用户控制,且未做合理校验,或者校检被绕过,从而程序包含了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入。
【漏洞危害】
攻击者可以先把上传的静态文件,或网站日志文件作为代码执行,或者包含远程服务器上的恶意文件,进而获取到服务器权限。
【修复建议】

  1. 尽量避免使用动态文件包含。
  2. 程序中限定可被包含的文件目录,禁止使用路径回溯。
  3. 对可能需要被包含的文件建立索引,用户提交的索引ID相关参数,程序再进行实际文件匹配。
  4. 对所有输入提交可能包含的文件地址,包括服务器本地文件及远程文件,进行严格的检查,参数中不允许出现…/之类的目录跳转符。
  5. 严格检查include类的文件包含函数中的参数是否外界可控。
  6. 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

3.4 反序列化

【漏洞描述】
应用中存在将序列化后的数据进行反序列化的功能,而该序列化数据被用户控制,导致反序列化后恶意代码被执行,造成命令执行等危害。
【漏洞危害】
黑客可以通过漏洞随意执行系统命令、继承Web服务程序的权限去执行系统命令或读写文件、反弹 shell、控制整个网站甚至服务器、进一步进行内网渗透。
【修复建议】

  1. 执行完整性检查,如:任何序列化对象的数字签名,以防止恶意对象创建或数据篡改。
  2. 在创建对象之前强制执行严格的类型约束,因为代码通常被期望成一组可定义的类。绕过这种技术的方法已经被证明,所以完全依赖于它是不可取的。
  3. 如果可能,隔离运行那些在低特权环境中反序列化的代码。
  4. 记录反序列化的例外情况和失败信息,如:传入的类型不是预期的类型,或者反序列处理引发的例外情况。
  5. 限制或监视来自于容器或服务器传入和传出的反序列化网络连接。
  6. 监控反序列化,当用户持续进行反序列化时,对用户进行警告

4 暴力破解类

4.1 账号枚举

【漏洞描述】
在登录处,用户名存在与否,其提示的错误消息不一致。可据此判断用户名是否存在,导致用户名遍历攻击,攻击者在获取合法用户名之后再进行密码爆破,最终爆破成功。
【漏洞危害】
黑客利用特殊手段可获取该系统或者网站存在的用户用户名,后续可配合暴力破解、密码重置等漏洞进行攻击,如若攻击成功对网站、对个人损失是比较大的。
【修复建议】

  1. 对登陆过程的错误提示信息统一处理(如:用户名或密码错误,请重试)。
  2. 增加验证码校验步骤。
  3. 针对多次重复请求的IP地址以及请求会话进行封锁(阈值设立,20请求)

4.2 密码爆破

【漏洞描述】
由于没有对登录页面进行相关的防暴力破解机制,如无验证码、有验证码但验证码未在服务器端校验以及无登录错误次数限制等,导致攻击者可通过暴力破解获取用户登录账户及口令,从而获取网站登录访问权限!
【漏洞危害】
用户密码被重置、敏感目录和参数被枚举、用户个人信息被盗取在暗网售卖等,对数据安全产生了重大影响。
【修复建议】

  1. 添加验证码机制,加入图片(验证码动态生成且满足随机性)或者短信验证码(验证码具备超时时限一般为1分钟,且在该时限内错误次数超过3次则进行锁定1分钟后方能重新获取验证码,超时后验证码自动失效)!
  2. 验证码必须在服务器端进行校验,客户端的一切校验都是不安全的!
  3. 帐号锁定机制,在密码输入错误相应次数时锁定该用户。
  4. 针对多次重复请求的IP地址以及请求会话进行封锁(阈值设立,20请求)
  5. 要求用户设置复杂的密码。
  6. 采用token防御暴力破解。

4.3 验证码爆破(短信、图片)

【漏洞描述】
验证码比较单一,复杂度较低,同时用户获取的手机短信验证码过期时间较长,无输入失败次数限制,攻击者可利用此缺陷,进行验证码爆破。
【漏洞危害】
黑客利用配合其他漏洞获取用户账号、登录系统、冒充他人等,也可注册任意手机号码账号恶意占用系统资源,造成大量资源浪费和损失。
【修复建议】

  1. 服务器端对用户提交邮箱号码及发送邮件条数进行验证限制。
  2. 针对多次重复请求的IP地址以及请求会话进行封锁(阈值设立,20请求)。
  3. 验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。
  4. 正对图形验证码增加噪点,防止被识别绕过。
  5. 确保验证码在用一次即失效。

5 注入类

5.1 SQL注入

【漏洞描述】
SQL注入是一种攻击手法,利用到了“应用程序通过合并用户提交的数据进行建立SQL语句”中的弱点,若应用程序收到用户输入时直接放入SQL语句,没有过滤敏感字符串,导致参数直接进入 SQL 查询语句,导致恶意攻击者通过漏洞可以获取数据库相关信息,包括数据库用户权限,数据库服务器版本以及数据库名称。
【漏洞危害】
由于服务端对客户端传入的参数值未做合理校验,而客户端用户输入的参数拼凑到SQL语句,使得原有的语法结构发生了改变,从而使得用户输入的数据变成了代码被执行。
【修复建议】
代码层最佳防御sql漏洞方案:采用sql语句预编译和绑定变量,是防御sql注入的最佳方法。

  1. 所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
  2. 对进入数据库的特殊字符(’”&*;等)进行转义处理,或编码转换。
  3. 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
  4. 数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
  5. 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
  6. 严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
  7. 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

5.2 XXE

【漏洞描述】
XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击。实体可以通过预定义在文档中调用,实体的标识符可访问本地或远程资源。在这个过程中引入了”污染”源,XML解析器对XML文档处理导致信息泄漏等安全问题。
【漏洞危害】
当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害,通常攻击者会将payload注入XML文件中,一旦文件被执行,将会读取服务器上的本地文件,并对内网发起访问扫描内部网络端口。
【修复建议】

  1. 尽可能使用简单的数据格式(如: JSON),避免对敏感数据进行序列化。
  2. 及时修复或更新应用程序或底层操作系统使用的所有XML处理器和库。同时,通过依赖项检测,将SOAP更新到1.2版本或更高版本。
  3. 在服务器端实施积极的(“白名单”)输入验证、过滤和清理,以防止在XML文档、标题或节点中出现恶意数据。
  4. 验证XML或XSL文件上传功能是否使用XSD验证或其他类似验证方法来验证上传的XML文件。

5.3 SSL注入

【漏洞描述】
SSL的出现是为了赋予HTML静态页面动态的效果,通过SSI来执行系统命令;并返回对应的结果,如果再网站目录中发现了这样的文件后缀名,并且网站对于SSI的输入没有做到严格过滤或者过滤不充分;很有可能被SSI注入攻击。
【漏洞危害】
黑客可以随意执行系统命令、继承Web服务程序的权限去执行系统命令或读写文件、反弹 shell、控制整个网站甚至服务器、进一步进行内网渗透。
【修复建议】
进行过滤,过滤这些语法中的特殊字符
关闭服务器SSI相关功能

5.4 CRLF注入

【漏洞描述】
CRLF 是“回车 + 换行”(rn)的简称。在 HTTP 协议中,HTTP Header 与 HTTP Body 是用两个 CRLF 分隔的,浏览器就是根据这两个 CRLF 来取出 HTTP 内容并显示出来。所以,一旦攻击者能够控制 HTTP 消息头中的字符,注入一些恶意的换行,这样攻击者就能注入一些会话 Cookie 或者 HTML 代码,例如会造成一个“会话固定漏洞”等其他漏洞。
【漏洞危害】
攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出
【修复建议】

  1. 在用户可控数据被放置于HTTP响应头的情况中,严格检查其是否存在%0d%0a、rn字符,如存在则直接报错处理。
  2. 检查响应到客户端的HTTP头,对头部数据中出现两个CRLF(两个换行)的情况,直接报错处理。

5.5 XPATH注入

【漏洞描述】
XPath 即为 XML 路径语言,是一门在XML文档中查找信息的语言。XPath 基于 XML 的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力,可用来在 XML 文档中对元素和属性进行遍历。XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。
【漏洞危害】
a) 在URL及表单中提交恶意XPath代码,可获取到权限限制数据的访问权,并可修改这些数据;
b) 可通过此类漏洞查询获取到系统内部完整的XML文档内容。
c) 逻辑以及认证被绕过,它不像数据库那样有各种权限,xml没有各种权限的概念,正因为没有权限概念,因此利用xpath构造查询的时候整个数据库都会被用户读取。
【修复建议】

  1. 数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。
  2. 检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串,如过滤[] ‘ “ and or 等全部过滤,像单双引号这类,可以对这类特殊字符进行编码转换或替换
  3. 对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息或者用统一的报错页面代替(如updataxml()这类)
  4. 通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。

5.6 SOAP注入

【漏洞描述】
soap注入就是在webservice 的soap协议,连接web服务和客户端的接口处的注入,通过在发送的soap消息参数内添加注入语句来达到注入效果,常见的有sql注入,也有xml注入,代码注入。
【漏洞危害】
由于服务端对客户端传入的参数值未做合理校验,而客户端用户输入的参数拼凑到后端代码中,使得原有的语法结构发生了改变,从而使得用户输入的数据变成了代码被执行,黑客可以随意执行系统命令、对数据库进行增删改查,继承Web服务程序的权限去执行系统命令或读写文件、反弹 shell、控制整个网站甚至服务器、进一步进行内网渗透。
【修复建议】

  1. 梳理业务需求,限制参数字符及长度。
  2. 程序代码上对参数做数据校验(如:正则匹配)
  3. 对用户输入的特殊字符(’”&*;等)进行转义处理,或编码转换。
  4. 严格限制网站用户的操作权限。

5.7 命令注入

【漏洞描述】
应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。当用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常命令中,造成系统命令执行。
【漏洞危害】
黑客可以随意执行系统命令、继承Web服务程序的权限去执行系统命令或读写文件、反弹 shell、控制整个网站甚至服务器、进一步进行内网渗透。
【修复建议】

  1. 梳理业务需求,限制参数字符及长度。
  2. 对特殊字符的过滤,如 – && # $ “ ‘ ; 等
  3. 程序代码上对参数做数据校验(如:正则匹配)

5.8 JSON注入

【漏洞描述】
JSON 是存储和交换文本信息的语法,是轻量级的文本数据交换格式。类似xml,但JSON 比 XML 更小、更快,更易解析。所以现在接口数据传输都采用json方式进行,和sql 注入一样,只是数据表现形式不同而已。
【漏洞危害】
由于服务端对客户端传入的参数值未做合理校验,而客户端用户输入的参数拼凑到SQL语句,使得原有的语法结构发生了改变,从而使得用户输入的数据变成了代码被执行。
【修复建议】

  1. 所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
  2. 对进入数据库的特殊字符(’”&*;等)进行转义处理,或编码转换。
  3. 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
  4. 数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
  5. 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
  6. 严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
  7. 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

6 跨站脚本类

6.1 反射型跨站脚本攻击

【漏洞描述】
Web程序代码中把用户提交的参数未做过滤或过了不严就直接输出到页面,参数中的特殊字符打破了HTML页面的原有逻辑,黑客可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫传播、篡改页面实施钓鱼攻击、诱以及导用户再次登录,然后获取其登录凭证等。
【漏洞危害】

  1. 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者通过注入钓鱼JavaScript脚本以监控目标网站的表单输入,甚至攻击者基于DHTML技术发起更高级的钓鱼攻击。
  2. 网站挂马:跨站时,攻击者利用Iframe标签嵌入隐藏的恶意网站,将被攻击者定向到恶意网站上、或弹出恶意网站窗口等方式,进行挂马攻击。
  3. 身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS攻击可以盗取用户的cookie,从而利用该cookie盗取用户对该网站的操作权限。如果一个网站管理员用户的cookie被窃取,将会对网站引发巨大的危害。
  4. 盗取网站用户信息:当窃取到用户cookie从而获取到用户身份时,攻击者可以盗取到用户对网站的操作权限,从而查看用户隐私信息。
  5. 垃圾信息发送:在社交网站社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
  6. 劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,从而监视用户的浏览历史、发送与接收的数据等等。
  7. XSS蠕虫:借助XSS蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
    【修复建议】
    xss漏洞本质上是一种html注入,也就是将html代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义。
  8. 假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
  9. 不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
  10. 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
  11. 对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

6.2 存储型跨站脚本攻击

【漏洞描述】
Web程序代码中把用户提交的参数未做过滤或过了不严就直接输出到页面,参数中的特殊字符打破了HTML页面的原有逻辑,黑客可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫传播、篡改页面实施钓鱼攻击、诱以及导用户再次登录,然后获取其登录凭证等。
【漏洞危害】

  1. 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者通过注入钓鱼JavaScript脚本以监控目标网站的表单输入,甚至攻击者基于DHTML技术发起更高级的钓鱼攻击。
  2. 网站挂马:跨站时,攻击者利用Iframe标签嵌入隐藏的恶意网站,将被攻击者定向到恶意网站上、或弹出恶意网站窗口等方式,进行挂马攻击。
  3. 身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS攻击可以盗取用户的cookie,从而利用该cookie盗取用户对该网站的操作权限。如果一个网站管理员用户的cookie被窃取,将会对网站引发巨大的危害。
  4. 盗取网站用户信息:当窃取到用户cookie从而获取到用户身份时,攻击者可以盗取到用户对网站的操作权限,从而查看用户隐私信息。
  5. 垃圾信息发送:在社交网站社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
  6. 劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,从而监视用户的浏览历史、发送与接收的数据等等。
  7. XSS蠕虫:借助XSS蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
    【修复建议】
    xss漏洞本质上是一种html注入,也就是将html代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义。
  8. 假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
  9. 不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
  10. 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
  11. 对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

6.3 DOM型跨站脚本攻击

【漏洞描述】
Web程序代码中把用户提交的参数未做过滤或过了不严就直接输出到页面,参数中的特殊字符打破了HTML页面的原有逻辑,黑客可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫传播、篡改页面实施钓鱼攻击、诱以及导用户再次登录,然后获取其登录凭证等。
【漏洞危害】

  1. 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者通过注入钓鱼JavaScript脚本以监控目标网站的表单输入,甚至攻击者基于DHTML技术发起更高级的钓鱼攻击。
  2. 网站挂马:跨站时,攻击者利用Iframe标签嵌入隐藏的恶意网站,将被攻击者定向到恶意网站上、或弹出恶意网站窗口等方式,进行挂马攻击。
  3. 身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS攻击可以盗取用户的cookie,从而利用该cookie盗取用户对该网站的操作权限。如果一个网站管理员用户的cookie被窃取,将会对网站引发巨大的危害。
  4. 盗取网站用户信息:当窃取到用户cookie从而获取到用户身份时,攻击者可以盗取到用户对网站的操作权限,从而查看用户隐私信息。
  5. 垃圾信息发送:在社交网站社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
  6. 劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,从而监视用户的浏览历史、发送与接收的数据等等。
  7. XSS蠕虫:借助XSS蠕虫病毒还可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。
    【修复建议】
    xss漏洞本质上是一种html注入,也就是将html代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义。
  8. 假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
  9. 不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
  10. 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
  11. 对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

7 逻辑功能类

7.1 验证码功能缺陷

【漏洞描述】
系统的验证码机制不完全,没有达到验证码的效果,如:验证码可以重复使用,验证码出现在返回数据中,测试验证码没有删除等。
【漏洞危害】
黑客利用配合其他漏洞获取用户账号、登录系统、冒充他人等,也可注册任意手机号码账号恶意占用系统资源,造成大量资源浪费和损失。
【修复建议】

  1. 建议修改应用程序源代码,在登录模块中增加对验证码正确性的验证。
  2. 要保证在验证用户名、密码或其他信息之前首先验证验证码的正确性。
  3. 确保验证码在用一次即失效。
  4. 删除在返回数据中存在的验证码数据。

7.2 短信轰炸

【漏洞描述】
由于没有对短信或者邮件发送次数进行限制,导致可无限次发送短信或邮件给用户,从而造成短信轰炸,进而可能被大量用户投诉,从而影响公司声誉!
【漏洞危害】
发送大量垃圾信息骚扰用户,消耗短信费用。
【修复建议】

  1. 在服务端限制发送频率,如1分钟1条,并限制单个用户(或IP)最大发送条数,如5条
  2. 使用图形验证码或Token机制,增加批量利用成本

7.3 支付漏洞

【漏洞描述】
在支付流程、活动报名、积分兑换等功能中,篡改一些关键信息,使得低价格支付、0费用支付等情况发生。

  1. 订单金额篡改
  2. 商品单价篡改
  3. 商品数量修改为负值
  4. 代金券/优惠券/折扣率篡改

  5. 【漏洞危害】
    攻击者可以在存在漏洞的平台修改支付价格、支付状态、购买商品数量、优惠券、积分等,使得商家及用户损失巨大。
    【修复建议】
  1. 客户端提交的订单列明商品ID和数量,避免直接提交订单金额,防止单价及订单总额篡改。
  2. 后台校验商品数量,避免出现负值。
  3. 后端检查每一项值,包括支付状态。
  4. 校验价格、数量参数,比如产品数量只能为正整数,并限制购买数量。
  5. 支付参数进行 MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题。
  6. 金额超过阈值,进行人工审核。
  7. 为每一张代金券/优惠券/折扣券设定不可预测的ID,并设定归属账号,使用时直接提交票券的ID,后台进行使用。

7.4 会话标识未更新

【漏洞描述】
在登录行为发生后,如果cookie中这个值没有发生变化,直接使用用户浏览器登录时所提供的会话标识。
【漏洞危害】
攻击者通过某种方式(如XSS)将自己的Id置入了被攻击者的浏览器,将会话标识改为某个攻击者预设的值,被攻击者正常登陆,若服务器接收了这个预设值,那么相当于攻击者获得了被攻击者登录后的权限
【修复建议】

  1. 始终生成新的会话,供用户成功认证时登录。防止用户操纵会话标识。请勿接受用户浏览器登录时所提供的会话标识
  2. 将用户进入登陆页面时所产生的会话也就是session清空,然后让跟踪这个会话的cookie过期,这样服务器就不再掌握有关这个会话的任何信息了。

7.5 文件上传

【漏洞描述】
文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严或webserver相关解析漏洞未修复而造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器
【漏洞危害】
攻击者可通过此漏洞上传恶意脚本文件到服务器,且能获取上传后的文件访问路径,从而导致getshell,导致服务器被沦陷,威胁内网安全。
【修复建议】

  1. 对上传文件类型进行限制,并且不能只做前端的限制,而要前端和后端一起限制,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小,或是将上传的文件放在安全的路径下,尽量放于webserver之外的远程服务器等。
  2. 严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。
  3. 对上传文件格式进行严格校验及安全扫描,防止上传恶意脚本文件;
  4. 设置权限限制,禁止上传目录的执行权限;
  5. 严格限制可上传的文件类型;
  6. 严格限制上传的文件路径。
  7. 文件扩展名服务端白名单校验。
  8. 文件内容服务端校验。
  9. 上传文件重命名。
  10. 隐藏上传文件路径。

7.6 CSRF

【漏洞描述】
跨站请求伪造(Cross-Site Request Forgery,CSRF)是一种使已登录用户在不知情的情况下执行某种动作的攻击。因为攻击者看不到伪造请求的响应结果,所以CSRF攻击主要用来执行动作,而非窃取用户数据。
【漏洞危害】
当受害者是一个普通用户时,CSRF可以实现在其不知情的情况下转移用户资金、发送邮件等操作;但是如果受害者是一个具有管理员权限的用户时CSRF则可能威胁到整个Web系统的安全。
【修复建议】

  1. 服务器端对访问关键功能页面的Referer信息进行校验,由于csrf漏洞的利用方式一般都是从钓鱼网站等其他网站发起的,因此通过对Referre信息进行验证可以防御CSRF攻击;
  2. 对请求链接保持原有参数不变的前提下,另外添加一个参数Token,其值是随机的。这样攻击者因为不知道Token而无法构造出合法的请求进行攻击。

7.7 SSRF

【漏洞描述】
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
【漏洞危害】
可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息,攻击运行在内网或本地的应用程序(比如溢出),对内网web应用进行指纹识别,通过访问默认文件实现,攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等),利用file协议读取服务器本地文件等。
【修复建议】

  1. 设置URI访问白名单,限制访问对象。
  2. 在发生错误或警告的情况下,统一提示信息。
  3. 禁用不必要的协议(如:gopher协议)。
  4. 对参数进行严格的正则校验,避免出现超出预期的URI。

7.8 任意用户注册

【漏洞描述】
在账号注册流程中,对注册用户未做身份鉴定或鉴定手段失效,导致用户可任意注册账号。
【漏洞危害】
任意账号注册会造成什么样的危害取决于其具体业务,薅羊毛、拒绝服务、垃圾注册等等,所以任意账号注册还是需要进行一定的控制。
【修复建议】

  1. 结合身份认证机制进行有效的身份验证,主要是防止验证码被绕过,防止分步骤验证用户身份。

7.9 任意用户登陆

【漏洞描述】
任意账号登录的危害性是非常严重的,不仅会导致所有账号失陷,威胁客户利益,甚至直接威胁到管理员账号。

  1. 验证码绕过
  2. 万能密码 – 往往是由于登录框处存在SQL注入导致的,另外一种可能性是网站的后门密码。
  3. 登录凭证伪造 – 猜解出登录凭证(客户端cookie),直接登录账号。
    【漏洞危害】
    攻击者可以登录其他用户账号,使其他账号造成损失及困扰,在管理员账号泄露的情况下,很可能导致进一步损失。
    【修复建议】
  1. 使用安全的验证体系,安全的验证码机制,防止验证码被绕过。
  2. 修复可能的SQL注入漏洞。
  3. 使用安全的会话及会话ID。

7.10 密码找回

【漏洞描述】
由于在密码找回处存在逻辑缺陷,导致攻击者可以成功绕过逻辑缺陷,进行用户的密码找回,不仅会导致所有账号失陷,威胁客户利益,甚至直接威胁到管理员账号。
a) 验证码过于简单,并且没有对请求修改次数做出限制。
b) 虽然设置了请求阀值,但被猜解除了验证方式,病找到了绕过方式,验证码为4-5位的数字容易爆破。
c) 使用了特定值的加密作为token,被猜解到使用了时间戳的MD5值。在实际过程中我们也可以尝试用户名,手机,邮箱,等等的不同加密方式。
d) 没有严格控制token,在返回的url中发现token信息
e) 找回密码问题的答案在页面源码中可以看到……。
f) 没有管理好token和用户间一对一的关系,导致在最后提交请求的过程中修改了uid导致任意用户密码重置。
g) 注册过程的绑定手机页面用过参数修改,将任意账号绑定至可控手机,在通过密码找回流程找回等等。
【漏洞危害】
攻击者可以登录其他用户账号,使其他账号造成损失及困扰,在管理员账号泄露的情况下,很可能导致进一步损失。
【修复建议】

  1. 使用安全的验证体系,安全的验证码机制,防止验证码被绕过。
  2. 严格规范代码,防止测试用户账号密码、找回密码问题答案在前端源码中看到等等。
  3. 严格控制token、验证码等信息,防止在服务器返回数据中泄露。
  4. 对于可控参数进行严格的检查与过滤
  5. 修复可能的SQL注入漏洞。
  6. 使用安全的会话及会话ID。

来源:Guoke324

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月8日
下一篇 2022年8月8日

相关推荐