Heim > Artikel > Backend-Entwicklung > Vollständige Erklärung der PHP-Schwachstellen – Cross-Site-Request-Forgery
Zusammenfassung: In diesem Artikel wird hauptsächlich die Cross-Site-Request-Forgery für PHP-Websites vorgestellt. Bei allen CSRF-Angriffsmethoden fälscht der Angreifer eine HTTP-Anfrage, die scheinbar von einem anderen Benutzer initiiert wurde. Tatsächlich ist es das Ziel des Angreifers, die von einem Benutzer gesendete HTTP-Anfrage zu verfolgen. ...
Bitte geben Sie die Quelle für den Nachdruck an: Vollständige Erklärung der PHP-Schwachstellen (6) – Cross-Site-Request-Forgeries
CSRF (Cross-Site-Request-Forgeries), was Cross-Site-Request-Forgery bedeutet, ist ebenfalls vorhanden geschrieben als XSRF. Der Angreifer fälscht die HTTP-Anfrage des Zielbenutzers und sendet diese Anfrage dann an eine Website mit einer CSRF-Schwachstelle. Nachdem die Website diese Anfrage ausgeführt hat, löst sie einen Cross-Site-Request-Forgery-Angriff aus. Der Angreifer nutzt eine verdeckte HTTP-Verbindung, um dem Zielbenutzer zu ermöglichen, auf diesen Link zu klicken, ohne es zu merken. Da der Benutzer selbst darauf geklickt hat und ein legitimer Benutzer mit rechtlichen Berechtigungen ist, kann der Zielbenutzer einen bestimmten HTTP-Link ausführen, um dies zu erreichen das Ziel des Angreifers.
Zum Beispiel: Wenn Sie Waren auf einer Shopping-Website kaufen, verwenden Sie http://www.shop.com/buy.php?item=watch&num=1. Der Parameter item bestimmt, welcher Artikel gekauft werden soll, und der Parameter num bestimmt die zu kaufende Menge. Wenn der Angreifer den Link auf versteckte Weise an den Zielbenutzer sendet, beträgt die gekaufte Menge 1.000
Instanzen
Suiyuan Network PHP Message Board V1. 0
Löschen Sie die Nachricht nach Belieben
//delbook.php Diese Seite wird zum Löschen von Nachrichten verwendet
include_once("dlyz.php"); //dlyz.php Benutzerüberprüfungsberechtigungen, nur wenn die Berechtigung vorhanden ist Der Administrator kann Nachrichten löschen
include_once( "../conn.php");
$del=$_GET["del"];
$id=$_GET["id"];
if ($del=="data" )
{
$ID_Dele= implode(“,“,$_POST['adid']);
$sql=“aus dem Buch löschen, in dem die ID enthalten ist („ .$ID_Dele.“)“;
mysql_query($sql);
}
else
{
$sql=“delete from book where id=“.$id; //Pass die zu löschende Nachrichten-ID
mysql_query ($sql);
}
mysql_close($conn);
echo „“;
echo „alert('Löschen erfolgreich!');“ ;
echo ” location='book .php';";
echo "";
?>
Wenn wir Administratorrechte haben und http://localhost/manage/delbook.php einreichen ?id=2, die ID wird gelöscht Nachricht 2
Verwendungsmethode:
Wir verwenden normale Benutzernachrichten (Quellcode-Methode), der Inhalt ist
„delbook.php?id=2“ />
„delbook.php?id =3" />
"delbook.php?id=4" />
"delbook.php?id=5" />
Einfügen 4 Bildlinks bzw. 4 ID-Nachrichten löschen, dann kehren wir zum Durchsuchen zur Startseite zurück, und es gibt keine Änderung. . Das Bild kann nicht angezeigt werden
Jetzt melden wir uns mit dem Administratorkonto an und aktualisieren die Homepage. Wir werden feststellen, dass nur noch eine Nachricht übrig ist und alle anderen Nachrichten mit der im Bildlink angegebenen ID-Nummer gelöscht wurden.
Der Angreifer fügt einen versteckten Bildlink in die Nachricht ein. Wenn der Angreifer selbst auf diese Bildlinks zugreift, hat er keine Auswirkung Administrator Wenn Sie nach dem Anmelden diese Nachricht anzeigen, wird der versteckte Link ausgeführt und seine Autorität ist groß genug, sodass diese Nachrichten gelöscht werden
Ändern Sie das Administratorkennwort
//pass.php
wenn ($_GET[„act“])
{
$username=$_POST[“username“];
$sh=$_POST[“sh“];
$gg=$_POST[ "gg"];
$title=$_POST["title"];
$copyright=$_POST["copyright"]."
Design und Produktion: Hacker Contract Security Network";
$ passwort=md5($_POST[„Passwort“]);
if(emptyempty($_POST[„Passwort“]))
{
$sql=“update gly set username='“.$ Benutzername .“',sh=”.$sh.“,gg='”.$gg.“',title='”.$title.“',copyright='”.$copyright.“' wobei id=1 ″ ;
}
else
{
$sql=“update gly set username='“.$username.“',password='”.$password.“',sh=“. $ sh.“,gg='“.$gg.“',title='”.$title.“',copyright='”.$copyright.“' wobei id=1″;
}
mysql_query ($sql);
mysql_close($conn);
echo „“;
echo „alert('Änderung erfolgreich!');“;
echo ” location='pass.php' ; ";
echo "";
}
Diese Datei wird verwendet, um einige Informationen über das Verwaltungskennwort und die Website-Einstellungen zu ändern. Wir können direkt das folgende Formular erstellen: