网站常见的安全漏洞

一般项目在验收之前都会有专业的机构进行安全漏洞扫描,下面是这些天碰到的几个常见的中高危漏洞安全。

1、跨站点脚本编制

漏洞描述:

跨站点脚本编制攻击是一种隐私违例,可让攻击者获取合法用户的凭证,并在与特定 Web 站点交互时假冒这位用户。 

这个攻击立足于下列事实:Web 站点中所包含的脚本直接将用户在 HTML 页面中的输入(通常是参数值)返回,而不预先加以清理。 如果脚本在响应页面中返回由 JavaScript 代码组成的输入,浏览器便可以执行此输入。 因此,有可能形成指向站点的若干链接,且其中一个参数包含恶意的 JavaScript 代码。 该代码将在站点上下文中(由用户浏览器)执行,这使得该代码有权访问用户在该站点中具有访问权的 cookie,以及站点中其他可通过用户浏览器访问的窗口。

攻击依照下列方式继续进行:攻击者诱惑合法用户单击攻击者生成的链接。 用户单击该链接时,便会生成对于 Web 站点的请求,其中的参数值含有恶意的 JavaScript 代码。 如果 Web 站点将这个参数值嵌入在响应的 HTML 页面中(这正是站点问题的本质所在),恶意代码便会在用户浏览器中运行。

脚本可能执行的操作如下:

[1] 将用户的 cookie(针对合法站点)发送给攻击者。

[2] 将可通过 DOMURL、表单字段等)访问的信息发送给攻击者。

结果是在易受攻击的站点上,受害用户的安全和隐私受到侵害。

修复建议:

若干问题的补救方法在于对用户输入进行清理。

通过验证用户输入未包含危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 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; 

                    } 

}

 

 

 

 

猜你喜欢

转载自study121007.iteye.com/blog/2304151
今日推荐