构建Node应用,演示反射型XSS攻击

XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的Cookie,导航到恶意网站,携带木马等。

步骤:

  • 新建一个文件夹XSS
  • 命令 express -e ./ 初始化一个express项目
  • npm i下载需要的库
  • 启动服务: 进入XSS,执行命令npm start
  • 原理:

    • index.js 文件中加上 xss字段

      1
      2
      3
      4
      5
      6
      router.get('/', function(req, res, next) {
      res.render('index', {
      title: 'Express' ,
      xss: req.query.xss
      });
      });
    • index.ejs 加上如下代码

      1
      <%- xss %>
    • 打开链接 http://localhost:3000/?xss=1 就可以看到传入的xss被显示在页面
  • 攻击方式:

    • 将以上链接改为 http://localhost:3000/?xss=<img src="null" onerror="alert(0)"/> 但打开页面的时候发现并没有插入的代码并没有被执行,这是因为浏览器自动做了拦截
    • 取消拦截:

      1
      2
      3
      4
      5
      6
      7
      router.get('/', function(req, res, next) {
      res.set('X-XSS-Protection',0);
      res.render('index', {
      title: 'Express' ,
      xss: req.query.xss
      });
      });
再打开链接时,上述插入的代码也就被执行了。我们可以在xss=图片 页面 等等 

参考文档

* [Web安全测试之XSS](http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html)