Trong thời gian gần đây, Patchstack đã tổ chức cuộc thi Patchstack WCUS CTF, bao gồm 9 thử thách độc đáo, tất cả đều tập trung vào việc khai thác các lỗ hổng bảo mật trong các plugin WordPress. Bài viết này sẽ phân tích từng thử thách và hướng dẫn cách khai thác lỗ hổng bảo mật một cách chi tiết.
Giới thiệu về Patchstack WCUS CTF
Cuộc thi Patchstack WCUS CTF là nơi để các nhà phát triển và chuyên gia bảo mật thử thách khả năng của mình trong việc phát hiện và khai thác lỗ hổng bảo mật. Tất cả các thử thách đều được cung cấp dưới dạng whitebox, giúp người tham gia dễ dàng tiếp cận mã nguồn.
Challenge 1: WP Elevator
Trong thử thách đầu tiên, người tham gia được cung cấp mã nguồn của một plugin WordPress, với nhiệm vụ là gọi đúng endpoint để lấy được flag. Mặc dù có các biện pháp bảo mật như kiểm tra nonce và vai trò người dùng, nhưng bằng cách tạo tài khoản mới với quyền subscriber
, người tham gia có thể dễ dàng khai thác.
Để thực hiện điều này, ta cần gửi yêu cầu tạo người dùng mới:
http
POST /wp-json/user/v1/create HTTP/1.1
Content-Type: application/json
{
"username": "newuser",
"email": "newuser@example.com"
}
Tiếp theo, thực hiện việc reset mật khẩu cho tài khoản subscriber
vừa tạo. Thử thách này cho thấy việc xác thực không đủ mạnh và dễ bị khai thác bởi một hacker.
Challenge 2: Link Manager
Thử thách này chứa mã bị lỗi, mở ra lỗ hổng SQL Injection. Nhờ vào khả năng gửi các tham số từ phía người dùng mà không có biện pháp mã hóa, người tham gia có thể khai thác qua các biến order và order_by. Sử dụng kỹ thuật boolean-based blind SQL Injection, người tham gia có thể lần ra các thông tin nhạy cảm từ cơ sở dữ liệu.
Challenge 3: JustinWonkyTokens
Trong thử thách này, người tham gia cần sử dụng JWT để xác thực. Mặc dù JWT được mã hóa, nhưng lại có một lỗ hổng cho phép thay đổi thuật toán mã hóa từ RS256
sang HS256
, mở ra khả năng giả mạo token. Điều này cho phép người tham gia dễ dàng truy cập vào flag.
Challenge 4: Timberlake
Thử thách này liên quan đến việc render template thông qua Timber. Dù có các biện pháp bảo vệ như validate tên file và nội dung, nhưng nếu biết tên file hợp lệ, người tham gia vẫn có thể khai thác bằng cách sử dụng Server-Side Template Injection (SSTI).
Challenge 5: Texting Trouble
Cuối cùng, thử thách này cho thấy việc xử lý file không an toàn có thể dẫn đến lỗ hổng nghiêm trọng. Bằng cách chỉ định một đường dẫn trực tiếp đến file nhạy cảm như /flag.txt
, người tham gia có thể lấy được nội dung file đó thông qua hàm file_get_contents()
. Bằng cách này, flag nhanh chóng được khai thác.
Kết luận
Các thử thách trong Patchstack WCUS CTF đã chỉ ra nhiều điểm yếu trong bảo mật WordPress mà các nhà phát triển cần chú ý. Việc nâng cao nhận thức về an toàn bảo mật là rất quan trọng để ngăn chặn các cuộc tấn công.
Bài viết này không chỉ tóm tắt các thử thách mà còn hướng dẫn cách khai thác một cách chi tiết, giúp người đọc có cái nhìn sâu sắc hơn về bảo mật web và cách phòng tránh những lỗ hổng tương tự trong tương lai.
source: viblo