Comments 16
У вас в компании есть отдельная директива, называть XXE OOB вектор «японским»? Мне так, чисто из любопытства.
+1
Мне кажется, на японских форумах он упоминался (публично) раньше (2009 год), чем XXE OOB (2013)?
P.S. Знаю, что была какая-то дискуссия на эту тему, но не в курсе её результатов.
P.S. Знаю, что была какая-то дискуссия на эту тему, но не в курсе её результатов.
+1
Вопрос: этот японский вектор кто-нибудь знал кроме самих японцев до того, как появился XXE OOB?
+1
Если говорить про меня лично — то я узнал о них одновременно, когда эксплуатировал впервые подобную XXE, поэтому указал тот, на который отсылка есть раньше.
И если отвечать на вопрос Тимура, ответ нет. Можно открыть журнал «Хакер» и посмотреть, что в т.ч. в печатных изданиях и до написания этой статьи указываем оба названия (здесь апдейтнул).
И если отвечать на вопрос Тимура, ответ нет. Можно открыть журнал «Хакер» и посмотреть, что в т.ч. в печатных изданиях и до написания этой статьи указываем оба названия (здесь апдейтнул).
+1
Хорошо бы теперь статью, как закрыть все эти 7 трюков.
+2
- Использовать X-Frame-Options (с корректными правилами);
- Не выдавать право Create текущему пользователю. Чаще всего это не требуется. Если требуется (например, для обновления / установки CMS) — добавлять/удалять только на это время;
- Echo сервисы — странная штука :) Обычно сетевой сервис не должен вести себя в подобном режиме на продакшине
- Отключение парсинга сущностей, практически все стандартные парсеры это позволяют;
- Загружать юзер контент на отдельный домен, не в whitelist CSP. Если требуется отобразить preview — то делать preview из белого листа. При конвертации гифки код потеряется;
- Хранить весь юзер контент на отдельном, изолированном домене (не поддомене, а на именно отдельном домене);
- Преобразовывать спец. символы в т.ч. в имени загружаемого файла, так как эта такая же информация от пользователя, как и вся другая.
+3
Хорошая статья получилась. Всем бы так!
+2
6. Прощай полноценный HTTPS.
0
В чем проблема докупить сертификат для этого отдельного домена?
0
Не уверен, как это расценит браузер. Он не любит на HTTPS страницах данные (статику), загруженную по HTTP (даже с того же домена). Что он будет думать на тему левого домена, хоть и по HTTPS — я не знаю.
0
Трюк #2 попробовал на MySQL 5.5. Получил такую ошибку:
Видимо, на каких версиях это изменилось. На указанном линке народ говорит про 5.0 и 5.1.
mysql> LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE test FIELDS TERMINATED BY ' ';
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Видимо, на каких версиях это изменилось. На указанном линке народ говорит про 5.0 и 5.1.
0
Видимо ваш мускул собран без --enable-local-infile.
+1
Он был собран с параметрами по-умолчанию в этом плане. Если добавить --local-infile как предложили ниже, то работает. Но так работает только в mysql клиенте из командной строки, а через web я получаю ту же ошибку "(1148, 'The used command is not allowed with this MySQL version')".
Похоже, что в моём модуле, который я использую, это отключено. У меня обычный MySQLdb для Python.
Похоже, что в моём модуле, который я использую, это отключено. У меня обычный MySQLdb для Python.
0
Попробуйте подключиться к серверу с опцией --local-infile. Например так:
mysql -h 192.168.100.205 -P 3306 --local-infile -u user1 -p
После этого все отлично работает :) ну и проверить show variables like '%infile%'; на всякий случай.
mysql -h 192.168.100.205 -P 3306 --local-infile -u user1 -p
После этого все отлично работает :) ну и проверить show variables like '%infile%'; на всякий случай.
0
Sign up to leave a comment.
Подборка трюков при анализе защищенности веб приложений