Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Ломаем proxy от Small HTTP Server, warez, FreeInet

Привет!
Всех с праздником! Хотя я уж и не знаю каким… :) Что празднуем-то? В общем «Мир, Труд, Май!» :))

Как-то, пару месяцев назад, ковырял я Small HTTP Server Макса Феоктистова (подробнее можно почитать тут). Тогда оказалось, что при всех достоинствах этого продукта, у него имеется один недостаток — серьезные проблемы с безопасностью. Что, в общем-то, не мешает использовать его, как платформу для тестов.

Вчера я вспомнил о том, что кроме Веб-сервера в том же дистрибутиве есть еще прокси-сервер и DNS. О протоколе DNS я знаю маловато, так что решил на предмет устойчивости попробовать прокси.

Написал небольшого клиента на Java (под рукой ничего, работающего с сокетами, не оказалось), посмотрел, что именно передает браузер при соединении через прокси, открыл telnet на порт 3128 (порт по умолчанию для SHS proxy) и начал экспериментировать.

Оказалось, что прокси можно заставить бесконечно запрашивать информацию от самого себя, занимая все доступные соединения. Достаточно открыть telnet на тот порт, на который у вас настроен proxy и написать запрос вида:

GET http://127.0.0.1:3128
Host: 127.0.0.1:3128

Причем атаку можно производить удаленно, в запросе для этого менять ничего не нужно. Популярный Squid на такую строчку реагирует менее бурно — просто возвращает «Access denied». Обидно, что SHS proxy после моего исследования можно выкидывать на помойку…

Впрочем, после двух месяцев молчания (о чем я сейчас буду ниже писать) автор все таки исправил большинство указанных мной уязвимостей в веб-сервере. Его можно понять — думаю, SHS он делает в свободное время, но, надеюсь, proxy он подлатает быстрее. Программа-то хорошая.

Быстренько разделаюсь с warez. :)
Итак, вышла новая версия PHP 4.0.5. Событие, не менее ожидаемое мной, чем выход PostgreSQL 7.1. Ссылки на «скачать» и список изменений можно найти на обычном своем месте — внизу страницы. Список внушительный и, лично для меня, значимый. Особенно меня порадовали дополнительные функции для работы с Large Object и багфиксы для Postgres.

Вышел новый (2.04) Small HTTP Server! Автор исправил большинство из указанных мной когда-то уязвимостей. Впрочем, баги с неоконченным «%» и exec присутствуют до сих пор, но, надеюсь, Макс исправит их в ближайшее время. Кроме того, в SSI наконец-то добавлена переменная QUERY_STRING, чему нельзя не порадоваться. Одно обидно — нигде не упомянуто, что баги были найдены мной. Людская неблагодарность. :))

Miranda. Скриншот

Из других новостей — вышла финальная ( 0.1.0.0 ) версия альтернативного ICQ-клиента с открытым исходным кодом «Miranda» (на скриншоте). Клиент очень хорош, занимает очень мало (всего 3 мегабайта, сравните с ICQ) места в памяти, в новой версии имеет много настроек, умеет делать импорт контакт листа ICQ, принимать и передавать сообщения и файлы, работать через прокси, есть подключаемые плагины. В общем посмотрите — возможно это именно то, что вы так долго искали. Из интересных особенностей — под W2K Miranda умеет становиться полупрозрачной, причем степень прозрачности настраивается из меню.

Я, кажется, догадался почему автор проекта FreeInet так легко отдавал ворованные пароли. Принцип толпы, перебегающей дорогу на красный свет — «всех не задавит». Т. е. «чем больше народу пользуется этим паролем, тем меньше вероятность, что отвечать придется именно мне». ИМХО, очень простое и разумное объяснение.

А для тех, кто все еще хочет искусить судьбу — внизу скриптик однодневной давности. Возможно, еще не прикрыли.

На сегодня хватит... :)) Пойду отдыхать, остальное допишу завтра. Всех, еще раз, с праздниками.