一篇文章掌握常见的网站攻击方式

2019-10-23 12:00:00 浏览数 (1)

最近兼职部门的安全接口人,时不时收到信息安全部发过来的漏洞,有些漏洞看得一头雾水(没文化真可怕)。赶紧普及一下常见的安全问题。

这篇文章主要描述常见的网站攻击方式(OWASP是世界上最知名的Web安全与数据库安全研究组织,更多安全问题可以搜索OWASP)

一、Dos攻击(Denial of Service attack)

DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

作个形象的比喻来理解DoS。街头的餐馆是为大众提供餐饮服务,如果一群地痞流氓要DoS餐馆的话,手段会很多,比如霸占着餐桌不结账,堵住餐馆的大门不让路,骚扰餐馆的服务员或厨子不能干活,甚至更恶劣……相应的计算机和网络系统则是为Internet用户提供互联网资源的,如果有黑客要进行DoS攻击的话,可以想象同样有好多手段!今天最常见的DoS攻击有对计算机网络的带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

传统上,攻击者所面临的主要问题是网络带宽,由于较小的网络规模和较慢的网络速度的限制,攻击者无法发出过多的请求。虽然类似“the ping of death”的攻击类型只需要较少量的包就可以摧毁一个没有打过补丁的UNIX系统,但大多数的DoS攻击还是需要相当大的带宽的,而以个人为单位的黑客们很难使用高带宽的资源。为了克服这个缺点,DoS攻击者开发了分布式的攻击。攻击者简单利用工具集合许多的网络带宽来同时对同一个目标发动大量的攻击请求,这就是DDoS(Distributed Denial of Service)攻击。

拒绝服务攻击是一种对网络危害巨大的恶意攻击。今天,DoS具有代表性的攻击手段包括PingofDeath(死亡之ping)、TearDrop(泪滴)、UDPflood(UDP泛洪)、SYNflood(SYN泛洪)、LandAttack(Land攻击)、IPSpoofingDoS(IP欺骗)等。

SYNflood是当前网络上最常见DDos攻击,也是最经典的拒绝服务攻击。以下介绍SYNflood基本原理(其他攻击类型可百度谷歌)

它利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其它合法用户进行访问。这种攻击早在1996年就被发现,但至今仍然显示出强大的生命力。很多操作系统,甚至防火墙、路由器都无法有效地防御这种攻击,而且由于它可以方便地伪造源地址,追查起来非常困难。它的数据包特征通常是,源发送了大量的SYN包,并且缺少三次握手的最后一步握手ACK回复。

想了解更多TCP的内容,参看《IM系统开发中如何调试TCP协议》

二、跨站点请求伪造(CSRF,Cross-Site Request Forgeries)

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF通过伪装来自受信任用户的请求来利用受信任的网站。

CSRF攻击原理如下图

举个CSRF的攻击实例

受害者 Bob 在银行有一笔存款,通过对银行的网站发送请求 http://bank.example/withdraw?account=bob&amount=1000000&for=bob2 可以使 Bob 把 1000000 的存款转到 bob2 的账号下。通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的 session,并且该 session 的用户 Bob 已经成功登陆。

黑客 Mallory 自己在该银行也有账户,他知道上文中的 URL 可以把钱进行转帐操作。Mallory 可以自己发送一个请求给银行:http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory。但是这个请求来自 Mallory 而非 Bob,他不能通过安全认证,因此该请求不会起作用。

这时,Mallory 想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码: src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory ”,并且通过广告等诱使 Bob 来访问他的网站。当 Bob 访问该网站时,上述 url 就会从 Bob 的浏览器发向银行,而这个请求会附带 Bob 浏览器中的 cookie 一起发向银行服务器。大多数情况下,该请求会失败,因为他要求 Bob 的认证信息。但是,如果 Bob 当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的 session 尚未过期,浏览器的 cookie 之中含有 Bob 的认证信息。这时,悲剧发生了,这个 url 请求就会得到响应,钱将从 Bob 的账号转移到 Mallory 的账号,而 Bob 当时毫不知情。等以后 Bob 发现账户钱少了,即使他去银行查询日志,他也只能发现确实有一个来自于他本人的合法请求转移了资金,没有任何被攻击的痕迹。

更多CSRF攻击防御方式参看 https://www.cnblogs.com/phpstudy2015-6/p/6771239.html

三、SOL注入攻击

是指通过对web连接的数据库发送恶意的SQL语句而产生的攻击,从而产生安全隐患和对网站的威胁,可以造成逃过验证或者私密信息泄露等危害。

SQL注入的原理是通过在对SQL语句调用方式上的疏漏,恶意注入SQL语句。

举个例子

当用户发送GET请求:

http://www.xxx.com/news.jsp?id=1

这是一个新闻详情页面,会显示出新闻的title和content,程序内部会接收这个id参数传递给SQL语句,SQL如下:

SELECT title,content FROM news WHERE id = 1

这是SQL的原义,也是程序员想要得到的结果,但是如果用户改变了id的内容,修改成如下:

http://www.jd.com/news.jsp?id=1 and 1=2 UNION SELECT userna-me, password FROM admin

此时内部程序执行的SQL语句为:

SELECT title,content FROM news WHERE id = 1 and 1=2 UNION SELECT username, password FROM admin

这条SQL的原义就会被改变,导致将管理员数据表中的用户名显示在页面title位置,密码显示在页面content位置,攻击成功。

MyBatis框架也可能产生SQL注入漏洞,详细情况及应对措施参看http://www.open-open.com/lib/view/open1474963603800.html

四、XSS攻击(Cross-Site scripting)

跨站点脚本(XSS)攻击是一类注入问题,恶意脚本被注入到其他良性和可信赖的网站中。当攻击者使用Web应用程序将恶意代码(通常以浏览器端脚本的形式)发送给不同的最终用户时,就会发生XSS攻击。允许这些攻击成功的缺陷非常普遍,只要这个网站某个页面将用户的输入包含在它生成的动态输出页面中并且未经验证或编码转义,这个缺陷就存在。

攻击者可以使用XSS将恶意脚本发送给毫无戒心的用户。最终用户的浏览器无法知道该脚本该不该被信任,从而执行该脚本。恶意脚本可以访问任何cookie,会话令牌或浏览器保留并与该站点一起使用的其他敏感信息。这些脚本甚至可以重写HTML页面的内容。

跨站点脚本(XSS)攻击发生在:

1、数据通过不受信任的来源进入Web应用程序,最常见的是Web请求。

2、数据包含在动态内容中,该动态内容在未经过恶意内容验证的情况下发送给Web用户。

发送到Web浏览器的恶意内容通常采用JavaScript段的形式,但也可能包括HTML,Flash或浏览器可能执行的任何其他类型的代码。基于XSS的各种攻击几乎是无限的,常见的有传输私密数据,像cookies或其他会话信息,对攻击者而言,重定向或引诱受害者到由攻击者所控制的页面,或者伪装成可信赖网站,直接在用户机器上执行恶意操作。

XSS攻击通常被分为两类:存储型和反射型。还有第三类,不那么知名的,基于DOM的xss。

举个简单的例子

以下JSP代码段从HTTP请求中读取员工ID eid,并将其显示给用户。

如果eid仅包含标准字母数字文本,则此示例中的代码可正常运行。如果eid的值包含元字符或源代码,那么代码将由Web浏览器在显示HTTP响应时执行。

最初,这似乎不是一个漏洞。毕竟,为什么有人会输入导致恶意代码在自己的计算机上运行的URL?真正的危险是攻击者会创建恶意URL,然后使用电子邮件或社交工程技巧诱使受害者访问URL的链接。当受害者点击该链接时,他们会无意中通过易受攻击的Web应用程序将恶意内容反映回自己的计算机。这种利用易受攻击的Web应用程序的机制称为反射型XSS。

关于XSS攻击更多内容参看

https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

0 人点赞