XSS、SSRF、CSRF、XXE 漏洞的区别

XSS(跨站脚本攻击)

XSS属于客户端攻击,受害者最终是用户。但特别要注意的是网站管理员也属于用户之一,这就意味着XSS可以进行“服务端”攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等操作,而攻击者一般也是靠管理员身份作为“跳板”进行实施攻击。

XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于Javascript,所以如果想要深入研究XSS,必须要精通Javascript。

XSS换句话说,JavaScript能做到什么效果,XSS的胃里就有多大。这完全不是危言耸听。javascript可以用来获取用户的cookie,弹出窗口,那么存在XSS漏洞的网站,XSS就可以用来盗取用户Cookie,废掉页面,导航到恶意网站!更高端的XSS代码完全可以进行监控你的键盘操作,模仿Windows注销界面,诱导你输入开机密码!而攻击者需要做的仅仅是向你的代码中注入Javascript代码!

特征::'">代表插入任意代码 可以加一个弹窗 能弹出来就是 XSS 漏洞。

CSRF(跨站请求伪造)

攻击者会伪造一个请求(这个请求一般是一个链接URL),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。攻击者盗用了你的身份,以你的名义发送恶意请求

CSRF的攻击建立在浏览器与Web服务器的会话之中。欺骗用户访问URL。登录受信任站点A,并在本地生成Cookie。在不登出A的情况下,訪问危急站点B。携带攻击者指令访问信任站点A。XSS 是实现 CSRF 的诸多手段中的一种。

XSS和CSRF的区别

XSS不需要登录,CSRF需要用户登录信息

XSS攻击客户端,CSRF访问服务端

XSS劫持用户信息,CSRF伪造用户身份访问正常网站

SSRF(服务器端请求伪造)

是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人或者跳板

SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。

CSRF和SSRF的区别

CSRF 是跨站请求伪造攻击,由客户端发起

SSRF 是服务器端请求伪造,由服务器发起

重放攻击是将截获的数据包进行重放,达到身份认证等目的。

XEE(XML外部实体注入)

在应用程序解读XML输入时,当允许引入外部实体时,可构造恶意内容,导致读取恶意文件,探测内网端口,攻击内网网站,发起DOS拒绝服务攻击,执行系统命令等。

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

XSS、SSRF、CSRF、XXE 漏洞的各自原理

XSS

 程序对输入和输出的控制不够严格,导致"精心构造“的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害.

CSRF

程序员开发的时候,未对相关页面进行tokenreferer判断,

SSRF

大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限 制。比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,文档,等等。

XXE

运 维 人 员 使 用 低 版 本 PHP , libxml 低 于 2.9.1 , 就 会 造 成 程 序 员 或 者 XXE 设 置 了 libxml_disable_encity_loader(FALSE) 这个意思是禁用加载外部实体

XSS、SSRF、CSRF、XXE 漏洞的各自危害

XSS

1) 挂马

2) 钓鱼 钓鱼页面弹出一个弹窗出来 让用户输入账号名和密码,做一个和登录页面一样的

3) 劫持用户 cookie 构造语句里插入木马

4) 有局限性的键盘记录

CSRF

1) 拖库

2) 修改密码

DVWA 打开一个网址ilities/csrf/?password_new=123&password_conf=123&Change= Change) 不关闭此浏览器选项卡的情况下,打开新窗口页面(保持 cookie 可用),就可以完成 密码修改。

3)修改交易等

SSRF

用 http,file,php 协议来进行内网探测,文件读取

1).可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息;

2).攻击运行在内网或本地的应用程序(比如溢出);

3).对内网 web 应用进行指纹识别,通过访问默认文件实现;

4).攻击内外网的 web 应用,主要是使用 get 参数就可以实现的攻击(比如 struts2,sqli 等);

5).利用 file 协议读取本地文件等。

XXE

XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安 全 问 题 , 例如敏感文件读取

XSS、SSRF、CSRF、XXE 漏洞的各自存在地方

XSS存在的地方

1)html

2)context(上下文,浏览器响应式拼接好的内容)、

3)URL context(对浏览器来说是页面路径上的参数 对服务端来说是请求时携带的参数 请求头等)

4)spript(代码里的变量数据)

漏洞分类:

1) 反射:(一次性不存储在浏览器里) 放在网站的根目录下,也可以发邮件让别人去触发

2)存储:(永久存储在数据库高危)

3)Dom:(浏览器标签)不与后台服务器产生交互

测试方法:

工具:APPscan、Awvs、 手工:burpsuite,主要考虑哪里有输入、输出在什么地方

(1)在目标站点上找到输入点,比如查询接口,留言板等;

(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;

(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行 js 的条件(构 造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在 XSS 漏洞; 万能构造:'">代表插入任意代码 可以加一个弹窗 能弹出来就是 XSS 漏洞

怎么绕过:

1)前端限制

2)大小写混合

3)编码绕过

4)注释干扰后台

5)alert(弹窗) confirm(确认) prompt(弹出一个让用户在浏览器里面输入东西的框)

Document.location 获取本地的 cookie 信息 

 

防御:

1) 输入过滤(对用户输入的内容进行过滤,比如输入账号密码 没有过滤直接输入个 payload 程序直接 payload 执行)

2) 输出实体编码(账号密码 回车登录 执行的结果)

3) 使用 HTTP only

CSRF存在的地方

1)修改密码地方

2)添加用户的地方

3)数据库备份

4)数据交易、支付

漏洞分类:

1)站内:由于程序员滥用$_REQUEST(请求)类变量造成的(比如:本来要求用户从表单提交发起POST请求传递参数给程序,但是由于使用了$_REQUEST等变量,程序除支持接收POST请求传递的参数外也支持接收GET请求传递的参数,这样就会为攻击者使用CSRF 攻击创造条件)

2)站外:就是传统意义上的外部提交数据问题(用户在会话状态下点击链接访问站外Web 页面)

测试方法:

Burp 抓包(抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞)

防御:

1)校验 referer 字段

2)添加 token 值

3)白名单过滤

4)验证码登录

SSRF存在的地方

所有调外部资源的参数都有可能存在 ssrf 漏洞

1)分享:通过 URL 地址分享网页内容

2)转码服务

3)在线翻译

4)图片加载与下载:通过 URL 地址加载或下载图片

5)图片、文章收藏功能

6)未公开的 api 实现以及其他调用 URL 的功能

7)从 URL 关键字中寻找 share、wap、url、link、src、source

测试方法:

怎么绕过:

1)改 ip 地址写法

2)转码:8 进制、16 进制、10 进制

防御:

黑名单过滤:

1)过滤 10.0.0.1/8 172.16.0.0/12 192.168.0.0/16

2)过滤 file:///、dict://、gopher://、ftp:// 危险 schema

3)​对返回的内容进行识别最佳方法:

1)使用地址白名单

2)对返回内容进行识别

3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用

CURLOPT_FOLLOWLOCATION;然后通过域名获取目标 ip,并过滤内部 ip;最后识别返回的内容是否与假定内容一致

XXE存在的地方

1)抓包看 accept 头是否接受 xml

2)抓包修改数据类型,把 jison 改成 xml 来传输

测试方法:

1)有回显:(代码)

2)无回显:建立.dtd(代码)  xml 调用(代码)

防御

1)升级 php 版本

2)程序员修改代码

3)过滤关键词(doctype、entity、system、public)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值