-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Shared hosting remote code execution #60
Comments
Thanks for the note, but normally config.php wil be written not in system-wide /tmp, but to ./tmp in current dir, there Manul's index.php is located. It depends on file access. But we'll review it anyway and will find better way to store the hash. |
Петя, он при первом запуске проверится на existence, и заинклюдится из /tmp. До его записи дело даже не дойдёт ;) |
Дима, куда ты предлагаешь пихать хэш? |
В локальный ./tmp и только туда |
Он туда и пишется, если права есть https://github.com/antimalware/manul/blob/master/src/scanner/classes/Initialization.inc.php#L40 |
Возможно, стоит дополнительное предупреждение рисовать в UI в случае, если используется системный tmp |
На шаред хостинге могут быть проблемы у двух пользователей, один из которых уже запустил манула и создал файл в /tmp/config.php, а второй пытается сделать это следом. Второй запустить манул на этом сервере уже не сможет, у него будет инклудится первый и будет всегда запрашиваться неправильный пароль. Я за то, чтобы убрать системный каталог (в крайнем случае для системного каталога tmp сделать имя файла конфига уникальным). |
Ребят, я не про запись config.php. Я про опасность того, о чём написал gregzem, т.е. про собственно чтение конфига, и порядок этого чтения.
|
Ок. Предложу такое решение: config.php будем не инклудить, а читать просто как текстовый файл, выпаршивая хэш. php - чтобы всё-таки нельзя было открыть и прочесть через http запрос |
Но ведь это так и не решает проблему двух юзеров (у которых локальные tmp не доступны на запись) на одном шаред хостинге. От первого юзера файл создан в /tmp/config.php, второй использует его же и получает проблему с аутентификацией. |
Ребят, вы серьёзно сейчас?
|
Дима, это раздувание бури в стакане с вынесением на facebook кажется мне несколько нездоровым. Во-первых remote тут с большой натяжкой и ты это понимаешь, во-вторых это сработает у одного аномального пользователя из ста, если звёзды сойдутся. Несмотря на то, что ни один из открытых тобой багов не является критичным на момент их открытия - у всех ряд оговорок, я выкачу фиксы сегодня же, тестирую в данный момент. Ты же сейчас себя проявляешь как белка с известной картинки. Некрасиво, Дима. Спасибо тебе за открытые баги, но неужели тебе действительно так нравится делать из этого сенсацию? |
Петя, да, мне нравится делать из этого сенсацию. Потому что так быстрее фиксят, по опыту, а не спорят насчёт авторизации и не говорят "мы исправим это в следущей версии" как в предыдущем баге. Потому что, Петя, даже если вы выкатите фиксы, те кто уже поставил manul - уже не обновятся. Все уже поставились как есть. Поставились в директорию site-name/manul/, как вы и просили, чтобы было проще их насканить наверное. И если уязвимость, при помощи которой один пользователь шаред хостинга, может поиметь других пользователей этого же шаред хостинга тебе не кажется критической, то извини. Я правда очень хорошо отношусь к вам всем, но нельзя так. Правда нельзя. Вы не в игрушки играете. |
Публикацию я удалил, извини, не хотел чтобы это отразилось именно на тебе. |
Поправил - теперь инклуда нет. |
During auth phase, manul checks for /tmp/config.php file existense, and if it exist - includes it ;)
Usually, /tmp directory is world writable and accesible by anyone.
So, exploit is simple:
The text was updated successfully, but these errors were encountered: