• Downloading from our site will require you to have a paid membership. Upgrade to a Premium Membership from 10$ a month today!

    Dont forget read our Rules! Also anyone caught Sharing this content will be banned. By using this site you are agreeing to our rules so read them. Saying I did not know is simply not an excuse! You have been warned.

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

Admin

Well-Known Member
Staff member
Administrator
Thật ra 2 lỗi này đã tồn tại từ rất lâu rồi. Sinhvienit cũng đã phát hiện và hướng dẫn cách fix cách đây 2 năm về trước (Thời điểm đó SVIT ko cung cấp mã khai thác lỗi này mà chỉ hướng dẫn cách fix).


Tuy nhiên, thời gian gần đây, mã khai thác lỗi này được công bố và hệ quả là thời gian gần đây rất nhiều forum bị "Hacked by..." mà không hiểu vì sao (Sau khi bị tấn công thường tự nghĩ là do bị local attack).



SinhVienIT.NET---vbulletin-security-alert.jpg


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


Về cách fix lỗi này, 2 năm trước SVIT đã có 1 bài ở đây. Mà hình như thời điểm đó không mấy ai để ý đến nó.


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:
$foruminid = $vbulletin->db->escape_string($_REQUEST['listforumid']);
Thêm vào bên dưới
PHP:
//---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:
$foruminid = $vbulletin->db->escape_string($_REQUEST['listforumid']);
Thêm vào bên dưới
PHP:
//---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" :D
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. (Video bên dưới)




Để 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:
$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 :khakha:

----------> Bổ sung bài viết lúc 11:22 AM <----------> Bài viết trước lúc 11:21 AM <----------

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:
$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:
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 ) 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
PHP:
$config['Misc']['cookie_security_hash']
nhé. Làm ngay và luôn kẻo bị attack nhé Nguồn: SVIT
 

Facebook Comments

Similar threads

New posts New threads New resources

Back
Top