前端渗透测试笔记

锦衣   ·   发表于 2020-06-19 14:50:13   ·   闲聊灌水区

xss的原理和解剖:跨站脚本攻击

XSS的本质:是用户的传参恶意html代码被拼接到html页面,JS语句执行攻击,实际就是html代码注入攻击
XSS的作用:盗用cookie,得到内网ip,获取保存的密码,截取网页屏幕,网页的键盘记录
XSS防御:转义字符输出,用白名单验证、HTML代码实体化、正则匹配替换
XSS限制:受同源性法则限制,A网站只能吃A网站的cookie,不能吃用户别的网站cookie
同源策略:host(域名或ip地址,如果是ip地址则看做是一个根域名)、子域名、端口、协议
xss类型:
反射型XSS (你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,并不存入数据库,是非持久型攻击)
存储型XSS (你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发)
DOM型XSS (从效果来说也是反射型XSS,是通过DOM节点形成的XSS)

检测是否存在XSS:
标签触发:<script>alert(1)</script>
伪协议触发: javascript:alert(1) 、<a href=javasript:alert(1)>123</a>
事件触发(html事件属性):当满足了条件自动触发。<img src="#" onerror=alert(1) /> 、oninput=alert(1)、onfocus=alert(1) autofocus

存储型XSS

任何可能插入数据库的地方,比如留言板、用户注册时候、上传的文件名、管理员课件的报错信息,日志记录、某个缓存或文件里面。
允许用户存储的Web应用程序都可能出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务端接受并储存,当攻击者再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击,这就是储存型XSS

DOM型XSS对网页进行JS处理产生的XSS就叫DOM型XSS

DOM的全称为Document Object Model,即文档对象模型,DOM通常用于代表在HTML、XHTML、和XML中的对象。DOM是一个与平台、编程语言无关的接口,使用DOM可以允许程序脚本和脚本动态地访问和更新文档的内容、结构和样式,处理后的结果能够成为显示页面的一部分
DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。

通过JavaScript可以重构整个HTML页面,而要重构页面或者页面中的某个对象,JavaScript就需要知道HTML文档中的所有元素的“位置”。而DOM为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构。根据DOM规定,HTML文档中的每个成分都是一个节点。

  1. Document.write() 输出内容
  2. innerHTML() 改变内容
  3. eval() 代码执行

DOM的规定入下:

  • 整个文档是一个文档节点
  • 每个HTML标签是一个元素节点
  • 包含在HTML元素中的文本是文本节点
  • 每一个HTML属性是一个属性节点
  • 节点与节点之间都有等级关系

    HTML的标签都是一个个节点,而这些节点组成了DOM的整体结构:节点树


    DOM本身就代表文档的意思,而基于DOM型的XSS是不需要与服务端交互的,它只发生在客户端处理数据阶段

    每个载入浏览器的 HTML 文档都会成为 Document 对象。
    Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

Document 对象属性:
document.cookie返回当前页面cookie

CSRF跨站伪造请求:

CSRF就是利用目标的cookie让他发起请求达到攻击者的目的。

1.CSRF和SSRF的区别
CSRF为跨站请求伪造,SSRF为服务器请求伪造,CSRF的核心是让客户端的浏览器去访问,SSRF核心是让服务器去访问

2.CSRF与XSS的区别
csrf伪造请求,xss为跨站脚本攻击,一个为伪造cookie等验证信息,一个则是使用一个脚本攻击。
XSS 核心是操作目标网站的HTML代码 窃取Cookie
CSRF 核心是在非目标网站的HTML代码做手脚 让受害者浏览器偷偷的去访问目标网站

3.token防御csrf原理
Token就是一段字母数字的随机值,访问时服务端(即登陆时)会生成一个随机的token值并传回到前端的表单里,当我们提交表单时,token会作为一个参数提交到服务端进行验证 [终极方案] 这样服务端就不用了在用户每次发起交互都要去数据库查询用户账号密码是否正确,只需要验证token值是否正确就可以。
转自 “https://www.cnblogs.com/xuxinstyle/p/9675541.html

4.referer防御csrf原理
Refer记录了该http请求的来源地址,访问一个安全受限页面请求必须来自同一个网站,如果不是则请求不合法无法生效 [可绕过]

5.如何绕过token
Token的生成一定要随机,有些Token根本就不验证或者时间戳做Token
如果存在xss漏洞,token防御将无效

6.csrf如何绕过referer
当浏览器的检测不严,比如referer值为空时,可以绕过
Referer可以伪装绕过

内置网页:
<iframe arc="CSRF POC" width="0" /> 使页面不会跳转,从而让用户发觉。

打赏我,让我更有动力~

0 条回复   |  直到 2020-6-19 | 1348 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.