Статья 2 часть. Находим API; Swagger; OpenAPI endpoints и точки эксплуатации.[PART: 1]

Admin

Администратор

2 часть. Находим API; Swagger; OpenAPI endpoints и точки эксплуатации.[PART: 1]​

Отсортировав их получается список целей которые теперь нас интересуют с т.з. получения внутренней информации или маппинга API.

Поскольку часто swagger и openapi доки скрыты за логином мы будем искать подсказки где находится то что нам надо.
Содержание
  • Список кандидатов
  • TLS реверс
  • Апгрейд словаря
  • Парсинг значений ендпоинт директорий
  • DevTools и поиск apibase
  • Анализ данных для эксплуатации
Список кандидатов
Предыдущая статья содержала в конце целевой список url кандидатов.
В этой хочется расширить список ендпоинтов и потому будем добавлять вариации.

Проявляем изобретательность и копаем глубже.
Сначала зададим для команд наш файл с уже найдеными wayback директориям-
Bash:
FILE=/home/kali/candidates/ffuf_hits.txt
Теперь проверяем Content-Type-
1768855723045

Bash:
while read -r u; do

echo -n "$u , "

curl -skI -L --max-redirs 3 -m 8 "$u" | awk 'BEGIN{sc="000";ct="";} /HTTP/{if($2) sc=$2} /Content-Type/ {ct=$2} END{print sc" , "ct}'

done < "$FILE" > /home/kali/report.txt

Полученный репорт в текстовом виде позволит отделить кандидатов с application/json | yaml.
Продолжим работу с этим списком.
TLS реверс
Поскольку ответы пришли ‘000’ то стоит проверить в целом валидность найденного енжпоинта swagger / openapi-
1768855745707


Bash:
curl -vkI https://hub.param.com.tr/api/openapi.json

Это покажет подробный TLS/HTTP обмен запросами без проверки серта.

Сохраняем swaggerui.html для поиска оставленных линков или хедеров-
1768855768942

Bash:
curl -k -sL 'https://hub.param.com.tr/api/swagger-ui' -o /home/kali/swaggerui.html
Можно попробовать повытягивать url по ключевым инетерсующим директорям и файлам
Bash:
egrep -o 'https?://[^"'"'"' >]*?(openapi|swagger|api-docs|openapi.json|swagger.json)[^"'"'"' >]*' /home/kali/swaggerui.html | sort -u
Bash:
grep -E '"(get|post|put|delete)"' swaggerui.html | head -n 20
Bash:
grep -oP '{[^}]*"openapi"[^}]*}' swaggerui.html
Апгрейд словаря
Теперь стоит на основании уже имеющегося списка сделать шаг в сторону добавления параметров для фаззинга в словарь apiwl.txt из первой части-
1768855818844

Bash:
cat <<'EOF' > /home/kali/apiwl2.txt

openapi.json

swagger.json

openapi.yaml

swagger.yaml

api-docs

v2/api-docs

swagger-ui

docs

redoc

openapi/v1.json

r.php/api/openapi.json

r.php/api-docs

EOF

Теперь советую создать файл для списка доп. Ендпоинтов.
Bash:
mkdir -p /home/kali/ffufout2

Будет много результатов и лучше хранить их в одном месте.

Используем fuff для фаззинга с дополненным словарем и используем список субдоменов цели-
1768855855989

Bash:
while IFS= read -r sub; do

[ -z "$sub" ] && continue

echo "FFUF -> $sub"

/usr/bin/ffuf -u "https://$sub/FUZZ" -w /home/kali/apiwl2.txt -mc 200,301,302 -t 20 \

-o "/home/kali/ffuf_out/${sub}_specs.json" -of json || true

done < /home/kali/targsub.txt

По резульатам фаззинга выделились 3 субдомена
akbank.param.com.tr;
hub.param.com.tr;
isube.param.com.tr;
Особенно приглянулся домен hub.param.com.tr т.к. именно он ответил статусом ‘200’ с интересующими нас параметрами директорий и файлов-

1768855888032

JSON:
openapi/v1.json         [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 493ms]

swagger.yaml [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 457ms]

swagger.json [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 475ms]

api-docs [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 474ms]

openapi.yaml [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 485ms]

openapi.json [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 483ms]

docs [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 445ms]

swagger-ui [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 388ms]

v2/api-docs             [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 452ms]

redoc [Status: 200, Size: 33955, Words: 4214, Lines: 457, Duration: 484ms]

Результаты сохранились в /ffuf_out.
Парсинг ендпоинт директорий
Используем подобный скрипт-
1768855921667

Bash:
mkdir -p /home/kali/candidates2

out_raw=/home/kali/candidates2/ffufraw2.txt

out_final=/home/kali/candidates2/ffuftargs2.txt

rm -f "$out_raw" "$out_final"

find /home/kali/ffuf_out /home/kali/ffufout2 -type f -name '*.json' -size +0 -print0 2>/dev/null \

| xargs -0 -n1 -I{} bash -lc '

    echo "PROCESSING: {}"

/usr/bin/jq -r ".results[]?.url" "{}" 2>/tmp/jq_err.$$ >> "'"$out_raw"'" || { echo "jq error on {}: $(head -n 5 /tmp/jq_err.$$)"; }

  '
if [ -f "$out_raw" ]; then

sort -u "$out_raw" > "$out_final"

echo "WROTE $out_final (lines: $(wc -l < "$out_final"))"

echo "SAMPLE:"

head -n 30 "$out_final"

else

echo "No raw hits file created — there were no readable .json files under /home/kali/ffuf_out or /home/kali/ffufout2"

fi

Что тут вообще происходит
  • Мы создаем директорию для нового списка кандидатов для дедупликации
  • Парсим все .json которые имеют значения внутри
  • Экспортируем urls через jq
  • Сохраняет raw xargs если таковые найдены
  • Выдает значение ошибки если не было найдено raw params
Получаем заголовки страниц наших ендпоинтов и проверяем активность&response code через httpx-
1768855943724

Bash:
~/go/bin/httpx -l /home/kali/candidates2/ffuftargs2.txt \  -status-code -content-type -title -no-color -silent \ -o /home/kali/candidates2/httpx_out.txt
Теперь получаем запрос content-type для поиска .yaml | .json а не .html ответов как в моем случае-
1768855970112

Bash:
while read -r u; do

echo -n "$u -> "

ctype=$(curl -k -s -o /dev/null -D - "$u" | grep -i '^content-type:')

echo "$ctype"

done < /home/kali/candidates2/ffuftargs2.txt
Причина только .html в моем случае в том что все они спрятаны за логином и требуют авторизации сессии для получения спецификации.

Теперь маленький лайвхак - сохраним swagger-ui страницу в формате .html-
1768856002950
 

Вложения

  • 1768855851063.png
    1768855851063.png
    165.2 КБ · Просмотры: 9
Похожие темы
Admin Статья 2 часть. Находим API; Swagger; OpenAPI endpoints и точки эксплуатации.[PART: 2] Уязвимости и взлом 0
Admin Статья К обфускации общих сборок .NET (часть 1) Вирусология 0
Admin Статья Часть 1; fuzzing для сбора скрытых endpoints и дальнейшей эксплуатации API Уязвимости и взлом 0
Admin Статья Как простой баг повреждения памяти ядра Linux приводит к полной компрометации системы(Часть 2) Уязвимости и взлом 0
Admin Статья Как простой баг повреждения памяти ядра Linux приводит к полной компрометации системы(Часть 1) Уязвимости и взлом 0
Admin Статья Софт для разработки эксплойтов 2 часть Вирусология 0
Admin Статья Софт для разработки эксплойтов 1 часть Вирусология 0
Support81 ФБР вернуло крипту SafeMoon. Но большая часть улетела… другому хакеру Новости в сети 0
Support81 Cetus Protocol обокрали на $223 млн, и теперь они умоляют хакера отдать хотя бы часть — за амнистию и чай Новости в сети 0
A Пишем свой RAT на Python > {Часть 1} Уязвимости и взлом 3
Admin Интересно Создание своего Shadowsocks + v2ray + tor [Часть 2] Анонимность и приватность 5
Admin Интересно Создание своего Shadowsocks и обфускация трафика [Часть 1] Анонимность и приватность 2
CMDfromBAT ВИРУСОЛОГИЯ ЧАСТЬ 4 - КАК ПАЛЯТ ВИРУСОПИСАТЕЛЕЙ Вирусология 5
CMDfromBAT ВИРУСОЛОГИЯ ЧАСТЬ 3 - БОТНЕТ Вирусология 4
CMDfromBAT ВИРУСОЛОГИЯ ЧАСТЬ 2 - 15 СПОСОБОВ РАСПРОСТРАНЕНИЯ ВИРУСА Вирусология 11
CMDfromBAT ВИРУСОЛОГИЯ ЧАСТЬ 1 - ПОЛНЫЙ FAQ ПО ТРОЯНАМ Вирусология 4
S1leNt ИСТОЧНИКИ добычи информации (Часть #1) Фишинг, мошенничество, СИ 0
Anorali Свой мини кейлоггер на python. Часть 3 Вирусология 2
Anorali Свой мини кейлоггер на python. Часть 2 Вирусология 0
L Интересно Хакер вернул большую часть украденных с Lendf.me криптоактивов Новости в сети 0
L Интересно Основная часть пользователей eToro инвестирует в XRP Новости в сети 0
2 Всё об уязвимостях GSM сетей или как вас прослушивают. Часть 1 Уязвимости и взлом 6
S очередная часть кешклоуд Раздачи и сливы 0
S очередная часть кешклоуд,снял с нее 295$ Раздачи и сливы 3
S кешклоуд очередная часть! Раздачи и сливы 4
S очередная часть кешклоуд Раздачи и сливы 1
S вторая часть кешклоуд Раздачи и сливы 3
B iOS Разработчик. Продвинутый курс v 2.0 Часть 1-2 (2020) Полезные статьи 0
A [Anspiker] 1800 курсов по заработку и не только за Январь. Часть 2. (2020) Способы заработка 0
A Аккаунты nordvpn бесплатно, большая часть этого не используется! Раздачи и сливы 3
A 1100 курсов по заработку и не только за Январь. Часть 1. (2020 Способы заработка 0
B Создатель игровой вселенной: геймдизайнер - Часть 1 и 2 Полезные статьи 0
A [anspiker] 1800 курсов по заработку и не только за декабрь. Часть 1. (2019) Способы заработка 2
A CTF. WEB. Задания с Root-Me, часть 19 Полезные статьи 0
A CTF. WEB. Задание с Root-Me часть 17. Полезные статьи 0
A CTF. WEB. Задания с Root-Me часть 16. Полезные статьи 0
M LPE. Практическая часть. Часть 4. Считывание файла через замену Is на nano и трансформацию PATH Полезные статьи 0
A LPE. Практика. Примеры и задания Часть 2. Полезные статьи 0
A LPE. Практическая часть. Чтение файла через изменение ls на nano и модификацию PATH. Полезные статьи 0
K Metasploit для юнцов [Часть 1] Уязвимости и взлом 1
G Python для хакера - Часть 4. Свой мини фреймворк. Программирование 1
G Python для хакера - Часть 3. Сбор информации об IP и пробиваем номер сотового. Программирование 1
G Python для хакера - Часть 2. Программирование 1
G Python для хакера - Часть 1. Начало. Программирование 5
T Знакомство с Frida - фреймворк позволяющий ломать Android приложения [ЧАСТЬ 1] Готовый софт 3
T Пошаговое создание своего Bootkit'a [ЧАСТЬ 2] Программирование 0
T Пошаговое создание своего Bootkit'a [ЧАСТЬ 1] Программирование 4
V Путёвка в Dark Web , часть 2 Полезные статьи 0
T OTUS - Реляционные СУБД для разработчиков и администраторов. Часть 1 Полезные статьи 0
T OTUS - Data Scientist. Часть 1 + 2 из 5 Полезные статьи 0

Название темы