我讀過很多關於會話固定/劫持的風險,並且許多人建議更改php.ini
指令,如session.use_only_cookies
到ON
等php.ini指令使服務器更安全......簡單的會話固定攻擊本地主機進行測試
我想用我的眼睛,看看我是否可以複製一個簡單的攻擊場景在基於PHP5 + Apache的本地主機服務器上。
在我的本地主機session.use_only_cookies
是OFF
所以根據上面的q/a我的本地主機基本上是不受保護的,這是我需要做的測試。
我第一次閱讀會話固定攻擊是如何perfomed這個簡單的文章:
爲了複製在文章中描述的場景,我創建了兩個非常簡單的PHP腳本(代碼如下),但攻擊不起作用,這是我做的:
(假裝是馬洛裏)我說愛麗絲:「你好就往http://localhost/login.php?PHPSESSID=mysessionid」
由於我的本地服務器的管理員,我看到會議服務器的磁盤上創建(它是塗蠟的文件與名稱
sess_ mysessionid
),所以我想:酷,它的工作!然後(故作愛麗絲)我登錄在進入「喬」作爲憑證
愛麗絲日誌和她被重定向到
insession_ok.php
,並且在該點(根據上述維基百科文章)馬洛裏應也能夠看到insession_ok.php
,因爲他將會話固定爲mysessionid
,但這不是真的,因爲當Alice在服務器sess_vdshg238cnfb4vt7ahpnp1p522
上登錄新會話時,所以我不明白Mallory應該如何注視/劫持會議,正如文章中所解釋的那樣?
的login.php
<?php
session_start();
//if user credentials are ok, let's put him in session
if(@$_POST['usr'] === 'joe')
$_SESSION['in_session'] = TRUE;
//if user is already logged in, let's redirect him to the account page "insession_ok.php"
if(isset($_SESSION['in_session']))
{
$webpage = 'http://' . $_SERVER['HTTP_HOST'] . '/insession_ok.php';
header("Location: " . $webpage, TRUE, 302);
}
?>
<form method="POST" action="login.php">
<input name="usr" type="text">
<input type="submit" value="Submit">
</form>
<script type="text/javascript">
alert(document.cookie); //to view cookies
</script>
insession_ok.php
<?php
session_start();
if(@$_SESSION['in_session'] === TRUE)
echo "in session ok";
else //user is not in session cause he did not login, let's redirect him to login page
{
$webpage = 'http://' . $_SERVER['HTTP_HOST'] . '/login.php';
header("Location: " . $webpage, TRUE, 302);
}
?>
不限線索/想法總是感激!