Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]platnosci.pl - eval - ATAK?
Forum PHP.pl > Forum > Przedszkole
zordon
Witam,
dla klientki robiłem integrację z serwisem platnosci.pl. Wszystkie testy były ok, wszystko śmigało jak należy.
Po pewnym czasie klientka odebrała maila od platnosci.pl - 100 nieodebranych raportów.
Przejrzałem historię raportów - a tam odpowiedź mojego skryptu online (zamiast spodziewanego "OK"):

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head><script language="JavaScript">var pn = "CSRT"; var pv = '3655584697615035707';
eval(function(a){var e=a.split("");var g=e.length;var c=parseInt(e[0]+e[1],16);var b=String.fromCharCode©;for(var d=2;d<g;d++){var f=(parseInt(e[d]+e[d+1],16)-c)%256;c=f;b+=String.fromCharCode(f);d++}return b}("288edbe3d1d7ddd8dd968d91908da4f1d7d39283a0a3c7c (...)

W skrypcie mam loggera, który loguje nawet odwiedzenie adresu (bez danych z post) - mimo 100 prób platnosci.pl zadnego wpisu w logach. Po wejściu na adres "ręcznie" (wpisując adres w przeglądarkę) wszystko wydaje się być ok, zero doklejonych skryptów, logger loguje wejście...
Ściągnąlem pliki z serwera, przeskanowałem programem antywirusowym, przeszukałem pod kątem funkcji eval, znaczników script, przeszukałem kluczowe pliki serwisu pod kątem doklejonych skryptów, nic. Wszystko wydaje się być w porządku.
Napisałem do platnosci.pl, czekam na odpowiedź. Klientka odbiera płatności, wypłaca je sobie na konto więc chyba atak nie jest skuteczny, ale mimo wszystko jakaś luka gdzieś chyba jest.
Jakieś sugestie gdzie jeszcze mogę szukać błędu, jak namierzyć problem?
redeemer
Możesz wykonać ten skrypt i zobaczyć gdzie się łączy, a potem wklepać w google. Może dowiesz się coś więcej.
zordon
nie bardzo, kod, który odczytuję z historii raportów na platnosci.pl ma limit długości i jest niekompletny. Logować nie mam czego bo teoretycznie mój skrypt online nie jest w ogóle wykonywany. Wygląda to tak, jakby przechwytywane było żądanie... na stronie płatnosci adres skryptu online jest oczywiscie prawidłowy. Dziwne że po wpisaniu tego samego adresu w przeglądarce skrypt przechwytywany już nie jest ... może jednak jakiś problem z integracją?
darko
Z Twojego opisu wynika, że możesz mieć do czynienia z atakiem typu man in the middle, jednak wydaje się to mało prawdopodobne. Powiększ funkcjonalność loggera o jakieś dodatkowe dane, wszystko, co pomoże utwierdzić się w przekonaniu, że faktycznie masz do czynienia z przechwytywaniem żądań.
zordon
Tak jak napisałem, skrypt platnosci.pl w ogóle nie wywołuje mojego skryptu online, więc logger nie ma co logować...
Musiałbym ustawić loggera, aby rejestrował każde żądanie do sklepu - tylko czego konkretnie szukać w takim nawale informacji?
darko
Oczywiście zakładam, że po wszystkich testach zmieniłeś namiary na pos'a, klucze i typ płatności z testowej na dane produkcyjne? Zmień loggera, żeby odbierał dane przesłane $_POST'em - na UrlOnline informacje o zmianie statusu płatności (raporty) przychodzą właśnie $_POST'em i loguj możliwie wszystkie dane przewidziane w odpowiedzi od Platnosci.pl

// edit
Z tych strzępów kodu, po pewnych modyfikacjach, tworzona i wywoływana evalem jest jakaś dwuargumentowa funkcja, a właściwie początek jej definicji znajdujący się w zmiennej b:
[JAVASCRIPT] pobierz, plaintext
  1. var a = "288edbe3d1d7ddd8dd968d91908da4f1d7d39283a0a3c7c";
  2. var e=a.split("");
  3. var g=e.length;
  4. var c=parseInt(e[0]+e[1],16);
  5. var b='';//String.fromCharCode;
  6. for(var d=2;d<g;d++){
  7. var f=(parseInt(e[d]+e[d+1],16)-c)%256;
  8. c=f;
  9. b+=String.fromCharCode(f);
  10. d++
  11. }
  12. alert(b);
  13. // zwraca function(e,d){var c=faᆱ
[JAVASCRIPT] pobierz, plaintext
nrm
to jest na jakimś OsCommerce lub innym OS?
Arhimenrius
może to i głupie, ale spróbuj wypisać wyjątek " throw new Exception " by sprawdzić co jest nie tak?
darko
~Arhimenrius ale co to da, że sobie wyrzuci sam wyjątek, któremu trzeba przecież trzeba podać $code i $msg ? Sam ma sobie wypisać, co jest według niego nie tak? Lkingsmiley.png
Arhimenrius
dlatego mówię że to mój głupi pomysł wink.gif myślałem o tym by właśnie w tym wyjątku wypisał $code i $msg
zordon
@Arhimenrius
nie miałbym nawet gdzie rzucić tego wyjątku: żądanie z platnosci.pl w ogóle nie dociera to tego skryptu. Więc albo coś się dzieje po stronie płatności, albo u mnie coś miesza z dispatcherem sad.gif

@darko
Dzięki za zainteresowanie. Dobry pomysł z tym logowaniem $_POST. Po powrocie z pracy wbiję gdzieś loggera i potestuję, może coś się uda złapać

Dodałem nowy punkt płatnosci - działa wszystko bez zarzutu.
Wyszła na jaw jednak taka sytuacja: niedawno klientka zatrudniła firmę od SEO. Oni zrobili przekierowanie 301 z adresu "bez www" na adres "z www". W panelu platnosci.pl byl adres "bez www". Aplikację zrobiłem w zendzie, wpisując adres (ciągle bez www) z błędną akcją, ale na kontrolerze platnosci (np poprawny adres: http://nazwasklepu.pl/platnosci/online - błędny adres http://nazwasklepu.pl/platnosci/niematakiejakcji) w raportach pojawiał się ciągle ten sam błąd (eval....).
Po zmianie na adres poprawny "z www" (http://www.nazwasklepu.pl/platnosci/online) działa...
Czy istnieje możliwość, że jest to po prostu zabezpieczenie platnosci.pl przed przekierowaniem? Oni się jeszcze nie odezwali, a telefon czynny tylko od poniedziałku do piątku - dlatego wszelkie opinie do poniedziałku byłyby mile widziane smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.