渗透测试学习18:前端安全补充
目录
AJAX扩展
AJAX:Asynchronous JavaScript AND XML,全称是异步的Javascript和XML。是指⼀种创建交互式、快速动态网页应⽤的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
异步:
- 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页。
- 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进⾏更新。
AJAX是用JavaScript写的,数据传输格式时XML(现在还有JSON等)。
CORS跨域资源共享
简述
CORS与JSONP功能相似,都是用来跨站访问资源的,只不过JSONP只能用GET方法获取数据(?callback=),而CORS可以使用多种请求头(POST, HEAD, GET)。
CORS大致流程
- 自动在头信息之中,添加一个Origin字段。该字段可以由我们随意指定。
- 发送到服务器端后,服务端会验证,验证通过会在响应头里加入:
Access-Control-Allow-Origin(必选)
Access-Control-Allow-Credentials(可选)
Access-Control-Expose-Headers(可选)
字段;验证失败则返回正常响应头。 - 响应包到达浏览器端,浏览器会检测响应头是否有
Access-Control-Allow-Origin
等字段,没有则报错;有则正常显示。
CORS相关安全问题
- 任意网站跨域读取资源
res.header("Access-Control-Allow-Origin","*")//任意源都可以访问
- 造成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校验绕过
- 校验 xxx.com
https://xxx.com.dark5.net 或者 https://dark5xxx.com
- 子域名匹配
控制某子域名或存在XSS漏洞的子域名
检验方法
- 手工检测
在burp抓的包中输入任意origin,出现参数后可以输入payload。 - 工具检测
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 攻击的条件:
- 需要目标 Web 服务器允许接受 Trace、Track 方法的请求。
- 客户端可以发送 Trace、Track 方法的请求。(如今浏览器环境下已经杜绝这种请求)
XST 的防御方法:
杜绝 XST 非常简单,Web 服务器限制 Trace、Track 方法的请求即可。
上一篇: Java 绝对路径和相对路径
下一篇: 前端学习部分题目(补充中)