Web 常见漏洞
检测到目标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 常见漏洞的更多相关文章
- Web常见漏洞修复建议
一.SQL注入修复建议 1.过滤危险字符,例如:采用正则表达式匹配union.sleep.and.select.load_file等关键字,如果匹配到则终止运行. 2.使用预编译语句,使用PDO需要注 ...
- 手工挖掘web常见漏洞时的一些经验总结
一.前提: 漏洞挖掘原则 所有变量 所有头 cookie中的变量 逐个变量删除 漏洞的本质 数据与指令的混淆 对用户输入信息过滤不严判断失误,误将数据当指令 二.经典漏洞: 1.身份认证 常用弱口令/ ...
- 常见 WEB 安全漏洞(转)
SQL注入 成因:程序未对用户的输入的内容进行过滤,从而直接代入数据库查询,所以导致了sql 注入 漏洞 . 思路:在URL处可以通过 单引号 和 and 1=1 and 1=2 等语句进行手工测试s ...
- Web中间件 - 常见漏洞总结
*文章来源:https://blog.egsec.cn/archives/472 *本文将主要说明:Web中间件常见漏洞的产生原因以及修复方案 什么是Web中间件? 百度百科是这样解释的:中间件是介于 ...
- 【OWASP TOP10】2021年常见web安全漏洞TOP10排行
[2021]常见web安全漏洞TOP10排行 应用程序安全风险 攻击者可以通过应用程序中许多的不同的路径方式去危害企业业务.每种路径方法都代表了一种风险,这些风险都值得关注. 什么是 OWASP TO ...
- 常见web中间件漏洞(四)Tomcat漏洞
这部分好久没写了,继续更新web中间件漏洞思路整理(不复现) ,争取...整理完 前几篇指路链接: nginx: https://www.cnblogs.com/lcxblogs/p/13596239 ...
- [web安全]Web应用漏洞攻击分析与防范
网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...
- Windows XP与Windows 7系统常见漏洞
1.Windows XP系统常见漏洞 Windows XP系统常见的漏洞有UPNP服务漏洞.升级程序漏洞.帮助和支持中心漏洞.压缩文件夹漏洞.服务拒绝漏洞.Windows Media Player漏洞 ...
- Android常见漏洞
Android常见漏洞 漏洞名称: Log敏感信息泄露 漏洞描述: 程序运行期间打印了用户的敏感信息,造成泄露 修改建议: 建议禁止隐私信息的log 漏洞名称: web https校验错误忽略漏洞 漏 ...
随机推荐
- xlrd加载Excal表格编码格式的问题
Python自动化测试中,利用xlrd加载文件名,代码如下: newpath = os.chdir('文件所在目录') filename = "文件名.xlsx" 报IOError ...
- Spring源码分析之Bean的创建过程详解
前文传送门: Spring源码分析之预启动流程 Spring源码分析之BeanFactory体系结构 Spring源码分析之BeanFactoryPostProcessor调用过程详解 本文内容: 在 ...
- C 语言编程习惯总结
笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢~ 引言 编程习惯的培养需要的是一个长期的过程,需要不断地总结,积累,并且我们需要从意识上认识其重要性,一个良好的编 ...
- 4G DTU采用的4G通信模块介绍
4g通信模块一种基于4G网络进行数据传输的工业级通讯终端,其主要作用是将采集到的传感器数据.仪表数据,传输至服务器/上位机.监控中心.众山研发生产的4g无线通讯设备--4G DTU是一款物联网数据 ...
- lora传输模块的特点概述
现今Lora已经是一种在物联网中广泛应用的技术,它是一种无线调制的方式,相对于传统的FSK调制技术来说,Lora在抑制同频干扰方面有非常大的优势,它解决了无法同时兼顾距离.抗扰和功耗不足的问题;另外l ...
- Java学习的第四十七天
1.用类函数来写时间类 import java.util.Scanner; public class Cjava { public static void main(String[]args) { T ...
- shell脚本之整数二次元比较操作符
1.常用二次元比较操作符知识 我们也可以通过man test查看 提示: (1) ">"和"<"符号,在单括中需要转义,在双中括号中不需要转义,因为 ...
- [Luogu P4215] 踩气球 (线段树)
题面 传送门:https://www.luogu.org/problemnew/show/P4215 Solution 这题十分有意思. 首先,我们可以先想想离线做法,因为在线做法可以从离线做法推出. ...
- python开发基础(二)常用数据类型调用方法
1 数字: int 2 3 int : 转换,将字符串转化成数字 4 num1 = '123' 5 num2 = int (a) 6 numadd = num2 +1000 7 print(num2) ...
- 【SpringCloud】03.微服务的设计原则
微服务的设计原则: 一.AKF拆分原则 业界对于可扩展的系统架构设计有一个朴素的理念:通过加机器就可以解决容量和可用性问题(如果一台不行就两台). Y轴(功能)--关注应用中功能划分,基于不同的业务拆 ...