Есть так называемый скрипт ферм. Подключил платежную систему 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 присоединен? и если это со сторонних сайтов то блокировал такие попытки? Ниже прикреплю два файла:
А что здесь нового? Это твоя вина. Если аккаунт пользователя имеет права на пополнения баланса какая разница откуда он это делает. Он может и без сайта пополнить. Чисто для анализа в php eсть HTTP_REFERER но его не сложно подделать. Пополнять должен или админ или скрипт который дергается терминалом соответственно при этом передавая какой то секретный ключ. Ну а изменения названия это смешно. html код посмотреть не сложно. Он же в открытом доступе. Логику меняй. Похожие сайты в основном делают для фишинга. Отправляешь кому то ссылку аля vk.album.19382.com и если человек не внимательный он может засветить там свой логин и пароль.
Я в php новичок. Поэтому и разместил в разделе "новички". Могли бы помочь сделать секретный код для сверки POST и мерчанта? не бесплатно конечно
А вообще я перечитал сообщения и насколько я понял пользователи попадают на чужой сайт и производят оплату (то есть деньги приходят но бонусы зачисляется не тем людям. Правильно?) Это и есть фишинг. Бань аккаунты злоумышленника. Жалуйся его хостеру. По другому никак. Ключ у тебя есть $config->SecurityWord. То что колбек прописывается в форме это совсем не гуд. (но это уже претензии к терминалу) Если зачисление происходит без оплаты это другое дело. Значит добрались до ключа.
Обычно, в доке платёжной системы расписано, как проверить подлинность запроса. Т е ты отправляешь человека на оплату и передаешь платежной системе нрмер транзакции (свой) сумму оплаты и мож еще какие-то данные. После успешной оплаты пс отправляет тебе запрос, одним из параметров которого является сигнатура, зашифрованная определенным алгоритмом. Ты по тому же алгоритму шифруешь данные у себя и сравниваешь с этим параметром. Если всё сходится, значит запрос подлинный и ты продолжаешь обработку запроса. --- Добавлено --- Лень)
Да там обычный фишинг. Никто ничего не взламывал. Человек свой ид подсовывает что бы другие вместо него оплачивали. Бан аккаунта по ip и пусть доказывает что не он. Правда в наше суровое время когда все сидят с мобильных где он постоянно меняется это не так и просто.
Да нет же! ну как еще объяснить!!! Да я же попунктно все расписал как все было! Было обнаружено что с сайта были выведены реферальные Злоумышленник создал один аккаунт и под ним второй. на второй накрутил себе 10 000 000 руб. причем сделал около 3000 операций за 1 минуту на 66 рублей или что то такое.. на первый аккаунт пришли 5% реферальных он их вывел что не понятно то..? никто никуда не попадает. все сделал один человек\ как он накрутил деньги - я написал в самом начале никакие пользователи никуда не попадают
да всё понятно. ты используешь кривой скрипт, который не защищен от CSRF. или в нём вообще нет настоящей авторизации. только "защита через незнание адреса". злоумышленник эксплуатирует дыру. это всем понятно. ))) конкретизируй что ты от форума хочешь? чтобы тебя научили заделывать дыры или чтобы кто-то более подкованный сделал для тебя исправление — за деньги естессна.
в общих чертах, если ты хочешь доверительных отношений между двумя сайтами, в формуле проверки достоверности должен участвовать ключ. сам этот ключ не должен передаваться вместе с данными. он должен быть аргументом, который используется для формирования правильной "подписи" данных. звучит понятно? --- Добавлено --- что касается "накрутки реферальных", тут логика простая: только результативные переходы имеют ценность. то есть совершенные покупки. пока это правило выдерживается, тебе должно быть пофигу каким образом "накручено 10 000 000", если ты продал на 1 000 000 000. это не про скрипт, а про логическую организацию, которой должен соответствовать скрипт. иначе скрипт будет автоматизировать бардак. Cost Per Action
Там экшн сразу на апи партнерки. Если оплаты на самом деле не было значит человек должен знать алгоритм (который найти не проблема) и секретный ключ (вот с ним сложнее) что бы самому дернуть этот скрипт. Можно по логам посмотреть кто это был. Каким вообще образом удалось найти этот второй сайт? Лично я пока что не вижу в нем смысла. Ну и что в самом кабинете терминала? Никаких платежей нету? Может дев режим включен? Прям полтергейст. Ключ хоть не 12345? Ну и вспоминай кому доступ давал. Если б залили бекдор ни с какими вторыми сайтами никто бы не мучился.
"скрипт ферм" это про пирамиды? если так, то не жалко тебя. ты мошенник, который пострадал от мошенника --- Добавлено --- держи предупреждение. еще балл и в баню.
Плюс я вот вижу что проверка идет в STATUS_URL этот скрипт точно дергается только при успешной оплате? Может он дергается всегда и нужно проверять по чем то дополнительно. Или же сама платежка дырявая если это действительно самое дно там всякое бывает.
Обработчик сравнивает: 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;} Почему это не работает? Я новичок и по любому что то делаю не так скорее всего. как то не видит посты обработчик..
Если Бы я мог сам бы сделал - я новичок и csrf токен для меня темный лес Вопрос господа гуру! -- можно просто проверять источник запроса и если он не равен вашему сайту - то отдавать ошибку?
@crystaltrumpet csrf делается на своем сайте. У тебя же запрос на апи терминала (сайта принимающего деньги) Ты отправляешь пост ему на основании это поста он строит форму для оплаты. После оплаты он (этот сайт принимающий деньги) дергает колбек (тот самый скрипт который ты переименовывал) Тут два варианта или слили ключ и соответсвенно дергают скрипт напрямую (тут только разбираться каким образом они добрались к ключу исправлять и менять) или что то с самым терминалом. Смотри доку по интеграции. --- Добавлено --- Этот самый ключ это и есть то самое уникальное по чему производится проверка. Проверить по реферер ты не можешь так как его можно подделать по ип тоже так как сайт терминала может его изменить и т.д. Если интересно что присылает сайт терминала делай var_dump($_POST) но проще посмотреть доку