Web攻击

https://blog.csdn.net/xsyu_liuyan/article/details/62418223
https://www.zhihu.com/question/22953267/answer/80141632

服务器漏洞:
1)缓冲区溢出
2)目录遍历

网页漏洞:
1)伪造cookies
2)强制访问
3)拒绝服务DDOS
4)SQL注入
5)跨站脚本攻击XSS


目录遍历

一. 什么是目录遍历漏洞

目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。

二. 目录遍历漏洞原理

程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。

三. 目录遍历漏洞实例

读取文件的url:

http://www.test.com/my.jsp?file=abc.html

恶意url:

http://www.test.com/my.jsp?file=../../Windows.system.ini

四. 目录遍历漏洞的防御

1.对用户的输入进行验证,特别是路径替代字符“../”

2.尽可能采用白名单的形式,验证所有输入

3.合理配置web服务器的目录权限

4.程序出错时,不要显示内部相关细节

五.出现场景

出现在文件读取或者展示图片等对文件读取交互的功能块。


缓冲区溢出

缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行动

如果有人利用栈中分配的缓冲区写溢出,悄悄地将一段恶意代码的首地址作为返回地址覆盖写到原先的正确的返回地址处。那么程序在执行ret的时候会悄悄地转移到这个恶意代码段处执行,从而可以轻易获得系统特权,进而进行各种非法操作

造成缓冲区溢出的原因:

系统没有对作为缓冲区的数组进行越界检查

缓冲区溢出带来的危害:

缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到系统权限,然后为所欲为。

利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,它可被利用来执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。


SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

SQL注入的产生原因通常表现在以下几方面:
①不当的类型处理;
②不安全的数据库配置;
③不合理的查询集处理;
④不当的错误处理;
⑤转义字符处理不合适;
⑥多个提交处理不当。

预防SQL注入:

1、检查变量数据类型和格式

如果你的SQL语句是类似where id={$id}这种形式,数据库里所有的id都是数字,那么就应该在SQL被执行前,检查确保变量id是int类型;如果是接受邮箱,那就应该检查并严格确保变量一定是邮箱的格式,其他的类型比如日期、时间等也是一个道理。

2、过滤特殊符号

对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。以PHP为例,通常是采用addslashes函数,它会在指定的预定义字符前添加反斜杠转义,这些预定义的字符是:单引号 (‘) 双引号 (“) 反斜杠 () NULL。

3、绑定变量,使用预编译语句

小结
1、不要随意开启生产环境中Webserver的错误显示。
2、永远不要信任来自用户端的变量输入,有固定格式的变量一定要严格检查对应的格式,没有固定格式的变量需要对引号等特殊字符进行必要的过滤转义。
3、使用预编译绑定变量的SQL语句。
4、做好数据库帐号权限管理。
5、严格加密处理用户的机密信息。


cookies欺骗

Cookies欺骗是通过盗取、修改、伪造Cookies的内容来欺骗Web系统,并得到相应权限或者进行相应权限操作的一种攻击方式。

欺骗方法:

1、跳过浏览器,直接对通讯数据改写
2、修改浏览器,让浏览器从本地可以读写任意域名cookie
3、使用签名脚本,让浏览器从本地可以读写任意域名cookie(有安全问题)
4、欺骗浏览器,让浏览器获得假的域名

其中:
方法1、2需要较专业的编程知识,对普通用户不太合适。
方法3的实现有2种方法:
1、直接使用签名脚本,不需要签名验证,但是产生很严重的安全问题,因为大家都要上网的,如果这样做你的硬盘文件就……
2、对脚本进行签名后再使用签名脚本,但是需要专用的数字签名工具,对普通用户也不合适。
方法4看样子应该是最合适的了,域名欺骗很简单,也不需要什么工具(当然如果你的机器装有web服务器那更好了)。

注:我们讨论的cookie是那种不会在硬盘的cookie文件里留下踪迹的cookie,就是那种只在浏览器生存周期内(会话)产生的cookie,如果浏览器关闭(会话结束)那么这个cookie就被删了!

预防cookies欺骗:

1)不要在公共场登陆 自己重要的用户名和密码; 不用的时候,【关闭浏览器】,只点【退出】,还是会有安全隐患。
2)cookie加密, 加密虽然看不懂cookie,但根本就不需要知道cookie是什么含义,请求的时候把【截取】到的cookie放入请求,则就可以绕过后台的判断,获取真实用户的信息,所以单纯加密无用。
3)cookie+ip等信息加密,可以抵挡大多数的恶意攻击, 因为 虽然获取到了 cookiie ,但是 恶意者的ip不和真实用户的相同,则可以校验出来,防止欺骗。
4)cookie + ip + 动态:请求正确一次,就清空一次,再重新赋值一个 唯一标示,那么 就算别人 窃取到了 cookie,只有在【用户此次被获取cookie的请求与下次请求之前的时间,那个cookie才会起到欺骗效果。配合 ip等客户端的标示,可以避免 cookie欺骗】


跨站脚本攻击XSS

为了搜集用户信息,攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户(详见下文)。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。每天都有大量的XSS攻击的恶意代码出现。

从网站开发者角度,如何防护XSS攻击?

来自应用安全国际组织OWASP的建议,对XSS最佳的防护应该结合以下两种方法:
1)验证所有输入数据,有效检测攻击;
2)对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。

具体如下:
输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。
输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。
明确指定输出的编码方式:不要允许攻击者为你的用户选择编码方式(如ISO 8859-1或 UTF 8)。
注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如”<” “>”或类似”script”的关键字),很容易被XSS变种攻击绕过验证机制。
警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。

从网站用户角度,如何防护XSS攻击?

当你打开一封Email或附件、浏览论坛帖子时,可能恶意脚本会自动执行,因此,在做这些操作时一定要特别谨慎。建议在浏览器设置中关闭JavaScript。如果使用IE浏览器,将安全级别设置到“高”

这里需要再次提醒的是,XSS攻击其实伴随着社会工程学的成功应用,需要增强安全意识,只信任值得信任的站点或内容。可以通过一些检测工具进行xss的漏洞检测,类似工具有亿思网站安全检测平台。针对xss的漏洞带来的危害是巨大,如有发现,应立即修复漏洞


拒绝服务

拒绝服务(英文名称denial of service;DoS)是指通过向服务器发送大量垃圾信息或干扰信息的方式,导致服务器无法向正常用户提供服务的现象。

攻击原理:

所谓的拒绝服务攻击就是通过占满服务器的所有服务线程或者网络带宽,导致正常的服务请求无法得到响应,致使服务器处于瘫痪的状态。DoS攻击一般是针对WWW服务器,SMTP服务器等。众所周知,正常的一次TCP会话首先通过三次协商握手才能完成,首先客户机向目标服务器发送带有SYN的会话请求,然后服务器向客户机向客户机发送回复消息,最后还需客户机再回送一个确认消息。如果客户机发送的请求包里面的源IP地址是不可达的IP地址,那么服务器发出的回复消息将永远得不到确认,此时服务器一位是网络拥塞等问题,一直再等待确认消息和重发回消息,而且时间周期越来越长。试想如果客户机发送大量的这样的无效请求,那么服务器的服务线程就会瞬时被占满。

攻击方式:

最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

1、带宽攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。
2、连通性攻击。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。常用的攻击手段有:同步洪流、Land攻击、Ping洪流、UDP攻击、OOB等。

防范措施:

1、防止此类攻击的一种方法是实现DNSSEC,验证DNS请求源的身份。但旧的DNS基础架构很难改变。现在,推出了虚拟DNS服务,为域名解析服务器提供基于云端的DNS查询和缓存代理服务,验证请求源的身份。
2、防火墙防御。防火墙是防御DoS攻击最有效的方法。目前很多厂商的防火墙都注入了专门针对DoS攻击的功能。现在防火墙中防御DoS攻击的主流技术主要有两种:连接监控和同步网关。
3、路由器防御。路由器作为整个互联网的组网设备,可以通过路由器一些访问控制和QoS设置功能来达到防御DoS的目的。
4、系统防御。每个操作系统都有一些参数用来设置TCP/IP的运行性能,修改这些参数用来防御DoS也有一定效果,但是这只是辅助措施。

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值