检测到目标URL存在http host头攻击漏洞

描述:为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER["HTTP_HOST"]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。

解决办法

web应用程序应该使用SERVER_NAME而不是host header。

在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。

检测到目标站点可能存在跨站请求伪造漏洞

描述:跨站请求伪造(CSRF)漏洞是指攻击者通过其他方法(如社会工程学),诱导web应用的合法授权用户在不知情的情况下执行攻击者预期的操作。成功的跨站请求伪造攻击可造成攻击者以其他用户的权限执行指定的操作,如修改用户数据,窃取用户信息等等。

跨站请求伪造攻击的严重性依赖于被攻击用户的权限和目标web应用的具体业务。

解决方法

对于重要操作,建议采用POST方法替代GET方法,可有效提高攻击者利用的难度。 或者在表单中增加csrf验证字段或验证码,并在完成操作前给予用户提示信息。 在服务器端增加Referer请求字段的验证。

检测到目标URL启用了不安全的HTTP方法

描述:检测到目标Web服务器配置成允许下列其中一个(或多个)HTTP 方法:DELETE, SEARCH,COPY,MOVE, PROPFIND, PROPPATCH, MKCOL ,LOCK ,UNLOCK 。

这些方法表示可能在服务器上使用了 WebDAV。由于dav方法允许客户端操纵服务器上的文件,如果没有合理配置dav,有可能允许未授权的用户对其进行利用,修改服务器上的文件。

解决方法

修改WEB应用的web.xml部署文件。在里面插入下面几行代码就搞定了,把需要屏蔽的方法加在里面。如果应用包比较多也没必要一个个改,直接修改Tomcat的web.xml就可以了,这样在Tomcat中运行的实例都会有效。

<security-constraint>
<web-resource-collection>
<web-resource-name>baseproject</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>

<security-constraint>用于限制对资源的访问;

<auth-constraint>用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;

<url-pattern>指定需要验证的资源

<http-method>指定那些方法需要验证

检测到目标服务器启用了OPTIONS方法

描述:OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。OPTIONS方法可能会暴露一些敏感信息,这些信息将帮助攻击者准备更进一步的攻击。

解决方法

修改web.xml文件的协议

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

在web.xml添加如下代码

<security-constraint>
<web-resource-collection>
<web-resource-name>baseproject</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint>
<description>baseproject</description>
<role-name>All Role</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>

检测到目标服务器存在应用程序错误

描述:如果者通过伪造包含非应用程序预期的参数或参数值的请求,来探测应用程序(如以下示例所示),那么应用程序可能会进入易受的未定义状态。 者可以从应用程序对该请求的响应中获取有用的信息,且可利用该信息,以找出应用程序的弱点。

例如,如果参数字段应该是单引号括起来的字符串(如在 ASP 脚本或 SQL 查询中),那么注入的单引号将会提前终止字符串流,从而更改脚本的正常流程/语法。

错误消息中泄露重要信息的另一个原因,是脚本编制引擎、Web 服务器或数据库配置错误。

以下是一些不同的变体:

[1] 除去参数

[2] 除去参数值

[3] 将参数值设置为空值

[4] 将参数值设置为数字溢出(+/- 99999999)

[5] 将参数值设置为危险字符,如 ' " ' " ) ;

[6] 将某字符串附加到数字参数值

解决方法

[1] 检查入局请求,以了解所有预期的参数和值是否存在。 当参数缺失时,发出适当的错误消息,或使用缺省值。

[2] 应用程序应验证其输入是否由有效字符组成(解码后)。 例如,应拒绝包含空字节(编码为 %00)、单引号、引号等的输入值。

[3] 确保值符合预期范围和类型。 如果应用程序预期特定参数具有特定集合中的值,那么该应用程序应确保其接收的值确实属于该集合。 例如,如果应用程序预期值在 10..99 范围内,那么就该确保该值确实是数字,且在 10..99 范围内。

[4] 验证数据属于提供给客户端的集合。

[5] 请勿在生产环境中输出调试错误消息和异常。

点击劫持:X-Frame-Options未配置

描述:点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持。

解决方法

Nginx:

配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:

add_header X-Frame-Options SAMEORIGIN;

Apache:

配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:

1、打开httpd.conf 找到LoadModule headers_module modules/mod_headers.so模块,去掉前面的# 号 启用该模块

2、在此处加上 Header always append X-Frame-Options SAMEORIGIN

<IfModule headers_module>
RequestHeader unset DNT env=bad_DNT
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

检测到目标URL存在电子邮件地址模式

描述:Spambot 搜寻因特网站点,开始查找电子邮件地址来构建发送自发电子邮件(垃圾邮件)的邮件列表。如果检测到含有一或多个电子邮件地址的响应,可供利用以发送垃圾邮件。而且,找到的电子邮件地址也可能是专用电子邮件地址,对于一般大众应是不可访问的。

解决方法

从 Web 站点中除去任何电子邮件地址,使恶意的用户无从利用。

jQuery 存在 XSS 漏洞

描述:jQuery 是一个 JavaScript 库。 jQuery 在过滤用户输入数据时,所使用的正则表达式存在缺陷,可能导致 location.hash 跨站漏洞。

解决方法

升级jquery版本

泄露软件版本信息

描述:在浏览器里面泄露程序错误处理信息或软件版本等信息,可能导致进一步的攻击。

解决方法

隐藏apache版本信息:

开启 httpd.conf,加入以下两行:
ServerTokens ProductOnly
ServerSignature Off

隐藏Nginx版本信息:

开启 nginx.conf,在http { }里加上:
server_tokens off;

Web 常见漏洞的更多相关文章

  1. Web常见漏洞修复建议

    一.SQL注入修复建议 1.过滤危险字符,例如:采用正则表达式匹配union.sleep.and.select.load_file等关键字,如果匹配到则终止运行. 2.使用预编译语句,使用PDO需要注 ...

  2. 手工挖掘web常见漏洞时的一些经验总结

    一.前提: 漏洞挖掘原则 所有变量 所有头 cookie中的变量 逐个变量删除 漏洞的本质 数据与指令的混淆 对用户输入信息过滤不严判断失误,误将数据当指令 二.经典漏洞: 1.身份认证 常用弱口令/ ...

  3. 常见 WEB 安全漏洞(转)

    SQL注入 成因:程序未对用户的输入的内容进行过滤,从而直接代入数据库查询,所以导致了sql 注入 漏洞 . 思路:在URL处可以通过 单引号 和 and 1=1 and 1=2 等语句进行手工测试s ...

  4. Web中间件 - 常见漏洞总结

    *文章来源:https://blog.egsec.cn/archives/472 *本文将主要说明:Web中间件常见漏洞的产生原因以及修复方案 什么是Web中间件? 百度百科是这样解释的:中间件是介于 ...

  5. 【OWASP TOP10】2021年常见web安全漏洞TOP10排行

    [2021]常见web安全漏洞TOP10排行 应用程序安全风险 攻击者可以通过应用程序中许多的不同的路径方式去危害企业业务.每种路径方法都代表了一种风险,这些风险都值得关注. 什么是 OWASP TO ...

  6. 常见web中间件漏洞(四)Tomcat漏洞

    这部分好久没写了,继续更新web中间件漏洞思路整理(不复现) ,争取...整理完 前几篇指路链接: nginx: https://www.cnblogs.com/lcxblogs/p/13596239 ...

  7. [web安全]Web应用漏洞攻击分析与防范

    网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...

  8. Windows XP与Windows 7系统常见漏洞

    1.Windows XP系统常见漏洞 Windows XP系统常见的漏洞有UPNP服务漏洞.升级程序漏洞.帮助和支持中心漏洞.压缩文件夹漏洞.服务拒绝漏洞.Windows Media Player漏洞 ...

  9. Android常见漏洞

    Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏 ...

随机推荐

  1. vue自定义指令 默认图片

    /**  * 检测图片是否存在  * @param url  */ function imageIsExist(url) {     return new Promise((resolve) => ...

  2. 【总结】swagger

    1.swagger概念及配置 1.1基本概念 1.是一款让你更好的书写API文档的规范且完整框架. 2.提供描述.生产.消费和可视化RESTful Web Service. 3.是由庞大工具集合支撑的 ...

  3. NB-IoT的数据链路层和上行传输信道类型

    NB-IoT的数据链路层 NB-IoT在LTE系统的基础上对数据链路层进行了大量简化,但整体上还是保持了原有的框架.数据链路层是二层协议,包含了3个子层:MAC子层.RLC子层和PDCP子层. 以网络 ...

  4. AQS源码深入分析之独占模式-ReentrantLock锁特性详解

    本文基于JDK-8u261源码分析 相信大部分人知道AQS是因为ReentrantLock,ReentrantLock的底层是使用AQS来实现的.还有一部分人知道共享锁(Semaphore/Count ...

  5. EBAZ4205学习资源整理

    EBAZ4205是一块矿机的控制板,芯片是ZYNQ7010,某鱼上应该不超过30元就能买一块,垃圾佬狂喜 经过不复杂的操作就能进行正常开发,由于货量比较大现在已经有很多大佬写了很多很多好的资料,这里我 ...

  6. Luogu P3324 [SDOI2015]星际战争

    二分+最大流 首先考虑二分答案 然后可以发现对于已知时间,判断是否可以将所有机器人摧毁可以用网络流 建立源点和汇点,源点向每一个激光武器连一条容量为$time*b[i]$的边,表示该激光武器在$tim ...

  7. H5--自动刷新

    每30秒中刷新当前html页面: <meta http-equiv="refresh" content="30">

  8. 一个 Task 不够,又来一个 ValueTask ,真的学懵了!

    一:背景 1. 讲故事 前几天在项目中用 MemoryStream 的时候意外发现 ReadAsync 方法多了一个返回 ValueTask 的重载,真是日了狗了,一个 Task 已经够学了,又来一个 ...

  9. Ubuntu17.10 React Native 环境搭建

    React Native 环境搭建 环境:ubuntu17.10 安装依赖 必须安装的依赖有:Node.React Native 命令行工具以及 JDK 和 Andriod Studio. 安装nod ...

  10. JavaSE基础语法学习-方法&数组

    方法 Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则:方法的本意是功能块,就是实现某 ...