За последние 24 часа нас посетили 20078 программистов и 1002 робота. Сейчас ищут 303 программиста ...

Меня взломали новым способом без SQL инъекции

Тема в разделе "PHP Free-Lance", создана пользователем crystaltrumpet, 22 дек 2018.

  1. crystaltrumpet

    crystaltrumpet Новичок

    С нами с:
    8 сен 2018
    Сообщения:
    23
    Симпатии:
    0
    Есть так называемый скрипт ферм.
    Подключил платежную систему Perfect Money для автоматических пополнений
    Имеется два файла:
    1 файл incert_perfect.php - здесь POSTы
    2 файл perfect_merchant.php - здесь обработчик и зачисление на счет пользователя

    Что сделал злоумышленник:
    1 Создал пользователя у меня на сайте назовем это сайт1.ru
    2 Создал сайт2.ru и туда поместил заполненные для его аккаунта POST и вот вопрос он использовал свой файл perfect_merchant.php или подавал запросы на мой обработчик
    3 Как только злоумышленник заходит на сайт2.ru - на мой сайт сайт1.ru именно аккаунту злоумышленника начисляется пополнение счета.

    Каким образом мой сайт сайт1.ru допускает подсоединение сторонних файлов я не знаю.
    Но по логам я вычислил сайт2 злоумышленника и он даже все оставил как есть и как только я прохожу на его сайт2 на моем сайте начинается пополнение аккаунту злоумышленника
    Я пока нашел временное решение изменив value POST на perfect_merchant99999.php
    <input type="hidden" name="STATUS_URL" value="<?=$config->SaitUrl; ?>/perfect_merchant99999.php">
    ну и соответственно поменяв имя файла на такое же
    Но это временное решение

    Вопрос:
    Можно ли каким то образом сделать так чтобы сайт1 сверялся какой и откуда поступает POST запрос? и perfect_merchant.php присоединен? и если это со сторонних сайтов то блокировал такие попытки?
    Ниже прикреплю два файла:
     

    Вложения:

    • account.zip
      Размер файла:
      4,3 КБ
      Просмотров:
      10
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    А что здесь нового? Это твоя вина. Если аккаунт пользователя имеет права на пополнения баланса какая разница откуда он это делает. Он может и без сайта пополнить. Чисто для анализа в php eсть HTTP_REFERER но его не сложно подделать. Пополнять должен или админ или скрипт который дергается терминалом соответственно при этом передавая какой то секретный ключ. Ну а изменения названия это смешно. html код посмотреть не сложно. Он же в открытом доступе. Логику меняй. Похожие сайты в основном делают для фишинга. Отправляешь кому то ссылку аля vk.album.19382.com и если человек не внимательный он может засветить там свой логин и пароль.
     
  3. crystaltrumpet

    crystaltrumpet Новичок

    С нами с:
    8 сен 2018
    Сообщения:
    23
    Симпатии:
    0
    Я в php новичок. Поэтому и разместил в разделе "новички". Могли бы помочь сделать секретный код для сверки POST и мерчанта? не бесплатно конечно
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @crystaltrumpet Я модерам маякнул. Они перенесут в раздел фриланса.
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    А вообще я перечитал сообщения и насколько я понял пользователи попадают на чужой сайт и производят оплату (то есть деньги приходят но бонусы зачисляется не тем людям. Правильно?) Это и есть фишинг. Бань аккаунты злоумышленника. Жалуйся его хостеру. По другому никак. Ключ у тебя есть $config->SecurityWord. То что колбек прописывается в форме это совсем не гуд. (но это уже претензии к терминалу) Если зачисление происходит без оплаты это другое дело. Значит добрались до ключа.
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Расскажи, как проверяешь подлинность запроса от платёжной системы?
     
  7. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Там есть код во вложениях. В кириллице. С русскими комментами. Я уже и забыл что так бывает)
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Обычно, в доке платёжной системы расписано, как проверить подлинность запроса. Т е ты отправляешь человека на оплату и передаешь платежной системе нрмер транзакции (свой) сумму оплаты и мож еще какие-то данные. После успешной оплаты пс отправляет тебе запрос, одним из параметров которого является сигнатура, зашифрованная определенным алгоритмом. Ты по тому же алгоритму шифруешь данные у себя и сравниваешь с этим параметром. Если всё сходится, значит запрос подлинный и ты продолжаешь обработку запроса.
    --- Добавлено ---
    Лень)
     
  9. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Да там обычный фишинг. Никто ничего не взламывал. Человек свой ид подсовывает что бы другие вместо него оплачивали. Бан аккаунта по ip и пусть доказывает что не он. Правда в наше суровое время когда все сидят с мобильных где он постоянно меняется это не так и просто.
     
  10. crystaltrumpet

    crystaltrumpet Новичок

    С нами с:
    8 сен 2018
    Сообщения:
    23
    Симпатии:
    0
    Да нет же!
    ну как еще объяснить!!!
    Да я же попунктно все расписал как все было!
    Было обнаружено что с сайта были выведены реферальные
    Злоумышленник создал один аккаунт и под ним второй.
    на второй накрутил себе 10 000 000 руб. причем сделал около 3000 операций за 1 минуту на 66 рублей или что то такое..
    на первый аккаунт пришли 5% реферальных
    он их вывел
    что не понятно то..?
    никто никуда не попадает. все сделал один человек\
    как он накрутил деньги - я написал в самом начале
    никакие пользователи никуда не попадают
     
    #10 crystaltrumpet, 22 дек 2018
    Последнее редактирование: 22 дек 2018
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    да всё понятно. ты используешь кривой скрипт, который не защищен от CSRF. или в нём вообще нет настоящей авторизации. только "защита через незнание адреса". злоумышленник эксплуатирует дыру. это всем понятно. )))

    конкретизируй что ты от форума хочешь? чтобы тебя научили заделывать дыры или чтобы кто-то более подкованный сделал для тебя исправление — за деньги естессна.
     
    Walk нравится это.
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    в общих чертах, если ты хочешь доверительных отношений между двумя сайтами, в формуле проверки достоверности должен участвовать ключ. сам этот ключ не должен передаваться вместе с данными. он должен быть аргументом, который используется для формирования правильной "подписи" данных.

    звучит понятно?
    --- Добавлено ---
    что касается "накрутки реферальных", тут логика простая: только результативные переходы имеют ценность. то есть совершенные покупки. пока это правило выдерживается, тебе должно быть пофигу каким образом "накручено 10 000 000", если ты продал на 1 000 000 000.
    это не про скрипт, а про логическую организацию, которой должен соответствовать скрипт. иначе скрипт будет автоматизировать бардак.

    Cost Per Action
     
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Там экшн сразу на апи партнерки. Если оплаты на самом деле не было значит человек должен знать алгоритм (который найти не проблема) и секретный ключ (вот с ним сложнее) что бы самому дернуть этот скрипт. Можно по логам посмотреть кто это был. Каким вообще образом удалось найти этот второй сайт? Лично я пока что не вижу в нем смысла. Ну и что в самом кабинете терминала? Никаких платежей нету? Может дев режим включен? Прям полтергейст. Ключ хоть не 12345? Ну и вспоминай кому доступ давал. Если б залили бекдор ни с какими вторыми сайтами никто бы не мучился.
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    "скрипт ферм" это про пирамиды? если так, то не жалко тебя. ты мошенник, который пострадал от мошенника ;)
    --- Добавлено ---
    держи предупреждение. еще балл и в баню.
     
  15. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Плюс я вот вижу что проверка идет в STATUS_URL этот скрипт точно дергается только при успешной оплате? Может он дергается всегда и нужно проверять по чем то дополнительно. Или же сама платежка дырявая если это действительно самое дно там всякое бывает.
     
  16. crystaltrumpet

    crystaltrumpet Новичок

    С нами с:
    8 сен 2018
    Сообщения:
    23
    Симпатии:
    0
    Обработчик сравнивает:
    if ($hash==$_POST['V2_HASH'] && $_POST['PAYEE_ACCOUNT']==$conf_merchantAccountNumber && $_POST['PAYMENT_UNITS']=='USD')
    {
    если совпадает - происходит начисление
    А STATUS_URL - нужен только для отображения страницы успешной оплаты или неудачной

    Вот такие логи были:
    77.122.220.251 - - [21/Dec/2018:18:30:09 +0300] "POST /perfect_merchant.php HTTP/1.1" 429 149 "http://ixer.org/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.116"
    77.122.220.251 - - [21/Dec/2018:18:30:09 +0300] "POST /perfect_merchant.php HTTP/1.1" 429 149 "http://ixer.org/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.116"
    77.122.220.251 - - [21/Dec/2018:18:30:09 +0300] "POST /perfect_merchant.php HTTP/1.1" 429 149 "http://ixer.org/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.116"
    77.122.220.251 - - [21/Dec/2018:18:30:09 +0300] "POST /perfect_merchant.php HTTP/1.1" 429 149 "http://ixer.org/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.116"
    77.122.220.251 - - [21/Dec/2018:18:30:09 +0300] "POST /perfect_merchant.php HTTP/1.1" 429 149 "http://ixer.org/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.116"

    Отвечаю по поводу скрипта
    ВЫ ЧТО! КАКИЕ ПИРАМИДЫ! Скрипт ферм используется для игр в моем случае игра - "рулетка". Загуглите - там нет ничего незаконного условия открыты и прозрачны. 5 человек играет - один выбывает - его вклад делится между остальными за минусом 5% админу и 5% рефералки. мой сайт существует более 1 года и где же тут обман? В моей версии фермы вклады и персонажи вырезаны. Эта игра еще называется 5-й лишний. все на полном автомате. все отлично было до того момента как я решил подключить perfect money
    --- Добавлено ---
    Я только что попробовал создать в insert_perfect.php
    <input type="hidden" name="proverka" value="1">

    А в файле perfect_merchant.php
    if(!isset($_POST["proverka"])){ exit;}

    Почему это не работает? Я новичок и по любому что то делаю не так скорее всего.
    как то не видит посты обработчик..
     
  17. varz62

    varz62 Активный пользователь

    С нами с:
    31 авг 2014
    Сообщения:
    20
    Симпатии:
    2
    так вроде все украдено до нас
    если POST запрос то используем csrf токен
     
  18. crystaltrumpet

    crystaltrumpet Новичок

    С нами с:
    8 сен 2018
    Сообщения:
    23
    Симпатии:
    0
    Если Бы я мог сам бы сделал - я новичок и csrf токен для меня темный лес
    Вопрос господа гуру!
    -- можно просто проверять источник запроса и если он не равен вашему сайту - то отдавать ошибку?
     
  19. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @crystaltrumpet csrf делается на своем сайте. У тебя же запрос на апи терминала (сайта принимающего деньги) Ты отправляешь пост ему на основании это поста он строит форму для оплаты. После оплаты он (этот сайт принимающий деньги) дергает колбек (тот самый скрипт который ты переименовывал) Тут два варианта или слили ключ и соответсвенно дергают скрипт напрямую (тут только разбираться каким образом они добрались к ключу исправлять и менять) или что то с самым терминалом. Смотри доку по интеграции.
    --- Добавлено ---
    Этот самый ключ это и есть то самое уникальное по чему производится проверка. Проверить по реферер ты не можешь так как его можно подделать по ип тоже так как сайт терминала может его изменить и т.д. Если интересно что присылает сайт терминала делай var_dump($_POST) но проще посмотреть доку