LINUX.ORG.RU

Прошу потеснить. Можно ломать/хакать и прочие прелести.

 , , ,


0

3

Вообщем проверить на устойчивость cgi скрипт. Как тест утилита ping которой вы передаёте адрес или имя хоста например

http://elilabs.org/cgi-bin/ping.c?=linux.org.ru

или

http://elilabs.org/cgi-bin/ping.c?=88.88.88.88

Я просто не уверен верно ли я отфильтровываю имя хоста может меня поломать можно и сделать rm на всё нафиг? Я подстраховался и клонировал vps так что мне похер на взломы :)

Код не покажу, он на скорую руку и на Си. Скажу лишь что тупо фильтрую всё кроме a-z и '.' , может этого недостаточно и можно взломать ?

Ну и ping -c 5 beastie ; ping -c 5 Eddy_Em

Не бейте за каст :)

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Передал 3199 букв A в качестве имени хоста, страничка виснет (уж не сегфолтится ли твоя сишная прога?). Я не знаю, как там все реализовано, но если параметр помещается в буфер фиксированного размера, то теоретически возможна определенная атака. Правда, без знания кода все равно ее провести затруднительно.

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

А не, нельзя зарос ограничен длинной и обрезает, буфера мне хватает.

Dron ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Пофиксил.

Но пока можно ещё замочить большой строкой, по путному поправлю позже. Я ссу что можно как то произвольный код выполнить, ведь вводимый адрес попадает в shell строку. Хотя вроде не должно ничего пролезть.

Dron ★★★★★
() автор топика
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от beastie

Спасибо большое, фигеть не встать.

Dron ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Потому что я дурак и проверял ] два раза :) поправил. Спасибо. Всё веселей и веселей ))

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

Пацаны, расходимся, меня уже ломанули.

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

Всем большое спасибо, всем, и той куче несметной которая всё делала молчком.

Dron ★★★★★
() автор топика
Ответ на: комментарий от post-factum

:)), мне это понравилось, прям адреналин, надо почаще подобное устраивать. Только подготавливаться теперь буду основательней. Если что я тебя кастану. ) Надо ещё премию организовать за удачный взлом/выявление багов.

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

А я всю драму проспал...

Ты нафига так делал-то? Проверять же тело POST/GET надо, а не отправлять на исполнение сразу!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Ты нафига так делал-то? Проверять же тело POST/GET надо, а не отправлять на исполнение сразу!

Ну дык я и проверял, думал просто что достаточно запретить символы опасные и всё. Как оказалось это не спасает, я тут ещё задумался, а есть вообще безопасный способ так делать, можно анально огороженного юзера делать с возможность запуска 1 утилиты, но это громоздко. Взять сложный пример допустим grep, как к нему давать доступ безопасно?

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

Скажу лишь что тупо фильтрую всё кроме a-z и '.'

ping.c?=%0Als

И каким боком пролез % или код 0x0A? Может ты регексп по точке "." запускал?

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

Как оказалось это не спасает

Как ping мог запустить ls? Ты как лох запускал /bin/sh и ему передавал ping hostname и не фильтровал как видно входные символы.

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

В том и странность % запретил явно.

Может ты регексп по точке "." запускал?

Никаких грепов, всё на си кроме вызова ping из popen.

Надо мне побольше про gci почитать, так как чувствую пока я ещё маловато знаю/понимаю.

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

Никаких грепов, всё на си кроме вызова ping из popen.

regexp != grep

пока я ещё маловато знаю/понимаю.

это точно.

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

Не, нафиг, до следующего раунда. :)

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

CGI на баше — априори штука небезопасная. А в сишных ты должен как минимум точно контролировать буфер, тщательно его проверять и ни в коем случае не вызывать всякую хрень вроде system!

Eddy_Em ☆☆☆☆☆
()

404

Всё веселье пропустил (

ogiel
()
Ответ на: комментарий от emulek
#!/bin/sh
echo -e "Content-type: text/html\n\n<html>"
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=koi8-r\">"
echo "<body>"
echo "<h1>Пингуйня:</h1><pre>"
ping -c1 $QUERY_STRING
echo "</pre></body></html>"

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

да, у ТСа вроде была такая тема. Он там про popen спрашивал. Я не думал, что он настолько ***, что это в cgi запихал...

emulek
()

Да, как говорил Artem Chuprina,

Не пишите, дети, на C

:-)

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