In Webseite mit Guzzle (PHP) einloggen?

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.721
Guten Tag zusammen,

ich würde mich gerne mit meinem PHP Skript und Guzzle auf Folgender Webseite anmelden: https://www.test.de/meintest/login/

Ich habe bereits einige Artikel gelesen wie man das macht. Zum Beispiel diesen hier: https://stackoverflow.com/questions/25089960/how-to-get-past-login-screen-on-guzzle-call - Leider bekomme ich es nicht hin. Ich glaube aber, dass auf der Seite von test.de noch ein paar weitere Sicherheitsparameter hinzukommen.. denn bevor der eigtl. Post Request von der Forma ausgelöst wird, wird noch ein XHR Request ausgelöst..

Das ist mein Code bisher:
Code:
    $loginURL = "https://test.de/meintest/login";
    
    $guzzle = new \GuzzleHttp\Client();
    $cookieJar = new \GuzzleHttp\Cookie\CookieJar();
    
    $response = $guzzle->request('POST', $loginURL, [
            'form_params' => [
                'username' => "0000000000",
                'password' => "0000000000",
                'action' => 'login'
            ],
            'cookies' => $cookieJar,
            'debug' => true
        ]
    );
    
    var_dump($response->getBody()->getContents());
    var_dump($guzzle->getConfig('cookies'));

Hinzuzufügen ist noch, dass die Cookies, also "var_dump($guzzle->getConfig('cookies'));", immer bool(false) ausgeben. Eventuell liegt es auch hieran?

Würde mich sehr freuen!
Danke!
 
Du schickst nicht alle Parameter mit. Wir wissen nicht, welche davon zwingend sind und welche nicht. Weiters wird noch ein zusätzlicher Parameter gesendet, wenn JavaScript aus ist, den solltest du auch noch mitsenden.

Aja den Parameter "'action' => 'login'" gibts im Formular gar nicht.
 
Daher frage ich ja.. kann man das herausfinden und wenn ja wie?
 
Indem du dir den Quellcode des Formulars anschaust? Oder was meinst du genau?
Was willst du denn überhaupt genau machen?
 
Es werden noch source und hash mitgesendet. Sieht man ja im Quelltext. Aber ich bezweifle stark dass die einen Post Request zulassen der nicht von ihrer Domain stammt.
 
Doch, lassen sie. Dennoch kann ich mich leider nicht einloggen.. Selbst wenn ich den Hash sende, der per XHR zurückkommt.. statt dem Passwort
 
kling1 schrieb:
Aber ich bezweifle stark dass die einen Post Request zulassen der nicht von ihrer Domain stammt.

Woher wollen die das denn wissen?
Der POST-Request beim Anmelden stammt ja von meinem Browser auf dem Client und nicht von deren Server.
Referer muss man ja nicht setzen und bei der gleichen Domain wird auch keiner gesetzt.

Lediglich mit etwas Cookie + Webstorage + Kryptozauberei (HMAC Signierung als Cookie für einen weiteren Cookie, der RandomValue in einem Webstorage signiert) könnte man etwas erschweren und recht gemein machen aber kaum verhindern, dass sich ein ein Skript mit "cURL" anstatt ein Mensch mit "Mozilla Firefox" anmeldet.
 
  • Gefällt mir
Reaktionen: psYcho-edgE
Ich habe jetzt mehrere Varianten bisher getestet wie z.B. das mit dem Hash statt dem Passwort senden und ich habe auch einmal Versucht, genau die Parameter, die beim Übermitteln der Form gesendet werden zu senden, leider ohne Erfolg..

Ich würde mich daher sehr freuen, wenn jemand mir hier weiterhelfen könnte.
 
ayngush schrieb:
Woher wollen die das denn wissen?
Der POST-Request beim Anmelden stammt ja von meinem Browser auf dem Client und nicht von deren Server.
Referer muss man ja nicht setzen und bei der gleichen Domain wird auch keiner gesetzt.

Lediglich mit etwas Cookie + Webstorage + Kryptozauberei (HMAC Signierung als Cookie für einen weiteren Cookie, der RandomValue in einem Webstorage signiert) könnte man etwas erschweren und recht gemein machen aber kaum verhindern, dass sich ein ein Skript mit "cURL" anstatt ein Mensch mit "Mozilla Firefox" anmeldet.
Stichwort CORS. Man muss das explizit erlauben.
 
Stichwort: Wird nur auf deinen Client ausgewertet und kann von einem "Skript (eigener Client)" natürlich geflissentlich ignoriert werden.
Der Server bekommt davon nichts mit, ob du einen Cross-Request auf eine andere "ORIGIN" machst oder nicht. Und das gilt auch nur für asynchrone Requests, normale POST-Request eines Anmeldeformulars ohne Javascript sind davon ausgenommen. CORS dient lediglich dazu Cross Site Scripting Angriffe auf die Webbrowser zu erschweren, das ist kein "Bot-Schutz".
 
  • Gefällt mir
Reaktionen: psYcho-edgE, FrazeColder und Madman1209
Zurück
Oben