Micsoftvn
  • 😙Micsoftvn
  • Use Cases
    • For Hacking
      • Kiểm thử mạng
      • Tor - Sock - Proxy
      • Poc
        • POC -draytek-vigor2960 ( CVE-2024-12987 )
    • For Security
      • Security website with htacess file
      • Incident Response
        • Cli AWS - Incident
        • Command line
      • Add basic Authen with Cloudflare
      • Haderning Apache
      • Thiết lập ANTT cho TLS
      • Check network traffic ( Ddos )
      • Tools
        • Tools for AWS
        • Fail2Ban Cheat Sheet
      • Các lỗi thường bảo mật với Websocket
    • For Engineering
      • Thiết lập cấu hình CMD log
      • Cấu hình CLI kết nối đến AWS
      • Sử dụng PET
      • 🔧 Gom Nhóm IP Thành Subnet CIDR Tối Ưu
      • PAC Proxy: Tự Động Cấu Hình Proxy Trong Môi Trường Doanh Nghiệp
      • Sử dụng Podman tạo base images Pentest
      • Tạo YUM Local Repository Trong Container CentOS 7 Sử Dụng Podman
      • Cài Đặt Và Cấu Hình dnsmasq Trên Ubuntu
    • For SysAdmin
      • Scripts
        • Bash Script Gen SSH key
        • Health check System
      • Install Oracle Java JDK 18 in Ubuntu 20.04
      • Run script on startup on Ubuntu 22.04
      • Remove Snap from Ubuntu
      • Config Network on Ubuntu Server
      • View Wifi Network Connection
      • Add user can access network interfaces
      • USB drive with QEMU
      • INSTALL AND MANAGE MULTIPLE JAVA JDK AND JRE VERSIONS ON UBUNTU
      • Export Windows Config
      • Auto Install Openvpn
      • Install Nginx Centos 7 or Docker
      • Install Mkdocs
      • Cheat Sheet
        • Cheat sheet Postgres
      • Cài Đặt Fluent Bit Trên Amazon Linux 2023 & Tạo Repository Offline
    • Installations
      • Install Helm on Ubuntu
  • Extras
    • Keyboard Shortcuts
Powered by GitBook
On this page
  • 🔍 Pentest WebSocket & Các Lỗ Hổng Bảo Mật
  • 📌 1. Các Lỗ Hổng Bảo Mật Thường Gặp trên WebSocket
  • 🎯 Tổng Kết

Was this helpful?

  1. Use Cases
  2. For Security

Các lỗi thường bảo mật với Websocket

🔍 Pentest WebSocket & Các Lỗ Hổng Bảo Mật


📌 1. Các Lỗ Hổng Bảo Mật Thường Gặp trên WebSocket

Dưới đây là các lỗ hổng bảo mật nguy hiểm thường xảy ra trên WebSocket:

1️⃣ No Authentication / Authorization Bypass

🔥 Lỗi: Không kiểm tra JWT / Token khi client gửi request WebSocket. 📌 Cách kiểm tra bằng Burp Suite/ZAP:

  • Chặn WebSocket và thay đổi token thành giá trị rỗng hoặc của user khác.

  • Nếu vẫn có thể gửi request → WebSocket không kiểm tra quyền truy cập.

✅ Cách fix:

  • Luôn xác thực JWT khi client kết nối.

io.use((socket, next) => {
  const token = socket.handshake.auth.token;
  if (!token) return next(new Error("Authentication error"));

  jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
    if (err) return next(new Error("Invalid token"));
    socket.user = decoded;
    next();
  });
});

2️⃣ WebSocket Data Manipulation

🔥 Lỗi: Client có thể gửi request độc hại vì không có xác thực dữ liệu. 📌 Cách kiểm tra bằng Burp Suite/ZAP:

  • Chặn gói WebSocket và thay đổi nội dung gửi lên server.

  • Nếu server không kiểm tra, có thể gây lỗi SQL Injection / XSS.

✅ Cách fix:

  • Luôn kiểm tra dữ liệu đầu vào từ WebSocket.

socket.on("sendMessage", (data) => {
  if (typeof data.message !== "string" || data.message.length > 500) {
    return socket.emit("error", "Invalid message format");
  }
  io.emit("message", data);
});

3️⃣ WebSocket Cross-Site Hijacking (CSWSH)

🔥 Lỗi: Một trang web độc hại có thể kết nối WebSocket đến server nếu không có bảo vệ CORS. 📌 Cách kiểm tra bằng Burp Suite/ZAP:

  • Mở trang độc hại trong trình duyệt và thử kết nối đến WebSocket server của bạn.

✅ Cách fix:

  • Chỉ cho phép WebSocket từ domain hợp lệ.

const io = new Server(server, {
  cors: {
    origin: "https://yourdomain.com",
    methods: ["GET", "POST"],
  },
});

4️⃣ WebSocket Message Replay Attack

🔥 Lỗi: Hacker có thể chụp gói tin WebSocket và gửi lại để lặp lại hành động. 📌 Cách kiểm tra bằng Burp Suite:

  • Chặn request WebSocket và gửi lại gói tin cũ.

  • Nếu server không phát hiện ra replay attack, lỗi tồn tại.

✅ Cách fix:

  • Thêm timestamp và signature vào mỗi request để chống replay.

socket.on("transaction", (data) => {
  if (Date.now() - data.timestamp > 5000) {
    return socket.emit("error", "Request expired");
  }
});

5️⃣ WebSocket Denial-of-Service (DoS)

🔥 Lỗi: Hacker gửi hàng triệu request WebSocket để làm chậm hoặc crash server. 📌 Cách kiểm tra bằng Python:

import websocket
ws = websocket.WebSocket()
ws.connect("ws://your-websocket-url")
for _ in range(100000):
    ws.send("SPAM SPAM SPAM")

✅ Cách fix:

  • Dùng Rate Limiting với Redis để giới hạn request.

import rateLimit from "express-rate-limit";

const wsLimiter = rateLimit({
  windowMs: 60 * 1000, // 1 phút
  max: 100, // 100 request mỗi phút
  message: "Too many WebSocket requests, please slow down.",
});

io.use((socket, next) => {
  wsLimiter(socket.request, socket.request.res, next);
});

🎯 Tổng Kết

Lỗ Hổng

Cách Kiểm Tra

Cách Fix

No Authentication

Dùng Burp Suite/ZAP để thử kết nối WebSocket không có JWT

Xác thực JWT trước khi kết nối

Data Manipulation

Dùng Burp Suite/ZAP để sửa nội dung request WebSocket

Kiểm tra dữ liệu đầu vào

CSWSH Attack

Dùng trang web độc hại để kết nối WebSocket

Cấu hình CORS chỉ cho phép domain hợp lệ

Message Replay

Gửi lại request cũ bằng Burp Suite/ZAP

Thêm timestamp & signature vào request

WebSocket DoS

Gửi hàng triệu request bằng script Python

Thêm Rate Limiting vào WebSocket

PreviousFail2Ban Cheat SheetNextFor Engineering

Last updated 3 months ago

Was this helpful?