Trang

Hướng dẫn khắc phục 2 lỗi bảo mật nghiêm trọng của vBulletin

SinhVienIT.NET---vbulletin-security-alert


2 lỗi mà mình nói đến là lỗi SQL Injection của mod Chang stat và lỗi CSRF để add plugin.

1. Lỗi SQL Injection của Changuondyu Statistics
Khi khai thác lỗi này, attacker sẽ lấy được gần như toàn bộ database của bạn nếu muốn. Và thông thường, cái attacker nhắm đến là table user. Khi lấy được 3 cột: userid, password và salt => Attacker có thể login vào tài khoản của bất kỳ user nào mà không cần biết password là gì (Với điều kiện là Admin không biết config đúng file config.php cùa vBB).
Để fix lỗi này, có 2 cách mình đề xuất các bạn có thể thực hiện.

Cách 1:
AdminCP->Plugin Manager->ChangUonDyU - Advanced Statistics - Get Data

Tìm:
PHP Code:
$foruminid $vbulletin->db->escape_string($_REQUEST['listforumid']); 
Thêm vào bên dưới
PHP Code:
//---Loại bỏ ký tự nguy hiểm tránh SQL injetion$foruminid preg_replace("/[^0-9,]+/","",$foruminid);//---End---By: Vũ Thanh Lai - SinhVienIT.Net 

Cách 2:
AdminCP->Plugin Manager->ChangUonDyU - Advanced Statistics - Get Data

Tìm:
PHP Code:
$foruminid $vbulletin->db->escape_string($_REQUEST['listforumid']); 
Thêm vào bên dưới
PHP Code:
//---Loại bỏ ký tự nguy hiểm tránh SQL injetion$foruminidx explode(',',$foruminid);
foreach(
$foruminidx as &$id)
{
    
$id=intval($id);
}
$foruminid=implode(',',$foruminidx);//---End---By: Vũ Thanh Lai - SinhVienIT.Net 


2. Lỗi CSRF
Với lỗi này, attacker phải có quyền từ SMod trở lên. Nếu nói đây là 1 lỗi thì cũng chưa chuẩn lắm. Vì nếu nó là 1 lỗi thì chả khác nào câu "Hacked by Admin" 4
Tuy nhiên, dù thế nào đi nữa, cái này cũng giúp 1 user có quyền SMod "leo thang đặc quyền được".

Cách khai thác lỗi này thì cũng đã được công bố chi tiết.

Để fix lỗi này mình đề xuất 2 cách.

Cách 1:
Đây là cách đơn giản nhất là bạn đổi thư mục AdminCP và không tiết lộ thư mục AdminCP mới cho bất kỳ ai biết.
Sau khi đổi nhớ sửa lại tên thư mục admin trong file config.php ở phần
PHP Code:
$config['Misc']['admincpdir'
Tuy nhiên, khi sử dụng cách này thì sẽ có thể gây ra 1 số mod có phần admincp hoạt động sai hoặc ko hoạt động... Nên khi dùng cách này các bạn cần lưu ý.


Cách 2:
Bạn sử dụng Mod này. Khi dùng mod này, mỗi lần có 1 request gửi đến AdminCP thì referer trong HTTP Header sẽ đc kiểm tra xem request đó đến từ trang nào trong forum. Nếu không phải từ AdminCP thì bạn phải click xác nhận thì request mới đc tiếp tục xử lý.

Attacker đã làm như thế nào ?
Thời gian gần đây, attacker hay đi lục lọi các forum có sử dụng mod Changuondyu Statistics để tìm cách đưa câu "Hacked by..." vào đó. Sau khi khai thác lỗi này, chúng sẽ login đc vào tài khoản của SMod hoặc Admin để lợi dụng tiếp lỗi thứ 2 bên trên để chèn shell. Và thế là xong 4

Các Admin đã ngây thơ như thế nào ?
Trong file config.php của vBulletin có 1 phần mà hầu hết các Admin đều bỏ qua đó là COOKIE SECURITY HASH
PHP Code:
$config['Misc']['cookie_security_hash'
Thông thường, các admin để trống phần này trong file config mà không hề biết tầm quan trọng của nó. Để hiểu nó quan trọng như thế nào. Mình sẽ nói chi tiết để các bạn hiểu cơ chế hoạt động của nó.

Khi 1 user login vào forum nếu có check dấu ghi nhớ để lần sau không phải login lại khi hết cookie timeout thì phía client sẽ có 3 cookie đc thiết lập.
cookieprefix_userid,cookieprefix_password và cookieprefix_remember

cái userid và remember chắc mình không cần nói, cái password nó không phải là password của người dùng, cũng không phải là password trong cột password của table user.
Nó là kết quả
PHP Code:
MD5(Cột_Password_Trong_table_User.$config['Misc']['cookie_security_hash']) 
Như vậy, nếu attacker khai thác đc 1 lỗi SQL Injection nào đó trên forum của bạn và lấy đc 1 số record trong table user mà giá trị cookie_security_hash bạn để trống trong file config.php thì tất nhiên, attacker sẽ dễ dàng login đc vào bất kỳ tài khoản nào bằng cách thiết lập cookie trên trình duyệt 3 cookie mình đã để cập bên trên.

Còn nếu bạn có thiết lập giá trị cookie_security_hash ? Attacker không thể biết đc giá trị này nếu chưa attack vào đc host của bạn hay có shell trên server. Như vậy, cho dù có lấy đc cả table user thì attacker cũng không thể nào login vào bất kỳ tài khoản nào cả (ngoại trừ trường hợp bạn sử dụng password quá đơn giản như 123456 4)

Vì vậy, khi đọc xong bài này, hãy mở ngay file config của bạn lên và thêm 1 chuỗi ký tự bất kỳ vào $config['Misc']['cookie_security_hash'] nhé. Làm ngay và luôn kẻo bị attack nhé 4

Nguồn: Sinhvienit.net

Chú Ý:

Coppy phải ghi rõ nguồn Dương-UG Blog's
 

0 nhận xét:

Đăng nhận xét

:) :( :)) :(( =))

Copyright © Dương-UG Blog's - Nguyễn Bình Dương