Heim  >  Artikel  >  Backend-Entwicklung  >  Vollständige Erklärung der PHP-Schwachstellen (6) – Cross-Site-Request-Forgery

Vollständige Erklärung der PHP-Schwachstellen (6) – Cross-Site-Request-Forgery

黄舟
黄舟Original
2016-12-22 09:27:581344Durchsuche

CSRF (Cross Site Request Forgeries), was Cross-Site Request Forgery bedeutet, wird auch als XSRF geschrieben. 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 Kommentare für 2
Verwendungsmethode:
Wir verwenden normale Benutzer, um Nachrichten zu hinterlassen (Quellcode-Methode), der Inhalt ist
“delbook. php?id=2“ />
"delbook.php?id=3" />
"delbook.php?id=4" />
"delbook.php?id=5 " />
Fügen Sie 4 Bildlinks ein. Löschen Sie jeweils die 4 ID-Nachrichten, und 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 das Verwaltungspasswort und einige Informationen zu den Website-Einstellungen zu ändern. Wir können direkt das folgende Formular erstellen: