Admin

Original poster
Administrator
Сообщения
916
Реакции
753
Посетить сайт
Здесь должно быть вступление, в котором я кратко завлекаю вас рассказом о том, как мог заработать миллионы долларей на краже сс, однако решил просто получить свой скромный шекель за анализ кода и не более того.

Но этого вступления здесь не будет.
На анализ был дан код магазина по продаже сс. Нужно было выяснить, каким путем были уведены из шопа деньги.
007.png
После анализа, оказалось, что способов украсть деньги достаточно много. И описывать каждый из них - дело долгое и неблагодарное. Поэтому я сделал "кратенький" отчет в достаточно упрощенной форме, который вы и имеете удовольствие читать в данный момент.

Forced Browsing & Leak info
После того, как я развернул локальную копию сайта, я собрал структуру файлов/папок и просканировал ее с помощью Burp Intruder. И практически сразу - наиудивительнейшие открытия.

При простом обращении к файлам:
  • ./core/1.php
  • ./core/3.php
Мы можем увидеть следующее:
008.png
Не так важно раскрытие пути, это практически ничего не дает (SQL-инъекций и LFI нету). На скриншоте замазано значение key из массива. Забегая вперед, для работы с сервисом, который предоставляет карты для продажи, нужно знать только API-ключ и url куда отправлять запросы. И вот key - это то самое значение API-ключа. Т.е. для человека, который знает, как делать шопы привязанные к конкретному API, достаточно знать только этот ключ, для того, чтобы слить баланс шопа.

Файл ./core/4.php позволяет делать поиск доступных городов по штатам:
010 (1).png
Файлы:
  • ./core/chat/show.php
  • ./core/chat/messages.txt
Отображают содержимое чата. Т.е. можно читать, о чем пишут в чатике, не заходя в магазин и даже не регистрируясь.

Активная XSS и прочие веселья в чате.

Взглянем на содержимое файла ./core/chat/send.php:
PHP:
<?php
require 'config.php'; 

$sender = trim($_POST['sender']);
$text = trim($_POST['message']);

$date = date("H:i:s d.m.Y", time());

if($sender == 'admin'){$admin_sender = 'style="color:red";';}
$message = '<br><span style="color: #ccc">'.$date.'</span> <b '.$admin_sender.'>'.$sender.':</b> '.$text; 
$file = fopen($filename, 'a');
fwrite($file, $message);
fclose($file);
Мы видим, что во первых - не нужно даже быть зарегистрированным, чтобы отправить сообщение. А во вторых - нет проверки, что именно тот пользователь что указан в sender и отправил сообщение.

Достаточно отправить post-запрос с параметрами sender и message:
012.png
И мы можем увидеть в чате:
011.png
Но нам этого недостаточно. Попробуем отправить html-код.
В качестве параметров указываем:
HTML:
sender=kroba&message=hello+world!<script>alert(document.cookie)%3b</script>
Заходим в магазин:
013.png
Имеем активную XSS, которая дает нам кучу возможностей. Например, можно повесить простенький веб-сниффер. А так как по умолчанию сессионные куки не имеют флага httponly, то мы можем украсть куки любого посетителя магазина, в том числе и админа. Подставляем куки себе и заходим.

Брутфорс и подбор логинов пользователей
Немного отвлечемся и обратим наше внимание на форму логина:
014.png
Сразу можем отметить, что нет капчи - можно брутить сколько угодно. Попробуем зайти под заведомо несуществующим пользователем abcdef1234567890:
015.png
А теперь под пользователем admin:
016.png
Как видите, перед тем как брутфорсить, мы можем точно определить, зарегистрирован пользователь или нет. Более того, обращаясь к файлу ./core/chat/show.php можно собрать логины пользователей, не привлекая внимания.

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

Активная XSS при регистрации пользователя
Попробуем зарегистрировать пользователя:
017.png
В качестве логина указываем следующую строку:
Код:
hacker" class="btn btn-warning"><script>alert(document.cookie)</script><input type="hidden" kek="
018.png
Что важно - верстка не бьется, и если не alert(), то понять, что что-то произошло довольно сложно. С данной XSS можно угнать куки админа, не тратя время на обычных пользователей.

Тикеты с XSS
Создаем тикет:
019.png
Админ открывает тикет, чтобы прочитать и...
020.png
Опять таки, угоняем куки, подставляем себе и т.д.

Делаем свой аккаунт админом
Используя украденные куки админа, заходим в шоп, выбираем пункт "пользователи", выбираем заранее зарегистрированный нами аккаунт и меняем баланс на тот, который нас более устраивает:
021.png
Великолепно. Но это совсем не всё, на что мы можем влиять. Если посмотрим в html-код страницы, то можем увидеть:
022.png
Как мы видим, часть функционала убрали в комментарии. Но нам ничто не мешает просто отредактировать html с помощью firebug или другого подобного инструмента. Вдобавок, мы допишем еще один пункт в меню:
023.png
Жмем OK, заходим под пользователем l33t_hacker:
24.png
Мы не только добавили денег на баланс, но и расширили свои полномочия. Теперь мы можем красть деньги не привлекая внимания:

  • находим пользователей с большим балансом
  • запоминаем баланс
  • удаляем пользователя
  • регистрируемся с таким же ником
  • ставим кол-во денег, как у прошлого пользователя
И никаких подозрений - сколько занесли пользователи, столько мы и тратим. К тому же, мы можем свободно редактировать любые статьи в магазине. И можем добавить еще парочку активных xss, так сказать впрок.

Ошибка в логике: покупаем сс по своей цене
Допустим, админ редко заходит в магазин, везде пользуется noscript или поставил флаг httponly у сессионных cookie. Выходит, что у нас нет возможности стырить его куки, а вот получить пачку свежих сс и при этом заплатить как можно меньше - очень хочется. Что же делать?

Алгоритм действий простой.

Включаем burp suite. Добавляем в корзину карту, которую хотим купить. Сохраняем http-запрос добавляющий карту:
025.png
Теперь переходим в корзину и удаляем карту из корзины. Повторяем запрос, но меняем последнее значение:
026.png
Обновляем страницу с корзиной:
027.png
Такая цена нас уже устраивает. Но всегда хочется еще чего-то большего. Вместо "0.0001" поставим "-1000000":
028.png
Еще лучше, да и после покупки в плюсе остаемся!

Ошибка в логике: баланс * кол-во сессий = профит
Даже если закрыть уязвимость, связанную с изменением цены, остается возможность покупать карты, загоняя баланс в минус. Взглянем на код скрипта ./components/com_shop/shop.php, а именно, на функцию buy():
Код:
function buy(){
    if(count($_SESSION['shop']['product']) >= 1){
          
          if($_SESSION['shop']['total_sum'] > $_SESSION['user_info']['balance']){
            header("Location: /");
            exit;
        }
        //////////////////
        // пропускаем
        //////////////////
        $sql  = 'UPDATE `'.DB_PREFIX.'users` SET `balance` = `balance` - '.$_SESSION['shop']['total_sum'].' WHERE `id` = ?';           
        $user_balance = DB::prepare($sql)->execute([$_SESSION['user_info']['id']]);
        //////////////////
        // пропускаем
        //////////////////
 
      }
}
Нам разрешают покупать, если сумма покупки меньше, чем баланс пользователя. При этом и сумма покупки и баланс хранятся в сессии. Далее, после покупки баланс в БД меняет значение. Но (!) непосредственно перед покупкой нет проверки на то, сколько в данный момент в самой БД у пользователя денег.

Поэтому возможен такой трюк:

  1. Открываем 5 разных браузеров
  2. В каждом браузере заходим в один и тот же аккаунт, на котором лежит, к примеру, 100 баксов.
  3. В каждом браузере добавляем в корзину разных карт на 100$.
  4. В каждом браузере переходим на страницу с оплатой.
  5. В каждом браузере нажимаем "Buy".
  6. Получаем карт на 500$ и аккаунт, загнанный в -400$
  7. Регаем новый аккаунт, добавляем 100 баксов на счет.
  8. Повторяем пункты 1-7.
При этом кол-во браузеров может быть не 5, а 50. Или 500.

Автор krober
 
Название темы
Автор Заголовок Раздел Ответы Дата
Q Интересно Ломаем cookie с помощью Termux Уязвимости и взлом 0
S Ломаем инсту Уязвимости и взлом 17
T Полезная утилита для крякеров | Ломаем софты на раз-два Полезные статьи 0
Y Ломаем базы данных Полезные статьи 0
N MIX 4 ML TINDER FACEBOOK TWITTER INSTAGRAM GAMES SHOP BTC MAIL PASS Раздача email 0
N MIX COOKIES WINDOWS INSTAGRAM 360 FACEBOOK TWITTER LINKEDIN SHOP Раздача email 0
Tera_shop Продам Telegram аккаунты для рассылки, инвайта (Session + Json, Tdata) Tear-shop.ru Купить аккаунты на сайте: https://tear-shop.ru/ Tear-shop - Магазин Аккаунты/Админки/Документы 1
N Zabugor LOGS + COOKIES FACEBOOK TWITTER INSTAGRAM TINDER SHOP Раздача email 0
N MIX INSTAGRAM GAMES LINKEDIN BTC FACEBOOK SHOP VALID BASE Раздача email 0
Olimp-shop КУПИТЬ АККАУНТЫ ВК 14-17 | 18+/21+ лет 100+ друзей ✅ ТЕЛЕГРАМ +7 ✅АВИТО ВЕРИФ ✅ FB ✅ IG ✅ VPN ✅ PROXY RU ОТ 16Р ⚡️ OLIMP-SHOP.NET ⚡️ Аккаунты/Админки/Документы 1
N Zabugor Europa USA PAYPAL BASES GAMES FB ADS INSTAGRAM TWITTER SHOP 2ML Раздача email 0
N MIX MIXED 2 ML GAMES SHOP FB ADS ETC Раздача email 0
N MIX 2ML BASE SHOP FACEBOOK ADS TAXI ACQUAINTANCES TWITTER TWITCH TIKTOK NETFLIX INSTAGRAM Раздача email 0
N Zabugor 900K MIXED NETFLIX GAMES SHOP BTC CASINO ACQUAINTANCES Раздача email 0
N Zabugor COMBO FRESH №1✔️ 1ML BASE GAMES SHOP FACEBOOK acquaintance NETFLIX Раздача email 0
N Zabugor COMBO FRESH №1✔️ EDU FACEBOOK GAMES SHOP TAXI ACQUAINTANCES Раздача email 0
N Zabugor COMBO FRESH №1✔️ USA 1ML PSN LINKEDIN SHOP TAXI AMAZON NETFLIX TWITCH INSTAGRAM NASE Раздача email 0
N Zabugor COMBO FRESH №1✔️ 2 ML USA BASE FACEBOOK SHOP TWITTER TAXI Раздача email 0
N Game COMBO MAIL PASS FRESH №1✔️ USA MAIL PASS 150K FACEBOOK PAS GAMES SHOP PSN 100 warrant Раздача email 0
N Zabugor COMBO MAIL PASS FRESH №1✔️ 1M Mixed Crypto FACEBOOK ADS GAMES BTC PSN SHOP Раздача email 0
N Zabugor 1.6M FACEBOOK GAMES SHOP NETFLIX BASE TELEGRAM Emails_1 Раздача email 0
N MIX 1 ML FACEBOOK ADS CODE 8 SHOP BASE MIX Раздача email 0
N MIX 1.7M MIXED GAMES FACEBOOK SHOP INSTAGRAM TWITTER BASE Раздача email 1
A Alice in The Land of Malware | SHOP SCAM (Сайт/Бот авто-продаж Telegram) Корзина 0
iProxyShop iProxy.shop | Mobile LTE 4G/5G Proxies | Real Mobile Proxy | Socks | Http | Дедики/VPN/соксы/ssh 2
P PLENTIFYLEZ USA FULLZ SHOP GRAND OPENING ~FIRST 25 FREE~ ~ SSN/DL FRONT SCAN ETC Карты/CC/Банки/Enroll 1
Denik Zabugor 36k shop Раздача email 0
O Закрыто Stash-Shop Магазин аккаунтов / Бот авто-продаж в телеграм / Textnow / Telegram / Google voice / Full info / Самореги БА Корзина 3
Olimp-shop Продам OLIMP-SHOP.NET ▶ МОБИЛЬНЫЕ ПРОКСИ 4G/LTE ▶ Россия ▶ Украина ✅ Бесплатный Тест ✅ Дедики/VPN/соксы/ssh 48
D Продам Doc-shop.ws - Accounts shop (100+ shops & more services) Карты/CC/Банки/Enroll 1
W Закрыто WallStreet Shop - аккаунты киносервисов, VPN, Netflix, Pornhub Premium, Litres, MyBook, WOT, Origin Корзина 1
S SuperProxy.shop: мобильные операторские прокси US/EU и мир Дедики/VPN/соксы/ssh 3
X Продам xded.ru Автоматический сервис! Продажа дедиков!shop dedicated servers! дедики, rdp \ НАБИРАЕМ СЕЛЛЕРОВ! Дедики/VPN/соксы/ssh 2
Denik База shop[российские магазины]_слив Другое 2
АнАлЬнАя ЧуПаКаБрА Zabugor USA 1.5kk shop dump email:pass Раздача email 0
N Закрыто N1NJUTSU SHOP | Аккаунты, Кошельки и т.д. Корзина 0
АнАлЬнАя ЧуПаКаБрА Shop аукцион USA project save|cvv,paypal [P.K] Проекты Private Keeper 0
С Закрыто Account Shop - ivi/Filmix/windscribe/Avito (Самые низкие цены) Корзина 0
АнАлЬнАя ЧуПаКаБрА Zabugor USA 60k USA SHOP Раздача email 0
АнАлЬнАя ЧуПаКаБрА Zabugor dump shop tw Раздача email 0
K Магазин Shop Kerri Все что не подошло по разделу 9
АнАлЬнАя ЧуПаКаБрА Zabugor shop zatochka Раздача email 0
A Продам Qiwi-shop - qiwi кошельки, яндекс деньги, идентификации и прочие услуги Все что не подошло по разделу 0
A Закрыто >Shop-ack.ru - Аккаунты Vk.com, Автореги, группы ВК, Купоны Корзина 0
S CC Shop "SUNRICE" Кардинг предложения 0
АнАлЬнАя ЧуПаКаБрА Zabugor 60k Usa shop Раздача email 0
АнАлЬнАя ЧуПаКаБрА INLINE Shop шипает по всему миру Проекты Private Keeper 1
C Закрыто Магазин аккаунтов Shop-Cash50 Корзина 2
maluw3250 MYR [30k] Myr shop Раздача email 0
B Проверено AUTOMATIC SHOP №1 Финансы - биллинги, банки, кошельки, логи 194

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