一般项目在验收之前都会有专业的机构进行安全漏洞扫描,下面是这些天碰到的几个常见的中高危漏洞安全。
1、跨站点脚本编制
漏洞描述: |
“跨站点脚本编制”攻击是一种隐私违例,可让攻击者获取合法用户的凭证,并在与特定 Web 站点交互时假冒这位用户。 这个攻击立足于下列事实:Web 站点中所包含的脚本直接将用户在 HTML 页面中的输入(通常是参数值)返回,而不预先加以清理。 如果脚本在响应页面中返回由 JavaScript 代码组成的输入,浏览器便可以执行此输入。 因此,有可能形成指向站点的若干链接,且其中一个参数包含恶意的 JavaScript 代码。 该代码将在站点上下文中(由用户浏览器)执行,这使得该代码有权访问用户在该站点中具有访问权的 cookie,以及站点中其他可通过用户浏览器访问的窗口。 攻击依照下列方式继续进行:攻击者诱惑合法用户单击攻击者生成的链接。 用户单击该链接时,便会生成对于 Web 站点的请求,其中的参数值含有恶意的 JavaScript 代码。 如果 Web 站点将这个参数值嵌入在响应的 HTML 页面中(这正是站点问题的本质所在),恶意代码便会在用户浏览器中运行。 脚本可能执行的操作如下: [1] 将用户的 cookie(针对合法站点)发送给攻击者。 [2] 将可通过 DOM(URL、表单字段等)访问的信息发送给攻击者。
结果是在易受攻击的站点上,受害用户的安全和隐私受到侵害。 |
修复建议: |
若干问题的补救方法在于对用户输入进行清理。 通过验证用户输入未包含危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的 Javascript 代码、运行各种操作系统命令,等等。 建议过滤出所有以下字符: [1] |(竖线符号) [2] & (& 符号) [3];(分号) [4] $(美元符号) [5] %(百分比符号) [6] @(at 符号) [7] '(单引号) [8] "(引号) [9] \'(反斜杠转义单引号) [10] \"(反斜杠转义引号) [11] <>(尖括号) [12] ()(括号) [13] +(加号) [14] CR(回车符,ASCII 0x0d) [15] LF(换行,ASCII 0x0a) [16] ,(逗号) [17] \(反斜杠) |
修复方式: |
对传递的参数进行验证,可使用正则表达式来处理, Pattern pattern = Pattern .compile("[`~!@#$%^&*()+=|{}':;',\"\\[\\].<>/~!@?#¥%……&*()——+|{}【】‘;:”“’。,、SELECT]"); 还有,一般像这种xss漏洞,喜欢窃取别人的cookie,这个也可以检测一下url中是否存在cookie字样 |
2、目录列表
漏洞描述: |
Web 服务器通常配置成不允许目录列表含有脚本和文本内容。不过,如果 Web 服务器配置不当,便有可能发送对于特定目录(而不是文件)的请求来检索目录列表。名称为“some_dir”的目录,其目录列表的检索请求示例如下:http://TARGET/some_dir/ 利用 Web 服务器和 Web 应用程序中会强迫 Web 服务器返回目录列表的特定问题,例如“URL 诡计”攻击,或形态异常的 HTTP 请求,是另一个获取目录列表的可能方式。您应该从应用程序或服务器供应商下载补丁,以解决这些安全漏洞。 在某些运行于 Win32 操作系统的 Web 服务器中,使用短文件名(8.3 DOS 格式)可以略过访问控制。 例如,Web 服务器会拒绝浏览 /longdirname/ 目录,但它的 DOS 8.3 对等名称 /LONGDI~1/ 却开放浏览。 注意:攻击者使用目录列表来查找 Web 目录中,通常不通过 Web 站点上的链接显现出来的文件。配置文件及可能含有敏感信息的 Web 应用程序其他组件,都可以利用这个方式来查看。 |
修复建议: |
1. 将 Web 服务器配置成拒绝列出目录。 2. 根据 Web 服务器或 Web 应用程序上现有的问题来下载特定安全补丁。部分已知的目录列表问题列在这个咨询的“引用”字段中。 |
修复方式: |
此处我采用的容器是jetty,所以可以直接修改一下配置,在webdefault.xml文件中,将dirAllowed属性值由true设置为false即可 <init-param> <param-name>dirAllowed</param-name> <param-value>false</param-value> </init-param> |
3、启用了不安全的 HTTP 方法
漏洞描述: |
可能原因 Web 服务器或应用程序服务器是以不安全的方式配置的 技术描述
似乎 Web 服务器配置成允许下列其中一个(或多个)HTTP 方法(动词) - DELETE - SEARCH - COPY - MOVE - PROPFIND - PROPPATCH - MKCOL - LOCK - UNLOCK - PUT 这些方法可能表示在服务器上启用了 WebDAV,可能允许未授权的用户对其进行利用。 |
修复建议: |
如果服务器不需要支持 WebDAV,请务必禁用它,或禁止不必要的 HTTP 方法(动词)。 |
修复方式: |
在nginx中 关闭WebDav,只允许GET 和 POST请求 location / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; limit_except GET POST { deny all; } } |
评论