文章目录
- XSS原理
- XSS漏洞分类
- XSS的危害
- XSS漏洞的黑盒测试
- XSS漏洞的白盒测试
- xss-labs
- i春秋 XSS闯关
- prompt(1) 平台
- xss攻击总结
- XSS防御
- 补充:关于浏览器编码(圣经)务必熟读
XSS原理
跨站脚本攻击XSS(cross site scripting)。XSS是由于Web应用程序对用户的输入过滤不足而产生的,攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害者可能采用cookie窃取、会话劫持、钓鱼欺骗等各种攻击。
漏洞存在的主要原因:
- 参数输入未经过安全过滤
- 恶意脚本被输出到网页
- 用户的浏览器执行了恶意脚本
XSS漏洞分类
1.反射型XSS
也称非持久型、参数型跨站脚本。主要用于恶意脚本附加在URL地址的参数中。他需要欺骗用户点击链接才能出发XSS,一般容易出现搜索页面、输入框、URL参数处。反射型XSS大多数用来盗取用户的cookie信息。
2.存储型XSS
存储型XSS写进数据库或文件等可以永久保存数据的介质中,存储型XSS通常发生在留言板等地方。在留言板位置留言将恶意代码写进数据库中。因为XSS 使用的JS 代码,JS 代码的运行环境是浏览器,所以需要浏览器从服务器载入恶意的XSS 代码,才能真正触发XSS。此时,需要我们模拟网站后台管理员的身份,查看留言。
3.基于DOM的XSS
DOM-XSS是基于文档对象模型的一种漏洞,不经过后端,DOM-XSS是通过url传入参数去控制触发的,也属于反射型xss
XSS的危害
针对用户:窃取cookie,劫持会话,网络钓鱼,放马挖矿
针对WEB服务:劫持后台,篡改页面,传播蠕虫,内网扫描
XSS漏洞的黑盒测试
尽可能找到一切用户可控并且能够输出在页面的代码中的地方,比如下面这些:
- URL的每个参数、URL本身、表单、搜索框、常见业务场景
- 重灾区:评论区、留言区、个人信息、订单信息等
- 针对型:站内信、网页即时通讯、私信、意见反馈
- 存在风险:是搜索框,当前目录、图片属性等
XSS漏洞的白盒测试
关于XSS的代码升级主要就是从接收参数的地方和一些关键词入手。
PHP中常用的接收参数的方法有 G E T 、 GET、 GET、POST、$REQUET等,可以搜索所有接收参数的地方,然后对接收到的数据进行跟踪,查看有没有输出到页面中,然后看输出到页面中的数据是否进行了过滤和html编码等处理。
也可以搜索类似echo这样的输出语句,跟踪输出的变量是从哪里来的,然后能否控制,如果从数据库中取得,是否能控制存到数据库中的数据,存到数据库之前有没有进行过滤等等。
大多数程序会对接收参数封装在公共文件的函数中统一调用,我们就需要审计这些公共函数看