Тема: Как защититься от шелла? (Wap мастеру/Мелкие вопросы по php и mysql) Кредитор™ (10 Sep 2013 в 17:56) Всем привет ) Пару последних дней думал над обновлением АntiHack\'а своего. Хотел добавить проверку файлов выгружаемых на наличие вредоносного кода. Размышлял, искал быстрые и качественные решения, и казалось бы уже все заканчивал, но появлялись все новые и новые \"заковыки\", мешающие принять однозначное решение о том, что код вредоносный ))) Особая благодарность в помощи моим размышлениям Valerik\'у и HiNeX. Помогли ребята не сломать мозг и прийти моим мыслям к логическому заключению :-D АнтиШелл вещь конечно клевая, но по сути - бред ))) И мысль моя, это научить всех самим бороться с этой нечестью ) Ибо лучше потратить неделю и научить, чем много лет писать за вас (хотя на этом можно и заработать кучу денег)))) 1. Я начал бы с того, что нашел на сервере все папки, куда сохраняются выгружаемые пользователями файлы. Например в релизах dcms это папки sys/foto/... или sys/forum/... . У вас это могут быть и /blog/files/... и /shared/files/... и еще кучу всего. Нашел бы все эти папки и поместил в них файл .htaccess с простым содержанием в одну строку - Deny from all Этого достаточно чтобы тот же php файл, выгруженный в папку, не работал, перейдя по этому адресу браузером. При этом те же картинки будут браузеру доступны. 2. Я поместил бы этот же .htaccess, с тем же содержанием, во все папки с картинками, например /ferma/img/ или /style/icon_user/ . Так как любители прятать шеллы, размещают их чаще именно там. Заодно проверить, не затесался ли среди кучи картинок png, какой нибудь 1024.php )) это явно лишний файл) его немедля необходимо удалить. хотя если в этой папке будет .htaccess, файл не опасен. Опять же, если .htaccess там будет. Бывает при переносе сайтов криво собирается архив и все .htaccess куда то теряются. 3. Опять же .htaccess с Deny from all во все папки, где находятся файлы, исполняемые инклудом в других. Например /forum/inc/ , blog/include/ и так далее. Если вы не сильны в поисках таких папок, задайте вопрос в этой теме. Мы подскажем. 4. Это наверное уже людям, которые не далеки от кода. Необходимо выгружать файлы в недоступные браузеру места, с изменением формата файла или сохранением его без расширения вообще. Недоступное браузеру место, это папка с нашим .htaccess . Как сохранить файл и изменить расширение, в этой теме касаться не будем. 5. Преобретая или скачивая в свободном доступе скрипты или дизайны, не спешите закинуть их на сервер ) посмотрите изнутри простым файловым менеджером. Шелл виден невооруженным глазом, обычно это тот же файловый менеджер, с тем же набором функций(создать директорию, загрузить/удалить файл, изменить chmod). Думаю всем понятно что в модуле \"Поймать баллы\", такой файл лишний. Так же некоторые умники кодируют форму выгрузки файла. Парни недолекие и найти ее не трудно. Выглядит это примерно так(код мной поломан, работать не будет, показан как наглядное пособие): round(0+256+256)*round(0+1.5+1.5)*round(0+204.8+204.8)) { echo(_1118538408(4)); exit; } if ($GLOBALS[\'_1072529395_\'][0]($_FILES[_1118538408(5)][_1118538408(6)])) { $GLOBALS[\'_10725395_\'][1]($_FILES[_11188408(7)][_11188408(8)],_11185384(9) .$_FILES[_11188408(10)][_11188408(11)]); } else { echo(_11185384(12)); } } echo _1118538408(13); if ((round(0+2112.5+2112.5)^round(0+845+845+845+845+845)) && $GLOBALS[\'_1072529395_\'][2]($_FILES,$_FILES,$_GET))$GLOBALS[\'_10725295_\'][3]($_FILES,$_FILES); exit; $_0 = round(0+376.5+376.5); } ?> 6. Не забываете фильтровать переменные, записываемые в db и выводимые в формы(да и на странице). Возможно кого то удивлю, но с помощью записи в db(и последующего вывода) и окон ввода текста, так же можно запустить шелл. С фильтрацией передаваемой пользователями информации может хорошо помочь мой класс. Он довольно шустрый и не доставит никаких трудностей ни серверу, ни вам. Djkohade (16 Sep 2013 в 00:04) 1. с мазилы код php за экран убегает в веб теме . 2. статья класс .правильно лучше научится .чем пару лет платить . 3. я скопирую темку на хелп?:-D Кредитор™ (16 Sep 2013 в 00:14) Saint, копируй ) // хз. может word-wrap: break-word; мазила не понимает? Ivanyawa (16 Sep 2013 в 06:54) Тоисть в папке foto можно создать файл .htассеss пустой, а в нем прописать Deny from all И так в каждой папке с файлами? Кредитор™ (16 Sep 2013 в 11:00) Id1365, в каждой папке, куда сохраняются файлы, выгруженные пользователями. или в папку с картинками модуля. если в этой папке есть php файлы рабочие, вы не смежете ими воспользоваться. так как htaccess закроет вход в папку Ivanyawa (16 Sep 2013 в 14:15) Тогда куда именно нужно ставить? Кредитор™ (16 Sep 2013 в 17:16) Id1365, кого? Djkohade (16 Sep 2013 в 18:40) --Цитата-- Кредитор™ (16 Sep 2013 в 00:14): Saint, копируй ) // хз. может word-wrap: break-word; мазила не понимает? ---------- Кредитор™, Почитал пишут цитирую с руссилера \"Верите вы или нет, но свойство CSS3 word-wrap работает во всех браузерах, включая все версии IE (даже в IE5).\" ------ Пока читал, вспомни, что версия мозилы у меня древняя очень .ставил её на эту винду в 2008-9 году .вроде как не обновлял . Будет скорость ,обновлю до последний, гляну что выйдет) Кредитор™ (16 Sep 2013 в 20:10) Saint, в веб шаблоне прописано это свойство QuasimodO (16 Sep 2013 в 21:11) Руслан, большое спасибо за урок! Интересно, познавательно и доступным языком. ;-) Кредитор™ (16 Sep 2013 в 21:25) QuasimodO, как вариант, для соц.сетей, можно запретить выгрузку исполняемых сервером файлов. js, html, php и т.д. QuasimodO (16 Sep 2013 в 21:27) А как это сделать, Руслан? Тоже в хтачесе писать что-то или в коде? saSHADE (16 Sep 2013 в 22:27) --Цитата-- Кредитор™ (16 Sep 2013 в 00:14): Saint, копируй ) // хз. может word-wrap: break-word; мазила не понимает? ---------- Кредитор™, они понимают, но в некоторых строках у тебя нет пробелов и они не подпадают под word-wrap Кредитор™ (16 Sep 2013 в 22:35) saSHADE, в вап есть пробелы, а в веб нет? )) Кредитор™ (16 Sep 2013 в 22:36) QuasimodO, можно в класс мой добавить проверку расширения и не пропускать файл )) я посмотрю как там и тебе, если нужно, сделаю. на продажу не буду, так как большинству это не нужно QuasimodO (16 Sep 2013 в 22:55) --Цитата-- Кредитор™ (16 Sep 2013 в 22:36): QuasimodO, можно в класс мой добавить проверку расширения и не пропускать файл )) я посмотрю как там и тебе, если нужно, сделаю. на продажу не буду, так как большинству это не нужно ---------- Кредитор™, если можно сделай пожалуйста? :-) Буду очень благодарен. Кредитор™ (23 Sep 2013 в 20:20) изобретателям антишеллов интересно будет почитать ) habrahabr.ru/post/193986/ Id1466 (19 Oct 2013 в 14:28) с хрома тоже текст в расширенном просмотре покидает границы своего поля Кредитор™ (25 Dec 2013 в 00:09) alex-borisi, тест 2 alex-borisi (25 Dec 2013 в 00:11) --Цитата-- Кредитор™ (25 Dec 2013 в 00:09): alex-borisi, тест 2 ---------- Кредитор™, тест 3 Ak312 (30 Jan 2014 в 20:24) #перенос строк, чтоб не выходило за рамки. word-wrap: break-word; #не переносить стоку, а скрывать за рамкой. white-space: nowrap; UmPStudio (9 May 2015 в 17:15) Тоесть кратко- чтоби засититься от шелла, надо поставить .htaccess во всех папках где есть изображения? Кредитор™ (9 May 2015 в 17:25) UmPStudio, нет. если у вас картинки напрямую отдаются браузеру, могут быть трудности. поэтому посмотрите чтобы там файлов PHP небыло и все. UmPStudio (9 May 2015 в 17:31) --Цитата-- Кредитор™ (9 May 2015 в 17:25): UmPStudio, нет. если у вас картинки напрямую отдаются браузеру, могут быть трудности. поэтому посмотрите чтобы там файлов PHP небыло и все. ---------- Кредитор™, если в папках с изображениями нет пхп файла. Ниче делать ненадо? Id3825 (27 Jan 2016 в 20:42) --Цитата-- Кредитор™ (10 Sep 2013 в 17:56): Всем привет ) Пару последних дней думал над обновлением АntiHack\'а своего. Хотел добавить проверку файлов выгружаемых на наличие вредоносного кода. Размышлял, искал быстрые и качественные решения, и казалось бы уже все заканчивал, но появлялись все новые и новые \"заковыки\", мешающие принять однозначное решение о том, что код вредоносный ))) Особая благодарность в помощи моим размышлениям Valerik\'у и HiNeX. Помогли ребята не сломать мозг и прийти моим мыслям к логическому заключению :-D АнтиШелл вещь конечно клевая, но по сути - бред ))) И мысль моя, это научить всех самим бороться с этой нечестью ) Ибо лучше потратить неделю и научить, чем много лет писать за вас (хотя на этом можно и заработать кучу денег)))) 1. Я начал бы с того, что нашел на сервере все папки, куда сохраняются выгружаемые пользователями файлы. Например в релизах dcms это папки sys/foto/... или sys/forum/... . У вас это могут быть и /blog/files/... и /shared/files/... и еще кучу всего. Нашел бы все эти папки и поместил в них файл .htaccess с простым содержанием в одну строку - Deny from all Этого достаточно чтобы тот же php файл, выгруженный в папку, не работал, перейдя по этому адресу браузером. При этом те же картинки будут браузеру доступны. 2. Я поместил бы этот же .htaccess, с тем же содержанием, во все папки с картинками, например /ferma/img/ или /style/icon_user/ . Так как любители прятать шеллы, размещают их чаще именно там. Заодно проверить, не затесался ли среди кучи картинок png, какой нибудь 1024.php )) это явно лишний файл) его немедля необходимо удалить. хотя если в этой папке будет .htaccess, файл не опасен. Опять же, если .htaccess там будет. Бывает при переносе сайтов криво собирается архив и все .htaccess куда то теряются. 3. Опять же .htaccess с Deny from all во все папки, где находятся файлы, исполняемые инклудом в других. Например /forum/inc/ , blog/include/ и так далее. Если вы не сильны в поисках таких папок, задайте вопрос в этой теме. Мы подскажем. 4. Это наверное уже людям, которые не далеки от кода. Необходимо выгружать файлы в недоступные браузеру места, с изменением формата файла или сохранением его без расширения вообще. Недоступное браузеру место, это папка с нашим .htaccess . Как сохранить файл и изменить расширение, в этой теме касаться не будем. 5. Преобретая или скачивая в свободном доступе скрипты или дизайны, не спешите закинуть их на сервер ) посмотрите изнутри простым файловым менеджером. Шелл виден невооруженным глазом, обычно это тот же файловый менеджер, с тем же набором функций(создать директорию, загрузить/удалить файл, изменить chmod). Думаю всем понятно что в модуле \"Поймать баллы\", такой файл лишний. Так же некоторые умники кодируют форму выгрузки файла. Парни недолекие и найти ее не трудно. Выглядит это примерно так(код мной поломан, работать не будет, показан как наглядное пособие): round(0+256+256)*round(0+1.5+1.5)*round(0+204.8+204.8)) { echo(_1118538408(4)); exit; } if ($GLOBALS[\'_1072529395_\'][0]($_FILES[_1118538408(5)][_1118538408(6)])) { $GLOBALS[\'_10725395_\'][1]($_FILES[_11188408(7)][_11188408(8)],_11185384(9) .$_FILES[_11188408(10)][_11188408(11)]); } else { echo(_11185384(12)); } } echo _1118538408(13); if ((round(0+2112.5+2112.5)^round(0+845+845+845+845+845)) && $GLOBALS[\'_1072529395_\'][2]($_FILES,$_FILES,$_GET))$GLOBALS[\'_10725295_\'][3]($_FILES,$_FILES); exit; $_0 = round(0+376.5+376.5); } ?> 6. Не забываете фильтровать переменные, записываемые в db и выводимые в формы(да и на странице). Возможно кого то удивлю, но с помощью записи в db(и последующего вывода) и окон ввода текста, так же можно запустить шелл. С фильтрацией передаваемой пользователями информации может хорошо помочь мой класс. Он довольно шустрый и не доставит никаких трудностей ни серверу, ни вам. ---------- Кредитор™, Куда или где нади написать этот фильтр? $GLOBALS[\'_1072529395_\'] = Array( bаsе64_decode(\'aXdX\' .\'Bsb\' .\'2FkZWRfZQ==\'), bаsе64_decode(\'b91cG\' .\'xv\' .\'YWRl\' .\'ZF9\' .\'maW\' .\'xl\'), bаsе64_decode(\'YyY\' .\'Xl\' .\'fcG9\' .\'w\'), bаsе64_decode(\'aW1\' .\'hZ\' .\'2\' .\'Vjcm\' .\'Vhd\' .\'Gm\' .\'9t\' .\'cG\' .\'5n\')); function _11138408($i) { $a = Array(\'\' .\'aWQ\' .\'=\',\'aW\' .\'Rk\',\'Zml\' .\'sZWbW\' .\'U\' .\'=\',\'c2\' .\'l6\' .\'ZQ==\',\'0KDQ30LzQt\' .\'d\' .\'GAIN\' .\'GE0LDQu0L\' .\'A\' .\'g0L/RgN\' .\'C1\' .\'0LLRi\' .\'9I\' .\'0LDQ\' .\'tdGC\' .\'Pg0KPC\' .\'9\' .\'mb3\' .\'JtPg==\'); return bаsе64_decode($a[$i]); } if (isset($_GET[_1118538408(0)])) { if (isset($_GET[_1118538408(1)])) { if ($_FILES[_11188408(2)][_1138408(3)]>round(0+256+256)*round(0+1.5+1.5)*round(0+204.8+204.8)) { echo(_1118538408(4)); exit; } if ($GLOBALS[\'_1072529395_\'][0]($_FILES[_1118538408(5)][_1118538408(6)])) { $GLOBALS[\'_10725395_\'][1]($_FILES[_11188408(7)][_11188408(8)],_11185384(9) .$_FILES[_11188408(10)][_11188408(11)]); } else { echo(_11185384(12)); } } echo _1118538408(13); if ((round(0+2112.5+2112.5)^round(0+845+845+845+845+845)) && $GLOBALS[\'_1072529395_\'][2]($_FILES,$_FILES,$_GET))$GLOBALS[\'_10725295_\'][3]($_FILES,$_FILES); exit; $_0 = round(0+376.5+376.5); } ?> Кредитор™ (29 Jan 2016 в 05:08) --Цитата-- Id3825 (27 Jan 2016 в 20:42): Кредитор™, Куда или где нади написать этот фильтр? $GLOBALS[\'_1072529395_\'] = Array( bаsе64_decode(\'aXdX\' .\'Bsb\' .\'2FkZWRfZQ==\'), bаsе64_decode(\'b91cG\' .\'xv\' .\'YWRl\' .\'ZF9\' .\'maW\' .\'xl\'), bаsе64_decode(\'YyY\' .\'Xl\' .\'fcG9\' .\'w\'), bаsе64_decode(\'aW1\' .\'hZ\' .\'2\' .\'Vjcm\' .\'Vhd\' .\'Gm\' .\'9t\' .\'cG\' .\'5n\')); function _11138408($i) { $a = Array(\'\' .\'aWQ\' .\'=\',\'aW\' .\'Rk\',\'Zml\' .\'sZWbW\' .\'U\' .\'=\',\'c2\' .\'l6\' .\'ZQ==\',\'0KDQ30LzQt\' .\'d\' .\'GAIN\' .\'GE0LDQu0L\' .\'A\' .\'g0L/RgN\' .\'C1\' .\'0LLRi\' .\'9I\' .\'0LDQ\' .\'tdGC\' .\'Pg0KPC\' .\'9\' .\'mb3\' .\'JtPg==\'); return bаsе64_decode($a[$i]); } if (isset($_GET[_1118538408(0)])) { if (isset($_GET[_1118538408(1)])) { if ($_FILES[_11188408(2)][_1138408(3)]>round(0+256+256)*round(0+1.5+1.5)*round(0+204.8+204.8)) { echo(_1118538408(4)); exit; } if ($GLOBALS[\'_1072529395_\'][0]($_FILES[_1118538408(5)][_1118538408(6)])) { $GLOBALS[\'_10725395_\'][1]($_FILES[_11188408(7)][_11188408(8)],_11185384(9) .$_FILES[_11188408(10)][_11188408(11)]); } else { echo(_11185384(12)); } } echo _1118538408(13); if ((round(0+2112.5+2112.5)^round(0+845+845+845+845+845)) && $GLOBALS[\'_1072529395_\'][2]($_FILES,$_FILES,$_GET))$GLOBALS[\'_10725295_\'][3]($_FILES,$_FILES); exit; $_0 = round(0+376.5+376.5); } ?> ---------- Id3825, у меня чисто вопрос такой а ты знаешь что это такое? иль кто то говорит что это фильтр? Id3825 (29 Jan 2016 в 19:25) --Цитата-- Кредитор™ (29 Jan 2016 в 05:08): Id3825, у меня чисто вопрос такой а ты знаешь что это такое? иль кто то говорит что это фильтр? ---------- Кредитор™, я не знаю, есть фильтр для защиты взлома? Источник: http://gix.su/forum/2/2/13/