乐趣区

关于xss:你想学的黑客攻击技术全在这了一篇打包带走

前言:

大家好,明天给大家介绍一下,Web 平安畛域常见的一些平安问题。

1. SQL 注入

SQL 注入攻打的外围在于让 Web 服务器执行攻击者冀望的 SQL 语句,以便失去数据库中的感兴趣的数据或对数据库进行读取、批改、删除、插入等操作,达到其邪恶的目标。

而如何让 Web 服务器执行攻击者的 SQL 语句呢?SQL 注入的惯例套路在于将 SQL 语句搁置于 Form 表单或申请参数之中提交到后端服务器,后端服务器如果未做输出平安校验,间接将变量取出进行数据库查问,则极易中招。

举例如下:

对于一个依据用户 ID 获取用户信息的接口,后端的 SQL 语句个别是这样:

select name,[...] from t_user whereid=$id

其中,$id 就是前端提交的用户 id,而如果前端的申请是这样:

GET xx/userinfo?id=1%20or%201=1

其中申请参数 id 本义后就是 1 or 1=1,如果后端不做平安过滤间接提交数据库查问,SQL 语句就变成了:

select name,[...] from t_user whereid=1or1=1

其后果是把用户表中的所有数据全副查出,达到了黑客泄露数据的目标。

以上只是一个极简略的示例,在实在的 SQL 注入攻打中参数结构和 SQL 语句远比这简单得多,不过原理是统一的。

2. XSS 攻打

XSS 全称跨站脚本攻打(Cross Site Scripting),为了与重叠样式表 CSS 辨别,换了另一个缩写 XSS。


XSS 攻打的外围是将可执行的前端脚本代码(个别为 JavaScript)植入到网页中,听起来比拟拗口,用大白话说就是攻击者想让你的浏览器执行他写的 JS 代码。那如何办到呢?个别 XSS 分为两种:

反射型

1、攻击者将 JS 代码作为申请参数搁置 URL 中,诱导用户点击
示例:

http://localhost:8080/test?name=<script>alert("you are under attack!")</script>

2、用户点击后,该 JS 作为申请参数传给 Web 服务器后端

3、后端服务器没有查看过滤,简略解决后放入网页注释中返回给浏览器

4、浏览器解析返回的网页,中招!

存储型

上述形式攻打脚本间接经服务器转手后返回浏览器触发执行,存储型与之的区别在于可能将攻打脚本入库存储,在前面进行查问时,再将攻打脚本渲染进网页,返回给浏览器触发执行。常见的套路举例如下:

1、攻击者网页回帖,帖子中蕴含 JS 脚本

2、回帖提交服务器后,存储至数据库

3、其余网友查看帖子,后盾查问该帖子的回帖内容,构建残缺网页,返回浏览器

4、该网友浏览器渲染返回的网页,中招!

3. CSRF 攻打


CSRF,跨站申请伪造,其核心思想在于,在关上 A 网站的状况下,另开 Tab 页面关上歹意网站 B,此时在 B 页面的“教唆”下,浏览器发动一个对网站 A 的 HTTP 申请。这个过程的危害在于 2 点:

1、这个 HTTP 申请不是用户被动用意,而是 B“教唆的”,如果是一个危害较大的申请操作(发邮件?删数据?等等)那就麻烦了

2、因为之前 A 网站曾经关上了,浏览器存有 A 下发的 Cookie 或其余用于身份认证的信息,这一次被“教唆”的申请,将会主动带上这些信息,A 网站后端分不清楚这是否是用户实在的志愿

4. DDoS 攻打

DDoS 全称 Distributed Denial of Service:分布式拒绝服务攻打。是拒绝服务攻打的升级版。回绝攻打服务顾名思义,让服务不可用。罕用于攻打对外提供服务的服务器,像常见的:

Web 服务
邮件服务
DNS 服务
即时通讯服务
……


攻击者一直地提出服务申请,让非法用户的申请无奈及时处理,这就是 DoS 攻打。

攻击者应用多台计算机或者计算机集群进行 DoS 攻打,就是 DDoS 攻打。

在晚期互联网技术还没有那么发达的时候,发动 DoS 攻打是一件很容易的事件:一台性能强劲的计算机,写个程序多线程一直向服务器进行申请,服务器应接不暇,最终无奈解决失常的申请,对别的失常用户来说,看上去网站貌似无法访问,拒绝服务就是这么个意思。

起初随着技术对倒退,当初的服务器早已不是一台服务器那么简略,你拜访一个 www.baidu.com 的域名,背地是数不清的 CDN 节点,数不清的 Web 服务器。

这种状况下,还想靠单台计算机去试图让一个网络服务满载,无异于鸡蛋碰石头,对方没趴下,本人先趴下了。

技术素来都是一柄双刃剑,分布式技术既能够用来提供高可用的服务,也可能被攻打方用来进行大规模杀伤性攻打。攻击者不再局限于单台计算机的攻击能力,转而通过成规模的网络集群发动拒绝服务攻打。

5. DNS 劫持

当今互联网流量中,以 HTTP/HTTPS 为主的 Web 服务产生的流量占据了绝大部分。Web 服务倒退的热火朝天,这背地离不开一个石破天惊的大功臣就是域名解析零碎:

如果没有 DNS,咱们上网须要记忆每个网站的 IP 地址而不是他们的域名,这几乎是劫难,好在 DNS 默默在背地做了这所有,咱们只须要记住一个域名,剩下的交给 DNS 来实现吧。

也正是因为其重要性,居心叵测的人天然是不会放过它,DNS 劫持技术被创造了进去。

DNS 提供服务用来将域名转换成 IP 地址,然而在晚期协定的设计中并没有太多思考其安全性,对于查问方来说:

我去申请的真的是一个 DNS 服务器吗?是不是他人假冒的?
查问的后果有没有被人篡改过?这个 IP 真是这个网站的吗?


DNS 协定中没有机制去保障能答复这些问题,因而 DNS 劫持景象十分泛滥,从用户在地址栏输出一个域名的那一刻起,一路上的凶险防不胜防:

本地计算机中的木马批改 hosts 文件

本地计算机中的木马批改 DNS 数据包中的应答

网络中的节点(如路由器)批改 DNS 数据包中的应答

网络中的节点(如运营商)批改 DNS 数据包中的应答

……


起初,为了在客户端对收到对 DNS 应答进行校验,呈现了 DNSSEC 技术,肯定水平上能够解决下面的局部问题。但限于一些方面的起因,这项技术并没有大规模用起来,尤其在国内,鲜有部署利用。

再起初,以阿里、腾讯等头部互联网厂商开始推出了 httpDNS 服务,来了一招釜底抽薪,尽管这项技术的名字中还有 DNS 三个字母,但实现上和原来但 DNS 曾经是天差地别,通过这项技术让 DNS 变成了在 http 协定之上的一个应用服务。

6. JSON 劫持

JSON 是一种轻量级的数据交换格局,而劫持就是对数据进行窃取(或者应该称为打劫、拦挡比拟适合。歹意攻击者通过某些特定的伎俩,将本应该返回给用户的 JSON 数据进行拦挡,转而将数据发送回给歹意攻击者,这就是 JSON 劫持的大略含意。一般来说进行劫持的 JSON 数据都是蕴含敏感信息或者有价值的数据。

7. 暴力破解

这个个别针对明码而言,弱明码(Weak Password)很容易被他人(对你很理解的人等)猜到或被破解工具暴力破解。

解决方案 明码复杂度要足够大,也要足够荫蔽 限度尝试次数

8. HTTP 报头追踪破绽

HTTP/1.1(RFC2616)标准定义了 HTTP TRACE 办法,次要是用于客户端通过向 Web 服务器提交 TRACE 申请来进行测试或取得诊断信息。

当 Web 服务器启用 TRACE 时,提交的申请头会在服务器响应的内容(Body)中残缺的返回,其中 HTTP 头很可能包含 Session Token、Cookies 或其它认证信息。攻击者能够利用此破绽来坑骗非法用户并失去他们的私人信息。

解决方案:

禁用 HTTP TRACE 办法。

9. 信息泄露

因为 Web 服务器或应用程序没有正确处理一些非凡申请,泄露 Web 服务器的一些敏感信息,如用户名、明码、源代码、服务器信息、配置信息等。

所以个别需注意:

应用程序报错时,不对外产生调试信息 过滤用户提交的数据与特殊字符 保障源代码、服务器配置的平安

10. 目录遍历破绽

攻击者向 Web 服务器发送申请,通过在 URL 中或在有非凡意义的目录中附加 ../、或者附加 ../ 的一些变形(如 ..\ 或 ..// 甚至其编码),导致攻击者可能拜访未受权的目录,以及在 Web 服务器的根目录以外执行命令。

11. 命令执行破绽

命令执行破绽是通过 URL 发动申请,在 Web 服务器端执行未受权的命令,获取零碎信息、篡改系统配置、管制整个零碎、使零碎瘫痪等。

12. 文件上传破绽

如果对文件上传门路变量过滤不严,并且对用户上传的文件后缀以及文件类型限度不严,攻击者可通过 Web 拜访的目录上传任意文件,包含网站后门文件(webshell),进而近程管制网站服务器。

所以个别需注意:

在开发网站及应用程序过程中,需严格限度和校验上传的文件,禁止上传恶意代码的文件 限度相干目录的执行权限,防备 webshell 攻打

13. 其余破绽

  • SSLStrip 攻打
  • OpenSSL Heartbleed 安全漏洞
  • CCS 注入破绽
  • 证书有效性验证破绽

14. 业务破绽

个别业务破绽是跟具体的应用程序相干,比方参数篡改(间断编号 ID / 订单、1 元领取)、重放攻打(假装领取)、权限管制(越权操作)等。

退出移动版