WhiteHat Contest 11 - Ultimate Design Tool

Sau cơn mưa, đừng vội bỏ áo mưa (1 icon nào đó của vozforums)

20141214094521-baocaosu285

Nội dung bài viết được thực hiện trên 1 trang mà tôi tự tiện clone lại đề của Bkav.
Nếu bạn đã đọc đến đây thì tức là bạn đang tìm kiếm lời giải cho 1 vấn đề, và hãy tiếp tục đọc xuống bên dưới, nếu bạn muốn tự khám phá thì hãy dừng lại ở đây và quay trở lại khi tạm thời chưa nghĩ ra ý tưởng, hoặc những ý tưởng của bạn đúng nhưng tôi lại setup sai 😕

Đề bài cho ta 1 đường link và dĩ nhiên theo quán tính tôi sờ tay vào ch...chuột click mở lấy vài cái cửa sổ, 1 cái view-source, 1 cái view page đã render.

1

Nếu bạn chưa quen làm việc với những challenge liên quan đến web, tôi khuyên bạn nên sử dụng công cụ proxy để theo dõi các request từ client và response. Nói cách khác, việc nắm bắt những hành động của challenge sẽ giúp bạn có cái nhìn tổng quan về attack surface. Tôi thấy mấy anh bạn hay dùng Chrome, nên tôi dùng luôn cái Developer tools của Chrome, bật "Preserve log" trong tab Network để những request cũ không bị xóa khi chuyển trang.2

Sơ bộ khi nhấn "Share your button!" sẽ có 1 request gửi đi với những tham số mà tôi nhập trong hình, cách xử lý dữ liệu gửi đi từ client rõ hơn trong file app.js, hướng đến push.php

 

3

Quan sát response, ta thấy điểm chung là có dữ liệu giống như trong request gửi đi. Một trang design button có chức năng share, là bước đầu của việc share + tín dụng (1 icon nào đó từ voz). Nếu chỉ có mình đọc được thì hơi chán, dẫn đến một vài phán đoán là có người thứ 2 đọc được, người ấy, chắc chắn không phải người yêu mình, mà là 1 thứ gì đó gọi là bot, hay flag keeper. Tình huống này rất có thể là client-side attack mà thông thường là XSS (đôi khi xuất hiện trong các kì CTF gần đây).

Có thêm 1 dữ kiện nữa là có 1 thành phần được comment trong code

<!-- Admin only ... 
<span value="secret"></span> 
-->

Tốt nhất là chiếm được phiên của admin để có được secret (có thể là flag luôn). Tóm lại là mình sẽ ngồi chèn javascript để get source code của cái trang admin đấy, bao gồm cả secret value luôn.

Việc dự đoán như vậy rất dễ khiến con nhà người ta đi sai hướng và không lấy được flag, ví dụ như người ra để muốn mình khai thác sql injection, hay command injection, các loại tiêm chủng mở rộng mà mình cứ đâm đầu vào khai thác XSS chẳng hạn. Đó là lý do tại sao bạn nên kiểm tra tất cả các khả năng mà bạn có thể nghĩ ra, chuyển hướng hoặc chuyển sang làm bài khác, hoặc blame admin đến khi có đội làm ra (đôi khi đề deploy có sơ suất nên không thể giải được).

Bài này mình đã bị sai hướng, rõ ràng là inject javascript rất đơn giản, mặc dù tất cả các ký tự đi qua đều đã bị lowercase- cần nhiều hơn (cụ thể là len(charset)*2) điều kiện blind.