首頁  >  文章  >  後端開發  >  PHP漏洞全解-跨網站請求偽造

PHP漏洞全解-跨網站請求偽造

PHP中文网
PHP中文网原創
2016-11-03 18:04:311428瀏覽

摘要:本文主要介紹針對PHP網站的跨網站請求偽造。在CSRF所有攻擊方式中包含攻擊者偽造一個看起來是其他用戶發起的 HTTP 請求,事實上,追蹤一個用戶發送的 HTTP 請求才是攻擊者的目的。 ...

          轉載請註明來源:PHP漏洞全解(六)-跨網站請求偽造
CSRF(Cross Site Request Forgeries),意為跨網站請求偽造,也有寫為XSRF。攻擊者偽造目標使用者的HTTP請求,然後此請求傳送到有CSRF漏洞的網站,網站執行此請 求後,引發跨站請求偽造攻擊。攻擊者利用隱蔽的HTTP連接,讓目標用戶在不注意的情況下單擊這個鏈接,由於是用戶自己點擊的,而他又是合法用戶擁有合法權限,所以目標用戶能夠在網站內執行特定的HTTP鏈接,從而達到攻擊者的目的。
例如:某個購物網站購買商品時,採用http://www.shop.com/buy.php?item=watch&num=1,item參數決定要購買什麼物品,num參數決定要購買數量,如果攻擊者以隱藏的方式發送給目標用戶鏈接,那麼如果目標用戶不小心訪問以後,購買的數量就成了1000個
實例
隨緣網絡PHP留言板V1.0
任意刪除留言
//delbook.php 此頁面用於刪除留言
include_once(“dlyz.php”); //dlyz.php使用者驗證權限,當權限是admin的時候方可刪除留言
include_once(“../conn.php”);
$del= $_GET[“del”];
$id=$_GET[“id”];
if ($del==”data”)
{
$ID_Dele= implode(“,”,$_POST['adid'] );
$sql=”delete from book where id in (“.$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 “”;
?>
當我們有admin權限,提交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留言,然後我們回到首頁瀏覽看,沒有什麼變化。 。圖片顯示不了
現在我們再用管理員帳號登陸後,來刷新首頁,會發現留言就剩一條,其他在圖片連結中指定的ID號的留言,全部都被刪除。
攻擊者在留言中插入隱藏的圖片鏈接,此鏈接具有刪除留言的作用,而攻擊者自己訪問這些圖片鏈接的時候,是不具有權限的,所以看不到任何效果,但是當管理員登陸後,查看此留言,就會執行隱藏的鏈接,而他的權限又是足夠大的,從而這些留言就被刪除了
修改管理員密碼
//pass.php
if($_GET[“act”] )
{
$username=$_POST[“username”];
$sh=$_POST[“sh”];
$gg=$_POST[“gg”];
$title=$_POST[“title”] ;
$copyright=$_POST[“copyright”].”
設計製作:黑客契約安全網”;
$password=md5($_POST[“password”]);
if(emptyempty($_POST[“password” ]))
{
$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.”' where id =1″;
}
mysql_query($sql);
mysql_close($conn);
echo “”;
echo “alert('修改成功!');”;
echo ” location='pass.php'; ”;
echo “”;
}
這個文件用於修改管理密碼和網站設置的一些信息,我們可以直接構造如下表單:

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:用if條件語句下一篇:用if條件語句