web安全3-xss · clubsk

web安全3-xss

参考文献

https://ctf-wiki.org/web/xss/

定义

服务端把用户输入的数据,未经过正确的编码或过滤就输出到HTML页面里,浏览器把它当成脚本执行了

典型例子

  • 正常页面输出搜索词:搜索结果:用户输入的内容
  • 如果用户输入:<script>alert(1)<script>
  • 页面变成:搜索结果:<script>alert(1)<script>

    浏览器会认为这是一段JavaScript代码,会交给浏览器里的JavaScript引擎去执行,于是弹出窗口。就可以证明存在xss漏洞

分类

1.反射型xss

  • 恶意代码放在URL参数,搜索词,错误提示里,服务器收到后直接“反射”回页面常见于搜索页、跳转页、错误页、,可以配合钓鱼链接
  • 大致流程:攻击者构造恶意链接-> 受害者点击-> 服务器把参数输出到页面-> 浏览器执行

2.储存型xss

  • 恶意代码被写入数据库、文件、缓存中,比如评论、留言、昵称、帖子、公告
  • 流程:攻击者提交恶意内容-> 存入数据库-> 其他人访问页面-> 服务器取出并输出-> 浏览器执行

3.DOM型xxs

  • 恶意数据不一定会发送到服务器,而是由前端JavaScript从url、hash、referrer等位置读取
  • 流程:用户访问带恶意数据的页面-> 前端JS读取location、hash等-> 不安全的写入DOM-> 浏览器执行

总结

存在xss漏洞,说明网站把用户输入原样输出到页面里,浏览器无法区分“正常内容和“恶意脚本”,于是攻击者可以借这个页面去攻击其他访问者