PDA

Просмотр полной версии : Скрипт 4images


blaga
25.04.2006, 08:34
Я думаю многие знают дырку в скрипте 4images.
Когда в адресе пишеш index.php?template=../../../../../../../etc/passwd%00 и он выдает тебе содержимое passwd.
Ссори если вопрос тупой... А как от этого избавится на своем сайте? Чтоб не было такой фигни.?

vectorg
25.04.2006, 10:09
я помогу тебе сделать, только дай мне этот скрипт

blaga
25.04.2006, 13:48
2VectorG я тебе конечно верю, но не мог бы ты мне СКАЗАТЬ как это делается. Чтоб не искать потом троянчика в скрипте. Я ни на что не намекаю, просто люди разные бывают...

Azazel
25.04.2006, 13:51
2 blaga. Найди статью Green Beer про php инъекции. Он описывал

$dir=str_replace("/","",$dir); // Отфильтруем нехорошие символы
$dir=str_replace(":","",$dir);
$dir=str_replace(".","",$dir);

vectorg
25.04.2006, 13:56
2VectorG я тебе конечно верю, но не мог бы ты мне СКАЗАТЬ как это делается. Чтоб не искать потом троянчика в скрипте. Я ни на что не намекаю, просто люди разные бывают...
какие трояны? там 3 строчки кода...
используй поиск, были статьи от Green_Bear и ZaCo
но в твоём случае, всё просто как палка

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

blaga
25.04.2006, 16:33
2VectorG этож паблик. Неужели не можеш скачать такой же? Этот скрипт далеко не редкость.

max_pain89
25.04.2006, 17:51
Есть паблик сплойт от рога ( вроде такой ник ). Он аффтоматически закачевает картинку в шеллкодом и выдает тебе ссцылку уже на готовый шелл. Рабочий, уже пробывал.

blaga
25.04.2006, 20:13
2max_pain89 да мне не сплоит нужен а зашита.

blaga
25.04.2006, 20:18
вот код
<?php

$templates_used = 'home,category_bit,whos_online,thumbnail_bit';
$main_template = 'home';

define('GET_CACHES', 1);
define('ROOT_PATH', './');
define('GET_USER_ONLINE', 1);
include(ROOT_PATH.'global.php');
require(ROOT_PATH.'includes/sessions.php');
$user_access = get_permission();

if (isset($HTTP_GET_VARS['template']) || isset($HTTP_POST_VARS['template'])) {
$template = (isset($HTTP_GET_VARS['template'])) ? stripslashes(trim($HTTP_GET_VARS['template'])) : stripslashes(trim($HTTP_POST_VARS['template']));
if (!file_exists(TEMPLATE_PATH."/".$template.".".$site_template->template_extension)) {
$template = "";

}
else {
$main_template = $template;

}
}
else {
$template = "";

}
include(ROOT_PATH.'includes/page_header.php');

if (!empty($template)) {
$clickstream = "<a href=\"".$site_sess->url(ROOT_PATH."index.php")."\">".$lang['home']."</a>".$config['category_separator'].str_replace("_", " ", ucfirst($template));
$site_template->register_vars("clickstream", $clickstream);
$site_template->print_template($site_template->parse_template($main_template));
include(ROOT_PATH.'includes/page_footer.php');
}

//-----------------------------------------------------
//--- Show Categories ---------------------------------
//-----------------------------------------------------
$categories = get_categories(0);
if (!$categories) {
$categories = $lang['no_categories'];
}
$site_template->register_vars("categories", $categories);
unset($categories);

//-----------------------------------------------------
//--- Show New Images ---------------------------------
//-----------------------------------------------------
$imgtable_width = ceil(intval($config['image_table_width']) / $config['image_cells']);
if ((substr($config['image_table_width'], -1)) == "%") {
$imgtable_width .= "%";
}

$additional_sql = "";
if (!empty($additional_image_fields)) {
foreach ($additional_image_fields as $key => $val) {
$additional_sql .= ", i.".$key;
}
}

$num_new_images = $config['image_cells'];
$sql = "SELECT i.image_id, i.cat_id, i.user_id, i.image_name, i.image_description, i.image_keywords, i.image_date, i.image_active, i.image_media_file, i.image_thumb_file, i.image_download_url, i.image_allow_comments, i.image_comments, i.image_downloads, i.image_votes, i.image_rating, i.image_hits".$additional_sql.", c.cat_name".get_user_table_field(", u.", "user_name")."
FROM ".IMAGES_TABLE." i, ".CATEGORIES_TABLE." c
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = i.user_id)
WHERE i.image_active = 1 AND c.cat_id = i.cat_id AND i.cat_id IN (".get_auth_cat_sql("auth_viewcat").")
ORDER BY i.image_date DESC
LIMIT $num_new_images";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);

if (!$num_rows) {
$new_images = "<table width=\"".$config['image_table_width']."\" border=\"0\" cellpadding=\"".$config['image_table_cellpadding']."\" cellspacing=\"".$config['image_table_cellspacing']."\"><tr class=\"imagerow1\"><td>";
$new_images .= $lang['no_new_images'];
$new_images .= "</td></tr></table>";
}
else {
$new_images = "<table width=\"".$config['image_table_width']."\" border=\"0\" cellpadding=\"".$config['image_table_cellpadding']."\" cellspacing=\"".$config['image_table_cellspacing']."\">";
$count = 0;
$bgcounter = 0;
while ($image_row = $site_db->fetch_array($result)){
if ($count == 0) {
$row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
$new_images .= "<tr class=\"imagerow".$row_bg_number."\">\n";
}
$new_images .= "<td width=\"".$imgtable_width."\" valign=\"top\">\n";

show_image($image_row);
$new_images .= $site_template->parse_template("thumbnail_bit");
$new_images .= "\n</td>\n";
$count++;
if ($count == $config['image_cells']) {
$new_images .= "</tr>\n";
$count = 0;
}
} // end while

if ($count > 0) {
$leftover = ($config['image_cells'] - $count);
if ($leftover >= 1) {
for ($f = 0; $f < $leftover; $f++) {
$new_images .= "<td width=\"".$imgtable_width."\">\n&nbsp;\n</td>\n";
}
$new_images .= "</tr>\n";
}
}
$new_images .= "</table>\n";
} // end else

$site_template->register_vars("new_images", $new_images);
unset($new_images);

//-----------------------------------------------------
//--- Print Out ---------------------------------------
//-----------------------------------------------------
$site_template->register_vars(array(
"msg" => $msg,
"clickstream" => $clickstream
));
$site_template->print_template($site_template->parse_template($main_template));
include(ROOT_PATH.'includes/page_footer.php');
?>

пробовал кое что но не канает. все равно палит.

max_pain89
25.04.2006, 20:20
if (preg_match ("/../i", $template))
{
die('FUCK OFF!');
}

m0nzt3r
27.04.2006, 13:09
Ответ есть.Тема закрыта.