渗透测试学习18:前端安全补充

AJAX扩展

AJAX:Asynchronous JavaScript AND XML,全称是异步的Javascript和XML。是指⼀种创建交互式、快速动态网页应⽤的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

异步:

  1. 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页。
  2. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进⾏更新。

AJAX是用JavaScript写的,数据传输格式时XML(现在还有JSON等)。

CORS跨域资源共享

简述

CORS与JSONP功能相似,都是用来跨站访问资源的,只不过JSONP只能用GET方法获取数据(?callback=),而CORS可以使用多种请求头(POST, HEAD, GET)。

CORS大致流程

  1. 自动在头信息之中,添加一个Origin字段。该字段可以由我们随意指定。
  2. 发送到服务器端后,服务端会验证,验证通过会在响应头里加入:Access-Control-Allow-Origin(必选) Access-Control-Allow-Credentials(可选) Access-Control-Expose-Headers(可选)字段;验证失败则返回正常响应头。
  3. 响应包到达浏览器端,浏览器会检测响应头是否有Access-Control-Allow-Origin等字段,没有则报错;有则正常显示。

CORS相关安全问题

  1. 任意网站跨域读取资源
    res.header("Access-Control-Allow-Origin","*")//任意源都可以访问
  2. 造成XSS漏洞
    可以在XHR接口中插入恶意代码。
    例子:
    payload
varreq=newXMLHttpRequest(); req.onload=reqListener; 
req.open('get','http://www.target.com/login',true); 
req.setRequestHeader('X-User','<svg/onload=alert(1)>'); 
req.send(); 
functionreqListener(){ 
  location='http://www.target.com/login'; 
}

响应

HTTP/1.1 200 OK 
Access-Control-Allow-Origin:https://attacker.com/
…
Content-Type:text/html 
…
Invaliduser:<svg/onload=alert(1)

origin校验绕过

  1. 校验 xxx.com
    https://xxx.com.dark5.net 或者 https://dark5xxx.com
  2. 子域名匹配
    控制某子域名或存在XSS漏洞的子域名

检验方法

  1. 手工检测
    在burp抓的包中输入任意origin,出现参数后可以输入payload。
  2. 工具检测
    burp扫描可以实现检测。

CRLF注入(HTTP响应拆分)

CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a)。
CRLF注入大概是将恶意代码注入到回车符或换行符的后面。
本质上与XSS差不多,都是将恶意代码写入易受攻击的Web应用程序。

实现原理:一般服务端读取包头时读到回车符或换行符就认为这行完了,恶意代码就被认为时下一行并执行。

漏洞修复:过滤 \r 、\n 之类的行结束符,避免输入的数据污染其他 HTTP 首部字段。
实例文章:https://www.cnblogs.com/uestc2007/p/10880338.html

XST(Cross Site Tracing )

XST 的全称是 Cross-Site Tracing,中文译作“跨站式追踪攻击”。具体而言,是客户端发 TRACE / TRACK 请求至服务器,如果服务器按照标准实现了 TRACE / TRACK 响应,则在 response body 里会返回此次请求的完整头信息。通过这种方式,客户端可以获取某些敏感的 header 字段,例如 httpOnly 的 Cookie 等。

XST 攻击的条件:

  1. 需要目标 Web 服务器允许接受 Trace、Track 方法的请求。
  2. 客户端可以发送 Trace、Track 方法的请求。(如今浏览器环境下已经杜绝这种请求)

XST 的防御方法:
杜绝 XST 非常简单,Web 服务器限制 Trace、Track 方法的请求即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值