要約: この記事では主に、PHP Web サイトのクロスサイト リクエスト フォージェリについて紹介します。すべての CSRF 攻撃方法の中で、攻撃者は別のユーザーによって開始されたように見える HTTP リクエストを偽造します。実際、攻撃者の目的は、ユーザーによって送信された HTTP リクエストを追跡することです。 ...
転載、ご指摘ください: PHP 脆弱性完全解決 (6) - クロス Web サイト リクエスト フォージェリ
CSRF (Cross Site Request Forgeries) とは、クロス Web サイト リクエストの偽造を意味し、XSRF とも書きます。攻撃者はターゲット ユーザーの HTTP リクエストを偽造し、CSRF 脆弱性のある Web サイトにこのリクエストを送信します。Web サイトがこのリクエストを実行すると、クロスサイト リクエスト フォージェリ攻撃が引き起こされます。攻撃者は秘密の HTTP 接続を使用して、ターゲット ユーザーが気づかずにこのリンクをクリックできるようにします。ユーザーは自分自身でクリックし、正当な権限を持つ正当なユーザーであるため、Web サイト リンク内で特定の HTTP コマンドを実行できます。攻撃者の目的。
例: ショッピング Web サイトで商品を購入する場合は、http://www.shop.com/buy.php?item=watch&num=1 を使用します。 item パラメーターは購入するアイテムを決定し、num パラメーターは購入するアイテムを決定します。攻撃者がターゲット ユーザーに秘密の方法でリンクを送信し、ターゲット ユーザーが誤ってアクセスした場合、購入数は 1,000 になります
例
Suiyuan Network PHP Message Board V1.0
を削除します。自由にメッセージ
//delbook.php このページはメッセージを削除するために使用されます
include_once("dlyz.php"); //dlyz.php のユーザー確認権限。権限が管理者の場合のみメッセージを削除できます
include_once("../ conn.php");
$del= $_GET["del"];
$id=$_GET["id"];
if ($del=="データ")
{
$ID_Dele= implode(" ,",$_POST['adid'] );
$sql=”ID が含まれる書籍から削除 (「.$ID_Dele.”)」;
mysql_query($sql);
}
else
{
$sql= ”delete from book where id=”.$ id; //削除するメッセージIDを渡す
mysql_query($sql);
}
mysql_close($conn);
echo "";
echo "alert('削除に成功しました!');";
echo " location= 'book.php';";
echo "";
?>
管理者権限があり、http://localhost/manage/delbook.php?id= を送信した場合2、ID 2 のメッセージが削除されます
使用方法:
メッセージを残すには一般ユーザーを使用します (ソースコード方法)、内容は
"delbook.php?id=2" />
"delbook.php? id=3" />
"delbook.php? id=4" />
"delbook.php?id=5" />
4 つの画像リンクを挿入し、4 つの ID メッセージをそれぞれ削除します。ホームページを参照して、変化がないことを確認します。 。画像を表示できません
ここで、管理者アカウントでログインしてホームページを更新すると、メッセージが 1 つだけ残っており、画像のリンクで指定された ID 番号を持つ他のメッセージがすべて削除されていることがわかります。
攻撃者はメッセージに非表示の画像リンクを挿入します。このリンクには、攻撃者自身がこれらの画像リンクにアクセスする場合、権限がないため、管理者がログに記録した場合には、何の効果も確認できません。で、このメッセージを表示した後、隠しリンクが実行され、彼の権限は十分に大きいため、これらのメッセージは削除されます
管理者パスワードを変更してください
//pass.php
if($_GET["act"] )
{
$username=$_POST[“username”];
$sh=$_POST[“sh”];
$gg=$_POST[“gg”];
$title=$_POST[“タイトル”] ;
$copyright=$_POST[“著作権”].”
設計と制作: ハッカー契約セキュリティネットワーク”;
$password=md5($_POST[“パスワード”]);
if(empty($_POST[“パスワード” ]))
{
$sql=”update gly set username='”.$username.”',sh=”.$sh.”,gg='”.$gg.”',title='”.$ title."',copyright='".$copyright."' where id=1″;
}
else
{
$sql=”update gly set username='”.$username.”',password='” .$password.”',sh=”.$sh.”,gg='”.$gg.”',title='”.$title.”',copyright='”.$copyright.”' ここで id =1″;
}
mysql_query($sql);
mysql_close($conn);
echo “”;
echo “alert('変更成功!');”;
echo ” location='pass.php'; ";
echo "";
}
このファイルは、管理パスワードと Web サイト設定に関する一部の情報を変更するために使用されます。次のフォームを直接構築できます: