LINUX.ORG.RU

Безопасна ли такая заглушка на C


0

1

Доброго времени суток.

Сабж:

fuckoff.c

#include <stdio.h>

int main(int argc, char * argv []) {
        printf("fuck off\n");
}

Запускается через openbsd-inetd

60123   stream tcp nowait nobody:nogroup /usr/local/bin/fuckoff

Предыстория: повесил ssh на порт 8080, после этого задостали ущербные на голову китайцы, пытающиеся использовать его как анонимный прокси. ssh перевесил на другой порт, а на старом хочу оставить протоколирование в syslog (10/s) и эту заглушку

★★★★★
Ответ на: комментарий от nnz

Это пять :D Именно так и поступлю

А по возможным дырам в сабже что можешь сказать?

ЗЫ. естественно, забыл return 0; , уже исправил

router ★★★★★
() автор топика

>пытающиеся использовать его как анонимный прокси.

Дак, давайте им ответ в правильном http. И зачем вам протоколировать эти обращения?

mky ★★★★★
()
Ответ на: комментарий от mky

Ну мало ли :)

Я раньше думал, что printf(str) вполне корректно, а потом оказалось, что если это переменная, то запросто можно прочитать стек

router ★★★★★
() автор топика
Ответ на: комментарий от router

>А по возможным дырам в сабже что можешь сказать?

Я, все-таки, не программер (скрипты для сисадминских нужд на перле и моделирование электроакустики на матлабе не в счет).
Но на первый взгляд никаких косяков не видно. Слишком примитивно, чтобы быть уязвимым.

Хотя, вроде бы можно и так:
8080 stream tcp nowait nobody:nogroup /bin/echo /bin/echo «Fuck off!»

nnz ★★★★
()
Ответ на: комментарий от mky

Чтобы давать ответ в правильном http, нужно сначала прочитать запрос. Много чести для кулхацкеров.

А протоколирование... У меня паранойя ;)

PS.
Едет [поскрипан нацпол] водитель, видит - лежит дохлая кошка. Останавливается, кладёт в багажник - «Пригггодиттся». Через неделю там же останавливается, выбрасывает - «Не приггодиллось»

router ★★★★★
() автор топика
Ответ на: комментарий от router

Не знаю, относительно «запросто» это должна быть не просто переменная, а переменная, изменяемая действиями вне программы. А так, в вашем программе, ИМХО, вместо printf() лучше puts(), или write().

mky ★★★★★
()
Ответ на: комментарий от router

>Чтобы давать ответ в правильном http, нужно сначала прочитать запрос

Зачем?
printf(«HTTP/1.1 200 OK\nContent-Type: text/plain\nConnection: close\n\nFuck off!\n»);
и всего делов :)

nnz ★★★★
()
Ответ на: комментарий от router

Да вроде не обязательно. Можно пропробовать дать заголовок:

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>...
Ну и тут многа букв

mky ★★★★★
()
Ответ на: комментарий от nnz

Не, ради такого не надо. Именно, засунуть правильный html, крупная, красная надпись, может даже мигающая. Или даже с жабоскриптом, где то в инете была страница, выкидывающая менюшки и не дающая себя закрыть.

mky ★★★★★
()
Ответ на: комментарий от nnz

>8080 stream tcp nowait nobody:nogroup /bin/echo /bin/echo «Fuck off!»

Почему-то считал, что echo - внутренняя функция шелло. Да, так намного лучше

router ★★★★★
() автор топика
Ответ на: комментарий от router

>Почему-то считал, что echo - внутренняя функция шелло

Ага, в большинстве шеллов есть такая функция.
Но и бинарник такой во всех нииксах присутствует. Именно на такие случаи.

nnz ★★★★
()

Всем спасибо, на 8080 порту буду делать tarpit, сабж отправится на свалку велосипедов

router ★★★★★
() автор топика
Ответ на: комментарий от router

Кстати, в printf можно не только стек читать, но и ещё изменять его. Очень полезная функция.

hunt
()
Ответ на: комментарий от router

>Всем спасибо, на 8080 порту буду делать tarpit, сабж отправится на свалку велосипедов

это конечно правильно, но я-бы в сабже всё-же написал int main(void) на всякий случай.

drBatty ★★
()

Патч закоммитил в апстрим? :)

Hokum ☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.