03/10/2011 13:55:37 PMThiết kế web an toàn, thông báo lỗi bảo mật mã nguồn Vbulletin
(Lượt xem: 3262)Thiết kế web an toàn, thông báo lỗi bảo mật mã nguồn VbulletinThiết kế web an toàn, thông báo lỗi bảo mật mã nguồn Vbulletin
Các phiên bản vbb từ 4.0 - 4.13 bị mắc lỗi khá nghiêm trọng SQL injection
Thông qua lỗi này hacker có thể lấy được hầu hết thông tin nhạy cảm của website.
Các webmaster chú ý và sửa chữa nhanh chóng lỗi này.
Sau đây là một và lời khuyên:
1. Phân quyền forum thật kỹ
2. Đặt password (dùng htaccess) cho thư mục admin. Nên đổi tên thư mục này và không cập nhật lại trong file config.php
3. Nên chmod cẩn thận các folder tốt nhất là 404 cho file và 701 cho folder, folder chứ attachment thì nên tạo file htaccess với nội dung sau.
Deny from all
4. Thường xuyên nâng cấp forum khi có bản mới.
5. Thường xuyên cập nhật các thông tin về bảo mật Có thể xem tại "exploit-db" hoặc "The hacker news"
Hướng dẫn:
+Addon firefox : Live HTTP headers +Cookie Editor
+Get user + add group + bật live http headers +search group vừa add
+Get email:user: passwd:salt
+Add Cookie Name trong cookie Editor bb_userid + bb_password
+Md5 password vừa get cho vào content của bb_password
+LogOut sau đó vào lại forum với quyền admin
Cách sữa lỗi bảo mật vbulletin 4.0 đến 4.1.4
Mởi file global.php thêm đoạn sau vào sau chuôi <?php trên đỉnh trang
function check_requires_value($p)
{
foreach($p as $k=>$v)
{
if(is_array($v))
check_requires_value($v);
else
$val = strtolower($v);
if(preg_match("/union/",$val)) die("deny");
}
}
check_requires_value($_GET);
check_requires_value($_POST);
Cách Fix 2:
Hãy nhanh ng nâng cấp lên phiên bản 4.1.4 để fix lỗi trên hoặc các bạn cũng có thể fix bằng tay như sau . Edit file /includes/class_core.php
Tìm dòng 750 :
PHP Code:
function sql_prepare($value)
{
if (is_string($value))
{
retu "'" . $this->;escape_string($value) . "'";
}
else if (is_numeric($value) AND $value + 0 == $value)
{
retu $value;
}
else if (is_bool($value))
{
retu $value ? 1 : 0;
}
else
{
retu "'" . $this->;escape_string($value) . "'";
}
}
Thay thế bằng :
PHP Code:
function sql_prepare($value)
{
if (is_string($value))
{
retu "'" . $this->;escape_string($value) . "'";
}
else if (is_numeric($value) AND $value + 0 == $value)
{
retu $value;
}
else if (is_bool($value))
{
retu $value ? 1 : 0;
}
else if (is_null($value))
{
retu "''";
}
else if (is_array($value))
{
foreach ($value as $key =>; $item)
{
$value[$key] = $this->;sql_prepare($item);
}
retu $value;
}
else
{
retu "'" . $this->;escape_string($value) . "'";
}
}