Що таке Шел. Що таке SSH (Шелл) і навіщо він нам потрібний. Швидке видалення файлів з хостингу

18.05.2020 Огляди

У цьому посібнику пояснюється, що таке шелл-аккаунт, як отримати один,
та деякі основні команди. Якщо ви думаєте, що знайдете опис оболонки або трюки з експлоїтами, то ви помиляєтеся. Чекайте на інших
посібників. Перша частина є лише зв'язком питань з відповідями. Після того, як я зроблю невеликий оглядна тему, я розповім
вам де ви можете безкоштовно отримати доступ до
оболонки. Отже, чого ми
чекаємо?

Питання, які всі задають

Q: Що таке шелл-аккаунт?

A: Окей... я думаю, не треба пояснювати, що таке
акаунт, тому давайте
краще поговоримо про шеле (оболонку). Ви ймовірно користуєтеся Windows, отже вашою оболонкою є command.com та графічне середовище. Більш точно
буде сказати так: оболонка - підпрограма, яка перекладає та посилає
ваші команди ядра системи. Все це потрібно, оскільки ядро ​​не розуміє команди, які ви даєте. Наприклад, коли ви вводите "cd ..", ця команда буде перекладена оболонкою на мову низького рівняі передана ядру (інакше, для керування вашим CPU потрібно бути як мінімум божевільним).
Ви уявляєте собі, яким болючим заняттям було б використання
комп'ютера, не будь у вас оболонки? Щоб щось зробити вам довелося б
використовувати мову низького рівня, подібну до асемблера або того гірше
(двійковий код). Для виконання команди "cd .." вам потрібно було б написати:
push mem put mem blabla mem або величезний перелік виду 00101010. Ви і правда
думаєте, що люди погодилися б так працювати? Я так не думаю. Ладно..ладно.. Є багато людей, які програмують на асемблері, але я говорю про звичайних людей.

Q: Отже, ви кажете, що оболонка - це лише "річ", що перекладає
команди, що вводяться мною в код, зрозумілий процесору, подібно до того, чим займається command.com. Але навіщо мені тоді підключатися до віддаленого
command.com, якщо я маю свій власний на моїй машині.

A: Люди, які заводять собі шелл-акаунти, підключаються не до Windows машинам, а
до *nix машин. Якщо у вас немає linux або будь-якої іншої системи *nix на домашній машині, то ви могли б отримати шелл-аккаунт і почати грати з linux
так, ніби він стоїть на вашій тачці.

Q: Мій друг, *nix гуру, сказав мені, що багато з таких оболонок - відстій,
тому що вони мають обмежені можливості. Що це означає?

A: Існує два типи оболонок - обмежені та необмежені. Відмінності
між ними – за обмежені оболонки зазвичай платити не потрібно, вони лунають безкоштовно, але в таких оболонках ви можете виконати далеко не кожну
команду (наприклад, вони можуть заборонити вам користуватися nslookup та telnet
програмами). Зовсім інша ситуація з необмеженими оболонками,
ви можете виконати будь-яку команду, яку захочете, але цей тип оболонок - платний (іноді необмежені оболонки дають студентам університетів). Але навіть якщо у вас є лише обмежена оболонка, то не варто
засмучуватися - деякі з них і справді гарні.

Q: Отже, ви хочете сказати, що я можу отримати оболонку, нічого не заплативши за це?

A: Так, можете. Я вважаю найкращим місцем, де можна її отримати,
nether.net (ще один хост, який роздає безкоштовні шелли - це
freeshell.org), я розповім про цей процес пізніше. Іноді ISP також дають шелл-акаунти своїм користувачам, так що, можливо, у вас вже є доступ до шелла, просто ви про
це не знаєте. Зателефонуйте до служби технічної підтримкивашого ISP і спитайте про це.

Q: Я зателефонував своєму ISP з вимогою надати мені шелл-аккаунт, і вони
спитали навіщо він мені потрібний. Що я маю відповісти?

A: Просто скажіть, що вам подобається серфити Інтернет за допомогою Lynx, і
що ви хочете вивчити Unix. Це має спрацювати. Але якщо вони вас пошлють,
то просто сходіть та отримайте безкоштовну оболонку.

Q: Гей, у мене є оболонка, але як мені дізнатися хороша вона чи ні?

A: Я думаю, що однозначної відповіді на це питання не може бути, все
залежить від людини, яка її поставила. Особисто для мене гарною оболонкою є та, в якій я можу робити все
нижче перелічені речі.
-> Telnet (емулятор терміналу)
-> Nslookup (Дає вам інформацію про хост)
-> FTP (Протокол Передачі Файлів, коментарі зайві, так?)
-> Finger (Дає інформацію про конкретного користувача)
-> Traceroute (Те ж, що і tracerT.exe в Windows, але набагато краще)
-> Dig (ймовірно, багато оболонок не дозволяють використовувати це, але
не варто про це турбуватися)
-> Netstat (як і в windows, список всіх сокетів та їх статус)
-> GCC (з компілятором, круто для створення власних програм)
-> Gzip (утиліта для розпакування файлів)
-> Lynx ( Найкращий Браузерв світі)

Це аж ніяк не означає, що для вас оболонка з такими можливостями
буде гарною. Можливо для вас гарною оболонкою буде та, яка
дозволить вам лише використовувати telnet, як я вже говорив раніше - важко дати однозначну відповідь на це питання.
Але якщо ваш шелл-аккаунт не дозволяє вам використовувати telnet, FTP та
GCC, то вам потрібно отримати інший шелл-аккаунт.

Ну, я думаю, ви вже досить роздратовані, прочитавши купу дурних питань
і ще дурніших відповідей, тому дозвольте мені перейти до наступного
розділу. Давайте поговоримо трохи про різновиди шелл-акаунтів.

Швидкий Огляд Різновидів Шелл-Акаунтів

Тут представлені можливі типи шелл-акаунтів, одні ми називаємо
домашніми оболонками, інші "стандартними" оболонками. Давайте поговоримо
про "стандартні" оболонки.

Просто для загального розвитку

Домашні оболонки - це оболонки, створені системним оператором, який володіє
системою і вони просто працюють на його системі.
Як я вже сказав вище, є багато оболонок. Ви маєте:
-> shell: Bourne Shell
-> Bash: Bourne Again Shell
-> Cshell: C Shell
-> Tcsh: Technical C Shell
-> Ksh: Kourne Shell
І багато інших. (Я вказав тільки ці, бо тільки їх ви
Ви можете отримати на nether.net). Кожна оболонка має переваги та недоліки. Наприклад, Cshell дозволяє
вам вводити C команди так, ніби вони були звичайними командами, тобто
якщо вводите printf Hello, то результат цієї команди буде такий самий, як і у
команди echo в інших оболонках (для тих, хто не знайомий з мовою C, пояснюю,
printf відображає на екрані текст, який слідує за цією командою).
Я не зможу описати переваги та недоліки кожної оболонки, це вам доведеться з'ясувати самим. Просто отримайте одну з них на хостах, що надають
безкоштовний доступ до оболонки та починайте вивчення. Я лише можу вам порекомендувати Bash - це найкраща оболонка для користувачів-початківців, але якщо ви
хочете обзавестися потужнішою оболонкою, то отримаєте доступом до C оболонці.
Почніть з bash, вивчіть систему, навчитеся писати скрипти для bash, а потім
приступайте до використання інших оболонок. Поговоріть з вашими друзями,
запитайте які оболонки використовують вони, чим вони їм подобаються. Ну що, зрозуміли
ідею?;) Якщо у вас вже є одна оболонка, але ви не знаєте, що це за оболонка, то
просто введіть echo $shell і це, ймовірно, покаже тип використовуваної вами
оболонки. Так як це короткий огляд, то на цьому я закінчу розмову по цій
тему. Це повинно допомогти вам отримати реально крутий шелл-аккаунт.

Отримання Шелл-Акаунту На Nether.net

Отже, ви готові отримати свій перший шелл-аккаунт? Ну, звичайно, готові. Єдина річ, яку я не люблю в nether.net – це час офлайну, то
є сервер іноді буває недоступним. Якщо зможете підключитись, то можете далі не турбуватися, просто іноді на nether.net відвисає занадто
багато народу - він стає переповнений і йде в офлайн. Просто зачекайте якийсь час і знову підключайтеся.

Крок 1. (Підготовка вашої термінальної програми)

Відкрийте вашу telnet програму, ви можете знайти її в директорії
windows під ім'ям telnet.exe

Крок 2. (Підключення)

Тепер, ви вже мабуть встигли запустити свій Telnet-клієнт, якщо так, то
виберіть меню Підключити, потім там же Віддалена Система. З'явиться інше
віконце, що запитує у вас ім'я вузла, порт і тип терміналу. Введіть у ці
поля наступну інформацію:

Ім'я вузла: nether.net
Порт: Telnet (або 23 - це те саме)
Тип терміналу: vt100 (це значення має бути встановлене за
замовчуванням)

Зачекайте трохи та...

Крок 3. (Підключення)

Тепер ви побачите банер nether.net. Він повідомляє:

Kernel SunOS 5.6 Generic_105181-17 on a sun4d
Welcome to nether.net

New to the system? Login as newuser

Тепер, як вони сказали, введіть новийкористувач як логін. Програма,
що називається newuser запуститься, і допоможе вам у створенні
облікового запису.

Крок 4. (Зміна призначення клавіш)

Після всього цього лайна, програма newuser запропонує вам змінити функціональні клавішіпід свої потреби. Буде запитана клавіша видалення (^H)
та клавіша переривання (^C). У дужках клавіші, встановлені по
замовчуванням, але якщо ви хочете, то ви можете змінити їх на будь-які інші. ^H - це клавіша видалення (та, де намальований символ<-), и ^C - это комбинация
клавіш ctrl+c. Увага, не пишіть ^H або ^C, просто натискайте відповідні клавіші, і ці символи з'являться на екрані.

Крок 5. (Вибір Типу Терміналу)

Після того, як ви зміните призначення функціональних клавіш, вас попросять
ввести тип терміналу, ви можете вибрати? та програма виведе все
доступні типи терміналів, але ви повинні вибрати vt100 або просто натиснути
кнопку enter. Натискання кнопки enter означає, що ви вибрали "німий" термінал. Але це не проблема, тому що пізніше ви можете змінити його.

Крок 6. (Персональні Дані)

У вас будуть запрошені деякі речі, подібно до вашого повного імені, номеру
телефону, дати народження, статі, блаблабла, ну, я думаю, зрозуміло. Якщо ви
хочете, то ви можете на всі запитання ввести, наприклад, символ "." та натиснути
на кнопку enter. Ви також можете вводити несправжні дані, і я впевнений,
що так робить 98% користувачів nether.net. Наприкінці всіх питань вас
запитають: чи ви хочете приховати цю інформацію від інших користувачів. Просто дайте відповідь так чи ні, я рекомендую відповісти - так.

Крок 7. (Вибір Оболонки)

Тепер вам покажуть список доступних оболонок, просто виберіть одну з них,
як я вже говорив вище – якщо ви новачок, то вибирайте оболонку bash.

Крок 8. (Вибір Логіну)

Просто виберіть собі логін, максимальна довжина – 8 символів.

Крок 9. (Вибір Пароля)

Виберіть пароль, це буде запрошено двічі, щоб підтвердити
правильність введеного пароля. Пізніше ви зможете змінити
пароль, використовуючи команду passwd.

Крок 10. (Підтвердження зазначених даних)

На цей раз вашому погляду з'явиться щось на кшталт цього:
full name: Повне Ім'я
loginid: ваш логін password:<не показывается>
address: ваша адреса, яку ви вказали
telephone: номер телефону, який ви вказали
other e-mail addresses: ваша електронна адреса, яку ви вказали
occupation: те, що ви вказали
computers: те, що ви вказали
birthdate: вказана дата sex: вказана вами стать
interests: щось
how (did you find out about us): як ви дізналися про них
Privacy switch on/off
shell: ваш шелл-акаунт terminal: тип вашого терміналу
erase "^H" kill "^U" interrupt "^C"

Тип "help" for list things you can change.

Select thing to change or "done"?

Тепер, якщо ви погоджуєтесь з усіма введеними вами даними, натисніть кнопку
enter, або, якщо ви хочете щось змінити просто введіть те, що ви хочете
поміняти.

Крок 11. (Прикінцеві маніпуляції)

Тепер програма перевірить, чи не зареєстровано вже такий логін, ви повинні
будете побачити зв'язку змінюваних чисел, все нормально - не лякайтеся ... Тепер якщо користувач з таким логіном вже зареєстрований, то вам запропонують
вибрати інший, а якщо ні, то система зашифрує ваш пароль і вам доведеться
провести ще якийсь час у розгляданні змінних чисел. Після цього...

Крок 12. (Вітаю, у вас тепер є шелл-аккаунт)

Так, тепер у вас є шелл-аккаунт, тепер вам потрібно знову зайти в систему,
ввести свій новий логін, точний пароль, натиснути enter та добре провести
час. Запам'ятайте, що ви можете мати стільки оболонок, скільки захочете. Так, якщо
ви хочете, ви можете заново зареєструватися в системі як новий
користувач, тільки замість вибору bash оболонки вибрати оболонку Cshell або ще якусь,
або знову вибрати оболонку bash, якщо вам потрібно дві.

Команди

Природно, я не описуватиму всі команди, що існують в *nix системах,
якби я зробив це, то цей файл вийшов би справді величезним. Ес-
ви хочете отримати велику кількість інформації про команди, то просто
не забудьте заглянути в розділ Заключні Примітки.
Нижче наведено основні команди з описом їхніх функцій.

Синтаксис: команда [ключи] -> опис

man [команда] -> відображення інформації [команді], яку ви вказали.

cd [директорія] -> так само, як і в DOS ця команда змінює поточну директорію, з якою ви працюєте, якщо ви хочете повернутися до домашньої директорії, просто введіть cd без параметра [директорія].

ls [-al] -> ls виконує ту ж функцію, що і dir в DOS, вона виводить список кожного файлу в директорії, -al - це пара ключів, які ви можете
використовувати. Використання цієї пари ключів дозволяє виводити список
всіх файлів у директорії, включаючи приховані, також будуть відображені права
доступу до файлів, група та їх власники. Щоб дізнатися всі інші ключі
введіть man ls.

cat [файл] -> аналогічно команді type в DOS, вона відображає вміст
вказаного [файлу].

logout -> Вимикає вас від вашого шелл-акаунта.

who -> показує, хто в Наразізнаходиться у системі, виводить інформацію про цих користувачів. Існує безліч програм, які роблять
вас невидимими за командою who, але це тема іншого керівництва.

ps [-aux] -> ps показує всі запущені процеси, майже те саме, що й
ctrl+alt+del у windows (не перезавантаження, а список запущених програм),
але більш потужне, невідомо, як можна запустити програму, щоб вона
не відображалася за командою ps. Якщо ви запустите ps без ключів, то ви
побачите тільки ті процеси, якими володієте безпосередньо ви, якщо
ви використовуєте ключ -aux, то будуть показані всі процеси, запущені
на машині.

joe [файл] -> joe - це текстовий редактор, він редагує чи створює
вказаний [файл]. Іноді на хостах постачальників безкоштовних шеллів немає,
але має бути інший редактор, наприклад vi.

Цих команд вам має вистачити для початку. Також використовуйте команду man
для отримання великих та докладних описівкоманд, розглянутих нами.
Вдалого серфінгу!

Заключні зауваження

Тепер все, що вам потрібно, це побільше практикуватися і обзавестися хорошими
книгами, які містять опис команд. Однією з кращих книг є ця:

UNIX IN A NUTSHELL. Ви можете знайти її в розділі, присвяченому книгам на веб-сторінці BSRF
(http://blacksun.box.sk). Як на мене, це найкраща книгапо
нашій з вами темі, а так як вона абсолютно безкоштовна, то я настійно рекомендую вам придбати її.
Інша хороша річ- Це man. Наприклад, якщо ви хочете отримати деяку
інформацію про telnet, і про те, як його використовувати, просто введіть:

І ви отримаєте сторінку з підказкою по telnet. Якщо ви використовуєте оболонку
на сервері freeshell (freeshell.org) ви також можете використати команду
help без будь-яких опцій. Це викликає меню з опціями, які ви можете
вибрати. Та майте на увазі, що *nix чутливий до регістру, таким чином Man, man та
MaN або .profile і.Profile - це не те саме.

Програми

A) Чи можу я запустити IRC-ботів на безкоштовному шелл-акаунті?
Ні!! Якщо ви не збираєтеся провисати на шеллі 24 години на добу. Постачальники безкоштовних оболонокприбивають усі запущені вами процеси, одразу ж
як тільки ви відключитеся від системи.

B) А чи є ще якісь місця, де я можу отримати шелл-аккаунт?
Звичайно! Спробуйте

SSH або Shell - це штука на зразок Radmin-а, але для Linux. Оболонка Шелл дозволяє дистанційно керувати операційною системою.

Навіщо нам це потрібне?
- А потрібно нам це найчастіше для того, щоб швидко закачати велику кількість файлів на хостинг або видалити їх звідти.

Всі ми стикаємося із завданням, коли приходить час з локального сервера (я маю на увазі наприклад) перемістити наш проект на сервер хостинг-провайдера. І добре, якщо наш сайт невеликий. А якщо проект великий, вагою так-так у Мегабайт 50… Ось тут і починаються складнощі. Просто з'єднатися із сервером за допомогою якихось програмок, наприклад Total Commander, і закачувати файли копіюванням стає дуже нетривіальним завданням. Час на завантаження файлів по одному з постійним очікуванням відповіді віддаленого серверапіде сила-силенна. І, швидше за все, з першого разу скопіювати всі файли не вдасться - обов'язково вилізе якась помилка і з'єднання обірветься, а потім розбирайся, які файли потрапили на хостинг, а які ні.

Тут нам і приходить на допомогу той самий Шелл.

Беремо весь наш сайт на локальному хостингу та затискаємо його у zip-архів.
По-перше, з 50 мегабайт після стиснення залишиться близько 15.
По-друге, один файлик-архів закачати на хостинг набагато простіше, ніж весь проект. І при закачуванні одного файлу помилки, швидше за все, не виникнуть.

Тепер залишається розпакувати архів на сервері. Зробити це можна за допомогою програми PuTTY, яка поспілкувавшись з віддаленою хостинг-машиною за допомогою протоколу SSH розпакує завантажений архів з такою ж швидкістю, як ви розпаковуєте архіви на своєму комп'ютері.

Отже, встановлюйте PuTTY (завантажити дистрибутив PuTTY) і вперед.

Після встановлення та запуску програми ви побачите ось таке вікно:

Все, що вам потрібно – це ввести адресу хоста для спілкування із сервером за допомогою Шелл. Ця адреса з логіном та паролем вам мала надіслати хостинг-провайдер в електронному листі.

Для Майстерхосту, наприклад ця адреса має такий вигляд: XXXXXX.ssh.masterhost.ru
Де XXXXXX– це ваш персональний ідентифікатор клієнта Майстерхосту.

Вводимо адресу у полі Host Name (або IP address)та натискаємо кнопку Open.

Після цих нехитрих дій відбудеться з'єднання з віддаленою машиною за допомогою мережевого протоколу SSH і ви побачите запрошення для введення логіну і потім пароля, які вам також має надіслати по електронній поштіхостинг-провайдер.

При введенні пароля не лякайтеся наступної обставини:
ніякі зірочки або точки, як прийнято в Windows, не з'являтимуться. Це вам Linux, панове та дами. Курсор навіть не зрушити з місця. Але ви на це не звертайте уваги, а акуратно вводите свій пароль і після введення натискайте Enter. Зроблено цю штуку для того, щоб ніхто не зміг підглянути кількість символів у вашому паролі. Маячня?
- Можливо. Linux, він такий, конфіденційність понад усе.

Якщо ви не помилилися в паролі, ви побачите слово Welcome!

Після з'єднання ви знаходитесь у кореневій папці свого хостингового простору. Для того, щоб подивитися, які ще папки та файли присутні в кореневій директорії, скористайтеся командою ls.

Переміщайтеся до потрібної папки (до якої ви зберегли zip-архів із сайтом) командою cd.

Тобто. якщо у корені у вас лежить папка wwwі ви хочете в неї переміститися, то вводьте команду cd www/і натискаєте Enter.

Для того, щоб піднятися на рівень вгору: cd ..

Після переміщення до папки можете ще раз скористатися командою ls, щоб переглянути її вміст та переконатися в наявності zip-архіву з сайтом.

Коли ви перебуваєте в директорії, що містить архівний файл, набираєте команду unzip imya_faila.zip
Замість imya_faila.zipНеобхідно запровадити ім'я архіву з розширенням.

Архів починає весело розпаковуватись у ту ж директорію, де він і знаходився.

Швидке видалення файлів з хостингу

Шелл крім можливості швидко закачати файли на сервер, дає нам можливість їх швидко звідти і видалити. Робиться це дуже схожим на розпакування архіву.

Вам потрібно переміститися до директорії, що містить файли або каталоги, які ви бажаєте видалити (нагадаю, переміщуємося командою cd).

Після того, як ви знаходитесь в директорії, каталоги та файли всередині якої ви збираєтеся видалити, вводьте такі команди:

Для видалення файлукоманда rm imya_faila.xxx

Для видалення файлу без зайвих питань(а ви точно хочете видалити його чи ні?) команда rm – f imya_faila.xxx

Для видалення каталогу rm – r imya_kataloga/

У програмі PuTTY для спрощення введення імен файлів та каталогів реалізовано таку функцію:
Введіть початок імені файлу або каталогу та натисніть Tab, PuTTY автоматично підставить недостатню частину імені.

Для виходу із програми використовуйте команду exit.

Зазвичай під шеллом мають на увазі скрипт, який хакери завантажують на сервер і за його допомогою здійснюється подальше керування сервером. За запитом у пошуковій системі можна знайти безліч шеллів і їх популярність неминуче зростає. Все більше і більше хакерів-початківців прагнуть його закачати хоч куди-небудь. Ось фото найулюбленішого шелла хакерів WSO 2.4:

Шелл має авторизацію і не видно для пошукових систем. Після авторизації у шеллі ми потрапляємо безпосередньо до його інтерфейсу. Перед нами все, що може знадобитися хакеру для керування сервером. Спочатку відкривається сторінка з файлами (вкладка Files), у яку завантажений шелл.

Перша вкладка Security Info:

Тут є вся необхідна інформаціяпро сервер та його захист. Показується тип сервера Server software: Apache/2.2.25 (FreeBSD), встановлені модулісервера Loaded Apache modules:core, prefork, http_core, mod_so..., вимкнені функції модуля PHP-Disabled PHP Functions. Тут варто відзначити кілька важливих функцій: shell_exec, exec, system, passthru. Ці функції виконують команди на сервері від операційної системи, більшість хостингів вони відключені. Показує підтримку URL - CURL support: enabled, Види підтримуваних БД - Supported databases: MySql (5.5.33), MSSQL, PostgreSQL.

Також якщо доступний для читання файл користувачів сервера (Readable /etc/passwd: yes ), можна переглянути користувачів для подальшого підбору паролів. І показується файл хостів сервера (Hosts).

Друга вкладка Files:

Перше фото.

За допомогою файлового менеджераможна завантажити, змінити або видалити будь-який файл у будь-якій папці сервера, до якої буде доступ.

Третя вкладка Sape:

Ну про цю секретну вкладку я нічого розповідати не буду.

Четверта вкладка Console:

Тут якраз виконуються злі функції shell_exec,exec,system,passthru, які взаємодіють з операційною системою, є набір готових шаблонівзапитів до операційної системи: перегляд папок, пошук системних файлівперегляд відкритих портів і т.д.

Сама функція:

Function wsoEx($in) ( $out = ""; if (function_exists("exec")) ( @exec($in,$out); $out = @join("\n",$out); ) elseif (function_exists("passthru")) ( ob_start(); @passthru($in); $out = ob_get_clean(); ) elseif (function_exists("system")) ( ob_start(); @system($in); $ out = ob_get_clean(); ) elseif (function_exists("shell_exec")) ( $out = shell_exec($in); ) elseif (is_resource($f = @popen($in,"r"))) ( $out = ""; while(!@feof($f)) $out .= fread($f,1024); pclose($f); ) return $out; )

П'ята вкладка SQL:

Це повноцінний SQL менеджер, з його допомогою можна з'єднатися з БД на будь-якому сервері, маючи всі дані для підключення, функції перегляду БД, таблиць, структури, виконання довільних запитів, дампа БД і таблиць.

Шоста вкладка PHP:

Тут можна виконувати код на мовою PHPта переглядати результати виконання...

Сьома вкладка Safe Mode:

Ця вкладка використовується при увімкненому режимі Safe mode, є функції перегляду папок, копіювання файлів та читання файлів через cURL.

Восьма вкладка String Tools:

Ця вкладка відповідає за роботу з рядками та їх пошук у файлах. Є універсальний кодувальник-декодувальник тексту та пошуковик тексту та різними умовами пошуку. Також можна шукати файли у папках за назвою.

Шелл-код (англ. shellcode) - це частина коду, вбудованого в шкідливу програмуі дозволяє після інфікування цільової системи жертви отримати код командної оболонки, наприклад /bin/bash в UNIX-подібних ОС, command.com в чорноекранній MS-DOS і cmd.exe в сучасних операційні системи Microsoft Windows. Дуже часто shellcode використовується як корисне навантаження експлоїту.

Шелл-код

Навіщо це потрібно?

Як ви розумієте, мало просто інфікувати систему, проексплуатувати вразливість чи покласти якусь системну службу. Всі ці дії в багатьох випадках орієнтовані на отримання адмінського доступу до зараженої машини.

Так що шкідливість - це лише спосіб потрапити на машину і отримати shell, тобто управління. А це вже прямий шлях до зливу конфіденційної інформації, створення ботнет-мереж, що перетворюють цільову систему на зомбі, або просто виконання інших деструктивних функцій на зламаній машині.

Shellcode зазвичай впроваджується в пам'ять програми, що експлуатується, після чого на нього передається управління за допомогою використання програмних помилок, таких як переповнення стека або переповнення буфера в купі, або використання атак форматного рядка.

Управління шелл-коду передається перезаписом адреси повернення в стеку адресою впровадженого шелл-коду, перезаписом адрес функцій, що викликаються, або зміною обробників переривань. Результатом цього і буде виконання шелл-коду, який відкриває командний рядокдля використання зломщиком.

При експлуатації віддаленої вразливості (тобто експлоїту) шелл-код може відкривати на вразливому комп'ютері наперед заданий порт TCPдля подальшого віддаленого доступудо командної оболонки. Такий код називається прив'язуючим до порту (англ. port binding shellcode).

Якщо ж шелл-код підключається до порту атакуючого комп'ютера (з метою обходу або просочування через NAT), то такий код називається зворотною оболонкою (reverse shell shellcode).

Способи запуску шелл-коду на згадку

Існують два способи запуску шелл-коду в пам'ять на виконання:

  • Метод position-independent code (PIC, позиційно-незалежний код) - це код, який використовує жорстку прив'язку бінарного коду(тобто коду, який виконається у пам'яті) до певною адресоюабо даними. Шелл-код – це по суті PIC. Чому жорстка прив'язка така важлива? Шелл не може знати, в якому саме місці оперативної пам'ятібуде розташовуватися, оскільки під час виконання різних версійскомпрометовані програми або малварі вони можуть завантажити шелл-код в різні осередки пам'яті.
  • Метод Identifying Execution Location («Визнач своє місце виконання») полягає в тому, що шелл-код повинен розіменувати базовий покажчик при доступі до даних в позиційно незалежної структурі пам'яті. Додавання (ADD) або віднімання (Reduce) значень від базового покажчика дозволяє безпечно отримати доступ до даних, що входять до складу шелл-коду.

Зазвичай під шеллом мають на увазі скрипт, який хакери завантажують на сервер і з його допомогою здійснюється подальше керування сервером. За запитом у пошуковій системі можна знайти безліч шеллів і їх популярність неминуче зростає. Все більше і більше хакерів-початківців прагнуть його закачати хоч куди-небудь. На підтвердження моїх слів наведу скріншот з першого, хто попався в пошуковій видачісайту.

Як видно зі статистики завантажень одного файлу на одному сайті, бажання похуліганити є у багатьох.

У мене є інший шелл, який у мене залишився як трофей, після усунення наслідків злому на одному з серверів клієнта. Зараз я його завантажу в одну з папок на локальному серверіта на прикладі демо сайту покажу його можливості.

Щоб збільшити зображення, натисніть на нього.

Після авторизації у шеллі ми потрапляємо безпосередньо до його інтерфейсу. Перед нами все, що може знадобитися зломщику для керування сервером. Спочатку відкривається сторінка з файлами, в яку завантажений шелл. За допомогою файлового менеджера можна завантажити, змінити або видалити будь-який файл у будь-якій папці сервера, до якої буде доступ.

На одній із вкладок є можливість управління базами даних. На скріншоті видно обліковий записадміністратора сайту. А це означає, що можна отримати доступ до адміністраторської панелі сайту.

Існує функція перебору паролів для злому ftp. Видно, що підбирати пароль можна як для цього сервера, але й будь-якого іншого.

Основні функції, необхідні для управління сервером я показав. Шелли можуть бути різними і не обов'язково, що він виглядатиме саме так, але основний функціонал незмінний. Витяг з можливостей одного шеллу:

  • Перегляд, hexview, редагування, завантаження, завантаження файлів
  • Файловий менеджер (Копіювання, перейменування, переміщення, видалення, чмод, створення файлів та папок)
  • SQL менеджер (MySql, PostgreSql)
  • Виконання PHP коду
  • Пошук файлів, пошук тексту у файлах
  • Антипошуковик (перевіряється UserAgent, якщо пошуковий робот, повертається 404 помилка) // Шелли вміють маскувати себе

Ця стаття покликана відповісти на запитання Що таке шелл, що так часто виникає у власників сайтів. Тепер ви знаєте, як він виглядає і його можливості.

Якщо повторити все коротко, то шелл - це скрипт, який може керувати файлами та базами даних на сервері, а ви навіть не підозрюватимете про його існування.