1.Tìm hiểu:
một user bất kì có các option để thay đổi thông tin cá nhân, post bài, send pm, .... và tất nhiên chỉ có user đó mới có quyền sử dụng các option đó với username của mình vì server sẽ check session/cookies của user đó.
2. Mục đích của ta:
chiếm quyền của user nào đó (admin chẳng hạn) để sử dụng các option của user này.
3. Cách giải quyết:
- Cách 1: nếu có user password thì hết chỗ chê, login và sử dụng liền ;D
- Cách 2: tìm lỗi của forum <-- not always easy ;(
- Cách 3: không cần tìm lỗi forum mà tìm cách "nhờ" user sử dụng các option của user này theo ý mình, hi`.
4. Sử dụng cách 3:
4.1. Tìm hiểu về cách hoạt động của form:
VD khi user sử dụng update email option thì form sẽ có dạng:
<form method="post" action="update.php">
<input type="text" name="email" value="user@email.com">
<input type="submit" name="but" value="send">
</form>
khi data được gửi = form trên tới server thì server sẽ check xem user nào gửi tới + right to update của user đó rồi thực hiện request.
4.2. Làm sao "nhờ" user sử dụng form trên theo ý mình?
Gửi cho user một html page trong đó có:
+ form trên nhưng các value của input theo ý mình (vd:
hacker@email.com)
+ sử dụng thêm hàm auto submit form để khi user mở html file này thì form sẽ tự động submit, tag này có dạng:
<body onLoad="document.forms[0].submit();">
+ nên sử dụng thêm một vài tiểu xảo che mắt user, không cho user biết là option của mình đã bị sử dụng trái phép <-- tự tìm hiểu.
5. Kết quả: vì request này được gửi đi từ máy user + thêm đk cần là user đang online nên session/cookies check đều ok. Request vẫn được thực hiện kể cả user không online nhưng để chế độ nhớ password. Ở vd trên ta đã update được user email, từ đó dùng option forgot pass để lấy password của user này (cái này ai cũng biết )
6. Ưu nhược điểm:
- Ưu điểm: phương pháp đơn giản, chỉ dựa trên nguyên tắc hoạt động thông thường của form <-- không phải là lỗi bảo mật. Có thể sử dụng được nhiều option của user mà không cần phải login = user account (vd có thể update user info, gửi bài, xoá bài, pm .. với nick của user, một số forum Admin CP khơng được pwd protected & biết admin default path ta có thể "nhờ" admin update mình lên làm admin luôn, hehe)
- Nhược điểm: phụ thuộc nhiều vào độ cảnh giác của user (eg: disable js)(tuy nhiên theo kinh nghiệm của tớ thì chưa ai từ chối bấm vào html link cả ). + cái gì đó chưa nghĩ ra ..
7. Chống hack=cách này:
+ Protect user panel/update action file = một lần password nữa (khi user muốn update info thì phải gõ lại pass)
+ khi form được submit thì kiểm tra xem các variable trong form đến từ đâu, nếu HTTP_REFERER không phải từ web của mình thì không thực hiện request
+ .... chưa nghĩ ra
8. Kết luận: có thể áp dụng cái natural danger của http này vào nhiều cái để nghịch, không chỉ hack forum
Xem cách hoạt động + code chi tiết tại link này:
http://diendan.mylovething.com/