Home Article 网站攻击

网站攻击

Release time:2019-07-22 Author:Mr.赵 Reading volume:75
网站攻击
1.XSS攻击 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包
括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用
来编写危害性更大的phishing-----网络钓鱼;网络欺诈(以虚假的身份和形象随机骗取个人帐号和密码等) 攻击而变得广为人知。对
于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
防御
完善的过滤体系
       永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。
Html encode
       假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换。
less-than character (<) &lt;
greater-than character (>) &gt;
ampersand character (&) &amp;
double-quote character (") &quot;
space character( ) &nbsp;
Any ASCII code character whose code is greater-th
an or equal to 0x80
&#<number>, where <number> is the ASCI
I character value.
      比如用户输入:<script>window.location.href=”http://www.baidu.com”;< /script>,保存后最终存储的会是:
&lt;script&gt;window.location.href=& quot;http://www.baidu.com&quot;&lt;/script&gt;在展现时浏览器会对这些字符转 换成文本
内容显示,而不是一段可执行的代码。
其它
       下面提供两种Html encode的方法。
使用Apache的commons-lang.jar
StringEscapeUtils.escapeHtml(str);// 汉字会转换成对应的ASCII码,空格不转换
自己实现转换,只转换部分字符
2.CSRF攻击 CSRF(Cross-site request forgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一
种对网站的恶意利用。尽管听起来像跨站脚本(XSS), 但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而
CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击 相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相
当稀少)和难以防范,所以被认为比XSS更具危险性。
防止
对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field),这将帮助网
站防止这些攻击。一种类似的方式是在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
另一个可选的方法是“双提交”cookie。此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局 修正方法。如果某个授权的
cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。如果服务器需要在Post请求体或者URL中包含授权
cookie的请求,那 么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的。
与通常的信任想法相反,使用Post代替Get方法并不能提供卓有成效的保护。因为JavaScript能使用伪造 的POST请求。尽管如此,那些导
致对安全产生“副作用”的请求应该总使用Post方式发送。Post方式不会在web服务器和代理服务器日志中留下数据 尾巴,然而Get方式
却会留下数据尾巴。
尽管CSRF是web应用的基本问题,而不是用户的问题,但用户能够在缺乏安全设计的网站上保护他们的帐户:通过在浏览其它站点前登出
站点或者在浏览器会话结束后清理浏览器的cookie。cookie通过header设置httponly,cookie仅当前页面使用
不是当前网站的请求直接过滤掉(判断是否是安全的来源)
3.SQL注入
注入法: 注入法:
从理论上说,认证网页中会有型如:
select * from admin where username='XXX' and password='YYY' 的语句,若在正式运行此句之前,如果没有进行必要的字符过滤,则很
容易实施SQL注入。
如在用户名文本框内输入:abc’ or 1=1-- 在密码框内输入:123 则SQL语句变成:
select * from admin where username='abc’ or 1=1 and password='123’ 不管用户输入任何用户名与密码,此语句永远都能正确执行,用
户轻易骗过系统,获取合法身份。
 
猜解法: 猜解法:
基本思路是:猜解所有数据库名称,猜出库中的每张表名,分析可能是存放用户名与密码的表名,猜出表中的每个字段名,猜出表中的每
条记录内容。
还有一种方式可以获得你的数据库名和每张表的名。
就是通过在形如:http://www. .cn/news?id=10'的方式来通过报错获得你的数据库名和表名!
防止sql注入
过滤关键词
占位符
PDO预查询
2、正则表达式 、正则表达式
    2.1、检测SQL meta-characters的正则表达式 /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix
    2.2、修正检测SQL meta-characters的正则表达式 /((\%3D)|(=))[^ \n]*((\%27)|(\')|(\-\-) |(\%3B)|(:))/i
    2.3、典型的 SQL 注入攻击的正则表达式 /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\ ))/ix
    2.4、检测SQL注入,UNION查询关键字的正则表达式 /((\%27)|(\'))union/ix(\%27)|(\') - 单引号和它的hex等值  union - union关键
字。
    2.5、检测MS SQL Server SQL注入攻击的正则表达式 /exec(\s|\+)+(s|x)p\w+/ix
 
3、字符串过滤 、字符串过滤
public static String filterContent(String content){
String flt ="'|and|exec|insert|select|delete|update|count|*|%
|chr|mid|master|truncate|char|declare|; |or|-|+|,"; 
Stringfilter[] = flt.split("|"); 
for(int i=0; i {
content.replace(filter[i], ""); 
}
return content; 
}
 
4、不安全字符屏蔽 、不安全字符屏蔽
本部分采用js来屏蔽,起的作用很小,这样用屏蔽关键字的方法虽然有一定作用,但是在实际应用中这些 SQL的关键字也可能成为真正的
查询关键字,到那是被你屏蔽了那用户不是不能正常的使用了。 只要在代码规范上下点功夫就可以了。
凡涉及到执行的SQL中有变量时,用JDBC(或者其他数据持久层)提供的如:PreparedStatement就可以 ,切记不要用拼接字符串的方
法就可以了.
功能介绍:检查是否含有"'","\\","/" 
参数说明:要检查的字符串 返回值:0:是 1:不是 
函数名是
function check(a) 
return 1; 
fibdn = new Array ("'" ,"\\","/"); 
i=fibdn.length; 
j=a.length; 
for (ii=0; ii { for (jj=0; jj
{ temp1=a.charAt(jj); 
temp2=fibdn[ii]; 
if (tem'; p1==temp2) 
{ return 0; } 
return 1;
}
4.文件上传漏洞 修改上传文件名称
动静分离(静态文件只读)
判断是否是图片-----文件流,所有相同文件前几位是固定的,过滤文件流的前几位就可以实现(使用魔数)
三、如何安全上传文件
   针对文件上传漏洞的特点和必须具备的三个条件,我们阻断任何一个条件就可以达到组织文件上传攻击的
目的:
-1. 最有效的,将文件上传目录直接设置为不可执行,对于Linux而言,撤销其目录的'x'权限;实际中很多大
型网站的上传应用都会放置在独立的存储上作为静态文件处理,一是方便使用缓存加速降低能耗,二是杜
绝了脚本执行的可能性;
-2. 文件类型检查:强烈推荐白名单方式,结合MIME Type、后缀检查等方式;此外对于图片的处理可以使
用压缩函数或resize函数,处理图片的同时破坏其包含的HTML代码;
-3. 使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件;
-4. 单独设置文件服务器的域名;
5.DDOS攻击 分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或
多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威 力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机
上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻
击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。
防止
预防为主保证安全
  DDOS攻击是黑客最常用的攻击手段,下面列出了对付它的一些常规方法。
  (1)定期扫描
  要定期扫描现有的网络主节点,清查可能存在的安全漏洞,对新出现的漏洞及时进行清理。骨干节点的计算机因为具有较高的带宽,
是黑客利用的最佳位置,因此对这些主机本身加强主机安全是非常重要的。而且连接到网络主节点的都是服务器级别的计算机,所以定期
扫描漏洞就变得更加重要了。
  (2)在骨干节点配置防火墙
  防火墙本身能抵御DDOS攻击和其他一些攻击。在发现受到攻击的时候,可以将攻击导向一些牺牲主机,这样可以保护真正的主机不
被攻击。当然导向的这些牺牲主机可以选择不重要的,或者是linux以及unix等漏洞少和天生防范攻击优秀的系统。
  (3)用足够的机器承受黑客攻击
  这是一种较为理想的应对策略。如果用户拥有足够的容量和足够的资源给黑客攻击,在它不断访问用户、夺取用户资源之时,自己的
能量也在逐渐耗失,或许未等用户被攻死,黑客已无力支招儿了。不过此方法需要投入的资金比较多,平时大多数设备处于空闲状态,和目前中小企业网络实际运行情况不相符。
  (4)充分利用网络设备保护网络资源
  所谓网络设备是指路由器、防火墙等负载均衡设备,它们可将网络有效地保护起来。当网络被攻击时最先死掉的是路由器,但其他机
器没有死。死掉的路由器经重启后会恢复正常,而且启动起来还很快,没有什么损失。若其他服务器死掉,其中的数据会丢失,而且重启
服务器又是一个漫长的过程。特别是一个公司使用了负载均衡设备,这样当一台路由器被攻击死机时,另一台将马上工作。从而最大程度
的削减了DDOS的攻击。
  (5)过滤不必要的服务和端口
  可以使用Inexpress、Express、Forwarding等工具来过滤不必要的服务和端口,即在路由器上过滤假IP。比如Cisco公 司的
CEF(Cisco Express Forwarding)可以针对封包Source IP和Routing Table做比较,并加以过滤。只开放服务端口成为目前很多服务器的
流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策 略。
  (6)检查访问者的来源
  使用Unicast Reverse Path Forwarding等通过反向路由器查询的方法检查访问者的IP地址是否是真,如果是假的,它将予以屏蔽。
许多黑客攻击常采用假IP地址方式迷惑用户, 很难查出它来自何处。因此,利用Unicast Reverse Path Forwarding可减少假IP地址的出
现,有助于提高网络安全性。
  (7)过滤所有RFC1918 IP地址
  RFC1918 IP地址是内部网的IP地址,像10.0.0.0、192.168.0.0 和172.16.0.0,它们不是某个网段的固定的IP地址,而是Internet内部
保留的区域性IP地址,应该把它们过滤掉。此方法并不是过滤内部员 工的访问,而是将攻击时伪造的大量虚假内部IP过滤,这样也可以减
轻DDOS的攻击。
  (8)限制SYN/ICMP流量
  用户应在路由器上配置SYN/ICMP的最大流量来限制SYN/ICMP封包所能占有的最高频宽,这样,当出现大量的超过所限定的
SYN/ICMP流量时,说明不是正常的网络访问,而是有黑客入侵。早期通过限制SYN/ICMP流量是最好的防范DOS的方法,虽然目前该方
法对于DDOS效果不太明显了,不过仍然能够起到一定的作用。
6.SYN  Flood攻击(洪水攻击) SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量
伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
防止
2.1 SYN-cookie技术  
一般情况下,当服务器收到一个TCP SYN报文后,马上为该连接请求分配缓冲区,然后返回一个SYN+ACK报文,这时形成一个半连接。
SYN Flood正是利用了这一点,发送大量的伪造源地址的SYN连接请求,而不完成连接。这样就大量的消耗的服务器的资源。  
feedom.net  
SYN-cookie技术针对标准TCP连接建立过程资源分配上的这一缺陷,改变了资源分配的策略。当服务器收到一个SYN报文后,不立即分
配缓冲区,而是利用连接的信息生成一个cookie,并将这个cookie作为将要返回的SYN+ACK报文的初始序列号。当客户端返回一个ACK
报文时,根据包头信息计算cookie,与返回的确认序列号(初始的序列号+1)的前24位进行对比,如果相同,则是一个正常连接,然
后,分配资源,建立连接。  
该技术的巧妙之点在于避免了在连接信息未完全到达前进行资源分配,使SYN Flood攻击的资源消耗失效。实现的关键之处在于cookie的
计算。cookie的计算应该做到包含本次连接的状态信息,使攻击者不能伪造cookie。cookie的计算过程如下:  1) 服务器收到一个SYN
包后,计算一个消息摘要mac:  mac = MAC(A,k);  
MAC是密码学中的一个消息认证码函数,也就是满足某种安全性质的带密钥的hash函数,它能够提供cookie计算中需要的安全性。  
A为客户和服务器双方的IP地址和端口号以及参数t的串联组合:  A = SOURCE_IP || SOURCE_PORT || DST_IP || DST_PORT || t  
K为服务器独有的密钥;  
时间参数t为32比特长的时间计数器,每64秒加1;  2) 生成cookie:  cookie = mac(0:24):表示取mac值的第0到24比特位;  中国
网管联盟www_bitscn_com  
3) 设置将要返回的SYN+ACK报文的初始序列号,设置过程如下  i. 高24位用cookie代替;  
ii. 接下来的3比特位用客户要求的最大报文长度MMS代替;  iii. 最后5比特位为t mod 32。  
客户端收到来自服务器SYN+ACK报文后,返回一个ACK报文,这个ACK报文将带一个cookie(确认号为服务器发送过来的SYN ACK报文
的初始序列号加1,所以不影响高24位),在服务器端重新计算cookie,与确认号的前24位比较,如果相同,则说明未被修改,连接合
法,然后,服务器完成连接的建立过程。  
SYN-cookie技术由于在连接建立过程中不需要在服务器端保存任何信息,实现了无状态的三次握手,从而有效的防御了SYN Flood攻
击。但是该方法也存在一些弱点。由于cookie的计算只涉及了包头的部分信心,在连接建立过程中不在服务器端保存任何信息,所以失去
了协议的许多功能,比如,超时重传。此外,由于计算cookie有一定的运算量,增加了连接建立的延迟时间,因此,SYN-cookie技术不
能作为高性能服务器的防御手段。通常采用动态资源分配机制,当分配了一定的资源后再采用cookie技术,Linux就是这样实现的。还有
一个问题是,当我们避免了SYN Flood攻击的同时,同时也提供了另一种拒绝服务攻击方式,攻击者发送大量的ACK报文,使服务器忙于
计算验证。尽管如此,在预防SYN Flood攻击方面,SYN-cookie技术仍然是一种有效的技术。 网管网bitsCN.com  2.2 地址状态监控的
解决方法  
地址状态监控的解决方法是利用监控工具对网络中的有关TCP连接的数据包进行监控,并对监听到的数据包进行处理。处理的主要依据是
连接请求的源地址。  每个源地址都有一个状态与之对应,总共有四种状态:  初态:任何源地址刚开始的状态;  NEW状态:第一次出现或出现多次也不能断定存在的源地址的状态;  GOOD状态:断定存在的源地址所处的状态;  
BAD状态:源地址不存在或不可达时所处的状态。  具体的动作和状态转换根据TCP头中的位码值决定:  
1) 监听到SYN包,如果源地址是第一次出现,则置该源地址的状态为NEW状态;如果是NEW状态或BAD状态;则将该包的RST位置1然
后重新发出去,如果是GOOD状态不作任何处理。  
2) 监听到ACK或RST包,如果源地址的状态为NEW状态,则转为GOOD状态;如果是GOOD状态则不变;如果是BAD状态则转为NEW
状态;如果是BAD状态则转为NEW状态。  
3) 监听到从服务器来的SYN ACK报文(目的地址为addr),表明服务器已经为从addr发来的连接请求建立了一个半连接,为防止建立
的半连接过多,向服务器发送一个ACK包,建立连接,同时,开始计时,如果超时,还未收到ACK报文,证明addr不可达,如果此时
addr的状态为GOOD则转为NEW状态;如果addr的状态为NEW状态则转为BAD状态;如果为addr的状态为BAD状态则不变。 中国网管
联盟www、bitsCN、com  状态的转换图如图3所示:  
初态  GOOD  NEW  BAD  
ACK/RST  SYN  
ACK/RST   
ACK包确认超时  ACK/RST   
ACK包确认超时   
图3 地址状态转换图     
下面分析一下基于地址状态监控的方法如何能够防御SYN Flood攻击。  
1) 对于一个伪造源地址的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,当监听到服务器的SYN+ACK报文,表明服务
器已经为该源地址的连接请求建立了半连接。此时,监控程序代源地址发送一个ACK报文完成连接。这样,半连接队列中的半连接数不是
很多。计时器开始计时,由于源地址是伪造的,所以不会收到ACK报文,超时后,监控程序发送RST数据包,服务器释放该连接,该源地
址的状态转为BAD状态。之后,对于每一个来自该源地址的SYN报文,监控程序都会主动发送一个RST报文。  
2) 对于一个合法的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,服务器响应请求,发送SYN+ACK报文,监控程序发
送ACK报文,连接建立完毕。之后,来自客户端的ACK很快会到达,该源地址的状态转为GOOD状态。服务器可以很好的处理重复到达的
ACK包。  
从以上分析可以看出,基于监控的方法可以很好的防御SYN Flood攻击,而不影响正常用户的连接。
7.DNS  Query  Flood攻击 绕过缓存直接请求数据库,通过模拟大量的虚拟的域名,DNS劫持,
8.CC攻击 攻击者借助代理服务器生成指向受害主机的合法请求,实现DOS,和伪装就叫:cc(ChallengeCollapsar)。CC主要是用来攻击页面的。
,busi
  
I want to comment
Leave a message
http://boke.zhaozhiqi.top/index.php/
User login
You have not written any reviews yet!
You have commented!
Can only praise once!
You have a collection!