欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-03 07:51:42
...

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 方法的请求即可。