XSS漏洞原理及理解

1. 简介

   XSS:跨站脚本攻击(Cross Site Scripting):恶意攻击者往Web页面中插入恶意JavaScript代码,当用户浏览网页时嵌入的JavaScript代码执行,从而达到恶意攻击用户的目的。

2. XSS漏洞靶场搭建

2.1 靶场环境

  • kali虚拟机
  • Apache服务器
  • PHP
  • Firefox浏览器

2.2 靶场实现

  1. kali虚拟机安装,kali虚拟机中集成了我们靶场需要的开发环境Apache2+php+Firefox

3 XSS原理

  1. service apache2 start 启动Apache2服务,在/var/www/html路径下新建一个xss.php页面,文件中写入代码:

    
    
    
        
        xss
    
    
    
    

    " .$xss ?>
  2. 访问页面如图所示:

    XSS漏洞原理及理解_第1张图片
  3. 在输入框中输入任意字符,你输入的字符就会显示在页面中,比如输入yaofei,返回如图所示:

    XSS漏洞原理及理解_第2张图片
  4. 查看网页源代码:

    XSS漏洞原理及理解_第3张图片
    我们输入的字符串原封不动的输出出来,我们进行一个假设,当我们在输入框中输入时,会出现什么样的结果呢?按照上述的例子我们可以知道我们的输入时,他应该存在第14行的
    之间,所以会弹出hello的对话框。
  5. 输入来验证我们的想法:


    说明我们的想法是正确的,查看相应的源代码:

    XSS漏洞原理及理解_第4张图片
    我们的假设成功了。

    注:chrome浏览器可能这个代码不能实现,因为chrome的内核和ie的内核不同,chrome的过滤机制比ie强,所以当你输入xss的时候可能被chrome的过滤机制过滤了。

    XSS漏洞原理及理解_第5张图片

4 XSS利用输出环境来构造代码

  1. 在相同路径下新建XSS2.php文件,代码:

    
    
    
    
    XSS_TEST
    
    
    
    INPUT VALUE
    INPUT


    '; } else{ echo ''; } ?>
  2. 页面如图所示:


    当你在输入对话框中输入你的内容,输出对话框将你的内容进行输出。我们同样可以用来进行测试,发现输出框直接源码输出了字符串。


    说明我们的js脚本并没有执行。同样,我们可以查看网页的源代码:

    XSS漏洞原理及理解_第6张图片
      我们看到,我们的输入的脚本被存入了input标签的value中,所以js脚本并没有执行。通过第一个例子我们可以知道当我们的js脚本在
    标签里的时候是可以执行的。
      所以要想我们的js脚本能够执行的话,我们可以把我们的js“移动”到input标签的外面,话说那我们怎么才能把我们的js脚本移动到input标签外面呢?
      聪明的人可能已经想到了,我们可以从输入中自己构造代码来使input标签闭合。输入"> ,”>是用来闭合input标签的,测试一下:


      成功弹框!!!查看一下源代码:


      可以看到已经放到了input标签外面,js脚本也执行了。
  3. XSS的脚本是不是一定要含有标签呢?因为我们可以看到很多的网站对XSS漏洞进行防护的时候都会把

你可能感兴趣的:(XSS,XSS,漏洞,Web安全,php,apache)