跨站脚本攻击XSS

跨站脚本攻击与SQL注入攻击区别在于XSS主要影响的是客户端安全,SQL注入主要影响Web服务器安全。

 

一、反射式XSS

非持久型、参数型跨站脚本,主要用于将恶意脚本附加到URL地址的参数中。

  1. low:

    服务器端核心代码:


    观察到并没有对name进行任何的过滤操作,

    那么输入<script>alert(123456)</script>观察到弹窗。


     

  2. Medium:


    看到有一个 $name = str_replace( '<script>', '', $_GET[ 'name' ] );

    这个函数将字符“<script>”换为NULL,那么由于函数只执行一次,有多种方法可以绕过。

    比如将这个标签双写绕过,但是只能过滤一次,就达成了我们的目的。

    比如:<sc<script>ript>alert(123456)</script>


    或者使用大小写混淆的方法。

    <Script>alert(123456)</script>

     

  3. High:


    观察到使用了正则表达式来过滤:

    preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i'

    那么我们就不能使用大小写绕过和重写的方法来绕过了。

    虽然无法使用<script>标签注入XSS代码,但是可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码。这样就会避免出现<script>标签被正则表达式匹配到。

    我们可以使用以下:

    <img src=" " onerror=alert('xss')>

    (因为src无我们就可以将其路径设置为null)

     

  4. Impossible:

 

二、存储式XSS

持久型跨站脚本,更具威胁性,并且可能影响到web服务器自身的安全。XSS通常用于发动Cookie窃取、恶意软件传播(蠕虫攻击)、会话劫持、恶意重定向等。存储式XSS会保存在服务器上,有可能会跨页面存在,它不改变页面URL的原有结构,所以有时候还能逃过一些IDS检测。

从攻击过程来说,反射式XSS一般要求攻击者诱使用户单击一个包含XSS代码的URL链接;而存储式XSS则只需让用户查看一个URL链接,这个链接中存储了一个脚本。

  1. low

    输入有限制,修改前端最大长度后插入<script>alert(123456)</script> 语句xss


     

  2. Medium

    还是加一个<script>标签过滤,可以使用上述方法进行绕过(重写或者大小写绕过)

    使用<Script>alert(/xss/)</Script>绕过:


     

  3. High

    同样正则过滤,使用

    <img src=1 οnerrοr=alert(/XSS/)>

     

  4. Impossible

posted @ 2021-07-19 16:56  djioefhlkre  阅读(109)  评论(0编辑  收藏  举报