首頁 後端開發 php教程 php漏洞之跨网站请求伪造与防止伪造方法_php技巧

php漏洞之跨网站请求伪造与防止伪造方法_php技巧

May 17, 2016 am 08:55 AM
偽造 漏洞

伪造跨站请求介绍
伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。这种攻击常见的表现形式有:
  伪造链接,引诱用户点击,或是让用户在不知情的情况下访问
  伪造表单,引诱用户提交。表单可以是隐藏的,用图片或链接的形式伪装。
  比较常见而且也很廉价的防范手段是在所有可能涉及用户写操作的表单中加入一个随机且变换频繁的字符串,然后在处理表单的时候对这个字符串进行检查。这个随机字符串如果和当前用户身份相关联的话,那么攻击者伪造请求会比较麻烦。
如果攻击者以隐藏的方式发送给目标用户链接
php漏洞之跨网站请求伪造与防止伪造方法_php技巧,那么如果目标用户不小心访问以后,购买的数量就成了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 "";
?>

当我们具有admin权限,提交http://localhost/manage/delbook.php?id=2 时,就会删除id为2的留言
利用方法:
我们使用普通用户留言(源代码方式),内容为
复制代码 代码如下:

php漏洞之跨网站请求伪造与防止伪造方法_php技巧
php漏洞之跨网站请求伪造与防止伪造方法_php技巧
php漏洞之跨网站请求伪造与防止伪造方法_php技巧
php漏洞之跨网站请求伪造与防止伪造方法_php技巧

插入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(empty($_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 "";
}
这个文件用于修改管理密码和网站设置的一些信息,我们可以直接构造如下表单:












存为attack.html,放到自己网站上http://www.jb51.net此页面访问后会自动向目标程序的pass.php提交参数,用户名修改为root,密码修改为root,然后我们去留言板发一条留言,隐藏这个链接,管理访问以后,他的用户名和密码全部修改成了root
防止伪造跨站请求
yahoo对付伪造跨站请求的办法是在表单里加入一个叫.crumb的随机串;而facebook也有类似的解决办法,它的表单里常常会有post_form_id和fb_dtsg。
随机串代码实现
咱们按照这个思路,山寨一个crumb的实现,代码如下:
复制代码 代码如下:

class Crumb {
CONST SALT = "your-secret-salt";
static $ttl = 7200;
static public function challenge($data) {
return hash_hmac('md5', $data, self::SALT);
}
static public function issueCrumb($uid, $action = -1) {
$i = ceil(time() / self::$ttl);
return substr(self::challenge($i . $action . $uid), -12, 10);
}
static public function verifyCrumb($uid, $crumb, $action = -1) {
$i = ceil(time() / self::$ttl);
if(substr(self::challenge($i . $action . $uid), -12, 10) == $crumb ||
substr(self::challenge(($i - 1) . $action . $uid), -12, 10) == $crumb)
return true;
return false;
}
}

代码中的$uid表示用户唯一标识,而$ttl表示这个随机串的有效时间。
  应用示例
  构造表单
  在表单中插入一个隐藏的随机串crumb
复制代码 代码如下:







处理表单 demo.php
  对crumb进行检查
复制代码 代码如下:

if(Crumb::verifyCrumb($uid, $_POST['crumb'])) {
//按照正常流程处理表单
} else {
//crumb校验失败,错误提示流程
}
?>
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

20步內越獄任意大模型!更多「奶奶漏洞」全自動發現 20步內越獄任意大模型!更多「奶奶漏洞」全自動發現 Nov 05, 2023 pm 08:13 PM

20步內越獄任意大模型!更多「奶奶漏洞」全自動發現

如何解決PHP語言開發常見的文件上傳漏洞? 如何解決PHP語言開發常見的文件上傳漏洞? Jun 10, 2023 am 11:10 AM

如何解決PHP語言開發常見的文件上傳漏洞?

Java中的緩衝區溢位漏洞及其危害 Java中的緩衝區溢位漏洞及其危害 Aug 09, 2023 pm 05:57 PM

Java中的緩衝區溢位漏洞及其危害

OpenAI DALL-E 3 模型存產生'不當內容”漏洞,一微軟員工上報後反遭'封口令” OpenAI DALL-E 3 模型存產生'不當內容”漏洞,一微軟員工上報後反遭'封口令” Feb 04, 2024 pm 02:40 PM

OpenAI DALL-E 3 模型存產生'不當內容”漏洞,一微軟員工上報後反遭'封口令”

Java中的逗號運算子漏洞和防護措施 Java中的逗號運算子漏洞和防護措施 Aug 10, 2023 pm 02:21 PM

Java中的逗號運算子漏洞和防護措施

非常全面! PHP常見漏洞程式碼總結! 非常全面! PHP常見漏洞程式碼總結! Jan 20, 2023 pm 02:22 PM

非常全面! PHP常見漏洞程式碼總結!

聯想 5 月已發布補丁,Phoenix UEFI 韌體漏洞披露:影響數百款英特爾 PC CPU 型號 聯想 5 月已發布補丁,Phoenix UEFI 韌體漏洞披露:影響數百款英特爾 PC CPU 型號 Jun 22, 2024 am 10:27 AM

聯想 5 月已發布補丁,Phoenix UEFI 韌體漏洞披露:影響數百款英特爾 PC CPU 型號

Zerodium 宣佈為 Microsoft Outlook 零點擊 RCE 安全漏洞支付 40 萬美元 Zerodium 宣佈為 Microsoft Outlook 零點擊 RCE 安全漏洞支付 40 萬美元 Apr 29, 2023 pm 09:28 PM

Zerodium 宣佈為 Microsoft Outlook 零點擊 RCE 安全漏洞支付 40 萬美元

See all articles