Web常见漏洞及修复建议-上

admin 2022年10月5日15:26:38评论29 views字数 2581阅读8分36秒阅读模式

Web常见漏洞及修复建议

1.SQL注⼊

漏洞描述

Web程序中对于⽤户提交的参数未做过滤直接拼接到SQL语句中执⾏,导致参数中的特殊字符破坏了SQL语句原有逻辑,攻击者可以利⽤ 该漏洞执⾏任意SQL语句,如查询数据、下载数据、写⼊webshell、执⾏系统命令以及绕过登录限制等。

修复建议

代码层最佳防御sql漏洞⽅案:

使⽤预编译sql语句查询和绑定变量

  1. 使⽤预编译语句,使⽤PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使⽤数据库提供的参数化查询接⼝,参数 化的语句使⽤参数⽽不是将⽤户输⼊变量嵌⼊到SQL语句中。当前⼏乎所有的数据库系统都提供了参数化SQL语句执⾏接⼝,使⽤此接⼝可 以⾮常有效的防⽌SQL注⼊攻击。
  2. 对进⼊数据库的特殊字符(’”<>&*;等)进⾏转义处理,或编码转换。
  3. 确认每种数据的类型,⽐如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
  4. 数据长度应该严格规定,能在⼀定程度上防⽌⽐较长的SQL注⼊语句⽆法正确执⾏。
  5. ⽹站每个数据层的编码统⼀,建议全部使⽤UTF-8编码,上下层编码不⼀致有可能导致⼀些过滤模型被绕过。
  6. 严格限制⽹站⽤户的数据库的操作权限,给此⽤户提供仅仅能够满⾜其⼯作的权限,从⽽最⼤限度的减少注⼊攻击对数据库的危害。
  7. 避免⽹站显⽰SQL错误信息,⽐如类型错误、字段不匹配等,防⽌攻击者利⽤这些错误信息进⾏⼀些判断。
  8. 过滤危险字符,例如:采⽤正则表达式匹配union、sleep、and、select、load_file等关键字,如果匹配到则终⽌运⾏。

2.XSS

漏洞描述
  1. Web程序代码中对⽤户提交的参数未做过滤或过滤不严,导致参数中的特殊字符破坏了HTML页⾯的原有逻辑,攻击者可以利⽤该漏洞执⾏恶意HTML/JS代码、构造蠕⾍、篡改页⾯实施钓鱼攻击、以及诱导⽤户再次登录,然后获取其登录凭证等。
  2. XSS攻击对Web服务器本⾝虽⽆直接危害,但是它借助⽹站进⾏传播,对⽹站⽤户进⾏攻击,窃取⽹站⽤户账号⾝份信息等,从⽽也会对⽹站产⽣较严重的威胁。
XSS攻击可导致以下危害:
  1. 钓鱼欺骗:最典型的就是利⽤⽬标⽹站的反射型跨站脚本漏洞将⽬标⽹站重定向到钓鱼⽹站,或者通过注⼊钓鱼JavaScript脚本以监控⽬标⽹站的表单输⼊,甚⾄攻击者基于DHTML技术发起更⾼级的钓鱼攻击。
  2. ⽹站挂马:跨站时,攻击者利⽤Iframe标签嵌⼊隐藏的恶意⽹站,将被攻击者定向到恶意⽹站上、或弹出恶意⽹站窗⼝等⽅式,进⾏挂马。
  3. ⾝份盗⽤:Cookie是⽤户对于特定⽹站的⾝份验证标志,XSS攻击可以盗取⽤户的cookie,从⽽利⽤该cookie盗取⽤户对该⽹站的操作权限。
  4. 盗取⽹站⽤户信息:当窃取到⽤户cookie从⽽获取到⽤户⾝份时,攻击者可以盗取到⽤户对⽹站的操作权限,从⽽查看⽤户隐私信息。
  5. 垃圾信息发送:在社交⽹站社区中,利⽤XSS漏洞借⽤被攻击者的⾝份发送⼤量的垃圾信息给特定的⽬标群。
  6. 劫持⽤户Web⾏为:⼀些⾼级的XSS攻击甚⾄可以劫持⽤户的Web⾏为,从⽽监视⽤户的浏览历史、发送与接收的数据等等。
  7. XSS蠕⾍:借助XSS蠕⾍病毒还可以⽤来打⼴告、刷流量、挂马、恶作剧、破坏数据、实施DDoS攻击等。
修复建议

XSS漏洞本质上是⼀种html注⼊,也就是将html代码注⼊到⽹页中。那么其防御的根本就是在将⽤户提交的代码显⽰到页⾯上时做好⼀系列的过滤与转义

  1. 过滤输⼊的数据,对例如:“ ‘ ”,“ “ ”,” < “,” > “,” on* “,script、iframe等危险字符进⾏严格的检查。这⾥的输⼊不仅仅是⽤户可以直接交互的输⼊接⼝,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
  2. 不仅验证数据的类型,还要验证其格式、长度、范围和内容。
  3. 不仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进⾏。
  4. 对输出到页⾯的数据进⾏相应的编码转换,如HTML实体编码、JS编码等。对输出的数据也要检查,数据库⾥的值有可能会在⼀个⼤⽹站的多处都有输出,即使在输⼊做了编码等操作,在各处的输出点时也要进⾏检查。

3.XXE

漏洞描述

CSRF是跨站请求伪造,不攻击⽹站服务器,⽽是冒充⽤户在站内的正常操作。通常由于服务端没有对请求头做严格过滤引起的。CSRF会造成密码重置,⽤户伪造等问题,可能引发严重后果。绝⼤多数⽹站是通过 cookie 等⽅式辨识⽤户⾝份,再予以授权的。所以要伪造⽤户的正常操作,最好的⽅法是通过 XSS 或链接欺骗等途径,让⽤户在本机(即拥有⾝份 cookie 的浏览器端)发起⽤户所不知道的请求。 CSRF攻击会令⽤户在不知情的情况下攻击⾃⼰已经登录的系统。

修复建议
  1. 验证请求的Referer是否来⾃本⽹站,但可被绕过。
  2. 在请求中加⼊不可伪造的token,并在服务端验证token是否⼀致或正确,不正确则丢弃拒绝服务。

4.SSRF

漏洞描述

SSRF(Server-Side Request Forgery,服务器端请求伪造):通俗的来说就是我们可以伪造服务器端发起的请求,从⽽获取客户端所不能得到的数据。SSRF漏洞形成的原因主要是服务器端所提供的接⼝中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进⾏过滤。

漏洞造成的危害有:
  1. 可以对外⽹、服务器所在内⽹、本地进⾏端⼝扫描,获取⼀些服务的banner信息;
  2. 攻击运⾏在内⽹或本地的应⽤程序(⽐如溢出);
  3. 对内⽹Web应⽤进⾏指纹识别,通过访问默认⽂件实现;
  4. 攻击内外⽹的Web应⽤,主要是使⽤Get参数就可以实现的攻击(⽐如Struts2漏洞利⽤,SQL注⼊等);
  5. 利⽤File协议读取本地⽂件。
修复建议
  1. 禁⽤不需要的协议,只允许HTTP和HTTPS请求,可以防⽌类似于file://, gopher://, ftp:// 等引起的问题。
  2. ⽩名单的⽅式限制访问的⽬标地址,禁⽌对内⽹发起请求
  3. 过滤或屏蔽请求返回的详细信息,验证远程服务器对请求的响应是⽐较容易的⽅法。如果web应⽤是去获取某⼀种类型的⽂件。那么在把返回结果展⽰给⽤户之前先验证返回的信息是否符合标准。
  4. 验证请求的⽂件格式
  5. 禁⽌跳转
  6. 限制请求的端口为http常⽤的端⼝,比如 80、443、8080、8000等
  7. 统⼀错误信息,避免⽤户可以根据错误信息来判断远端服务器的端⼝状态。


原文始发于微信公众号(猫因的安全):Web常见漏洞及修复建议-上

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月5日15:26:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Web常见漏洞及修复建议-上https://cn-sec.com/archives/1330409.html

发表评论

匿名网友 填写信息