1. 程式人生 > >【安全牛學習筆記】CSRF

【安全牛學習筆記】CSRF

信息安全 security+ csrf

╋━━━━━━━━━━━━━━━━━━━━━━━╋

┃CSRF ┃

┃Cross-site request forgery ┃

┃與XSS經常混淆 ┃

┃從信任的角度來區分 ┃

┃ XSS:利用用戶對站點的信任 ┃

┃ CSRF:利用站點對已經身份認證的信任 ┃

┃結合社工在身份認證會話過程中實現攻擊 ┃

┃ 修改賬號密碼、個人信息(email、收獲地址) ┃

┃ 發送偽造的業務請求(網銀、購物、投票) ┃

┃ 關註他人社交賬號、推送博文 ┃

┃ 在用戶非自願、不知情的情況下提交請求 ┃

╋━━━━━━━━━━━━━━━━━━━━━━━╋

╋━━━━━━━━━━━━━━━━━━━━━━━╋

┃CSRF ┃

┃業務邏輯漏洞 ┃

┃ 對關鍵操作缺少確認機制 ┃

┃ 自動掃描程序無法發現此類漏洞 ┃

┃漏洞利用條件 ┃

┃ 被害用戶已經完成身份認證 ┃

┃ 新請求的提交不需要重新身份認證或確認機制 ┃

┃ 攻擊者必須了解Web APP請求的參數構造 ┃

┃ 誘使用戶觸發攻擊的指令(社工) ┃

┃Burpuste CSRF PoC generator ┃

┃ Post/Get方法 ┃

╋━━━━━━━━━━━━━━━━━━━━━━━╋

root@K:~# apt-get install linux-image-4.4.0-kali-amd64

root@K:~# apt-get install linux-headers-4.4.0-kali-amd64

root@K:~# uname -u

Linux K 4.4.0-kali-amd64 #1 SMP Debian 4.4.6-1kali (2016-03-18) x86_64 GNU/Linux

192.168.1.115/dvwa/login.php

root@K:~# netstat -pantu | grep :80

tcp 0 0 127.0.0.0:80 0.0.0.0:* LISTEN

665/gsad

tcp 0 0 127.0.0.0:8080 :::* LISTEN

2081/java

tcp 0 0 127.0.0.0:8080 127.0.0.1:60322 TIME_WAIT

.

root@K:~# Openvas-stop

root@K:~# netstat -pantu | grep :80

tcp 0 0 127.0.0.0:8080 :::* LISTEN

2081/java

tcp 0 0 127.0.0.0:8080 127.0.0.1:60322 TIME_WAIT

.

root@K:~# service apache2 start

root@K:~# cd /var/www/html/

root@K:~/var/www/html# gedit 1.html

<a herf ='http://192.168.1.115/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change'>csrf</a>

------------------------------------------------------------------------------

低安全代碼

<?php

if (isset($_GET['Change'])){

// Turn requests into variables

$pass_new = $_GET['password_new'];

$pass_conf = $_GET['password_conf'];

if (($pass_new == $pass_conf)){

$pass_new = mysql_real_escape_string($pass_new);

$pass_new = md5(pass_new);

$insert="UPDATE 'users' SET password = '$pass_new' WHERE user = 'admin';";

$result=mysql_query($insert) or die ('<pre>' . mysql_error() . '</pre>' );

echo "<pre> Password Changed </pre>";

mysql_close();

}

else{

echo "<pre> Password did not match . </pre>";

}

}

}

?>

--------------------------------------------------------------------------------

中安全代碼

<?php

if (isset($_GET['Change'])){

// Checks the http referer header

if (eregi ( "127.0.0.1", $_SERVER['HTTP_REFERER'] ) ){

// Turn requests into variables

$pass_new = $_GET['password_new'];

$pass_conf = $_GET['password_conf'];

if (($pass_new == $pass_conf)){

$pass_new = mysql_real_escape_string($pass_new);

$pass_new = md5(pass_new);

$insert="UPDATE 'users' SET password = '$pass_new' WHERE user = 'admin';";

$result=mysql_query($insert) or die ('<pre>' . mysql_error() . '</pre>' );

echo "<pre> Password Changed </pre>";

mysql_close();

}

else{

echo "<pre> Password did not match . </pre>";

}

}

}

}

?>

----------------------------------------------------------------------------------

高安全代碼

<?php

if (isset($_GET['Change'])){

// Turn request into variables

$pass_curr = $_GET['password_current'];

$pass_new = $_GET['password_new'];

$pass_conf = $_GET['password_conf'];

// Snitise current password input

$pass_curr = stripslashed ($pass_curr );

$pass_curr = mysql_real_escape_string( $pass_curr );

$pass_curr = md5( $pass_curr );

// Check that hte current password is corrent

$qry = "SELECT password FROM 'users' WHERE user='admin' AND password='$pass_curr';";

$result = mysql_query($qry) or die('<pre>' . mysql_error() . '</pre>' );

if (($pass_new == $pass_conf) && ( $result && mysql_num_rows( $result ) == 1 )){

$pass_new = mysql_real_escape_string($pass_new);

$pass_new = md5(pass_new);

$insert="UPDATE 'users' SET password = '$pass_new' WHERE user = 'admin';";

$result=mysql_query($insert) or die ('<pre>' . mysql_error() . '</pre>' );

echo "<pre> Password Changed </pre>";

mysql_close();

}

else{

echo "<pre> Password did not match . </pre>";

}

}

}

?>

----------------------------------------------------------------------------------

╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋

┃CSRF ┃

┃自動掃描程序的檢測方法 ┃

┃ 在請求和響應過程中檢查是否存在anti-CSRF token名 ┃

┃ 檢查服務器是否驗證anti-CSRF token的名值 ┃

┃ 檢查token中可編輯的字符串 ┃

┃ 檢查referrer頭是否可以偽造 ┃

┃對策 ┃

┃ Captcha ┃

┃ anti-CSRF token ┃

┃ Referrer頭 ┃

┃ 降低會話超時時間 ┃

╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋

該筆記為安全牛課堂學員筆記,想看此課程或者信息安全類幹貨可以移步到安全牛課堂


Security+認證為什麽是互聯網+時代最火爆的認證?

牛妹先給大家介紹一下Security+


Security+ 認證是一種中立第三方認證,其發證機構為美國計算機行業協會CompTIA ;是和CISSP、ITIL 等共同包含在內的國際 IT 業 10 大熱門認證之一,和CISSP偏重信息安全管理相比,Security+ 認證更偏重信息安全技術和操作。

通過該認證證明了您具備網絡安全,合規性和操作安全,威脅和漏洞,應用程序、數據和主機安全,訪問控制和身份管理以及加密技術等方面的能力。因其考試難度不易,含金量較高,目前已被全球企業和安全專業人士所普遍采納。

Security+認證如此火爆的原因?

原因一:在所有信息安全認證當中,偏重信息安全技術的認證是空白的, Security+認證正好可以彌補信息安全技術領域的空白 。

目前行業內受認可的信息安全認證主要有CISP和CISSP,但是無論CISP還是CISSP都是偏重信息安全管理的,技術知識講的寬泛且淺顯,考試都是一帶而過。而且CISSP要求持證人員的信息安全工作經驗都要5年以上,CISP也要求大專學歷4年以上工作經驗,這些要求無疑把有能力且上進的年輕人的持證之路堵住。在現實社會中,無論是找工作還是升職加薪,或是投標時候報人員,認證都是必不可少的,這給年輕人帶來了很多不公平。而Security+的出現可以掃清這些年輕人職業發展中的障礙,由於Security+偏重信息安全技術,所以對工作經驗沒有特別的要求。只要你有IT相關背景,追求進步就可以學習和考試。

原因二: IT運維人員工作與翻身的利器。

在銀行、證券、保險、信息通訊等行業,IT運維人員非常多,IT運維涉及的工作面也非常廣。是一個集網絡、系統、安全、應用架構、存儲為一體的綜合性技術崗。雖然沒有程序猿們“生當做光棍,死亦寫代碼”的悲壯,但也有著“鋤禾日當午,不如運維苦“的感慨。天天對著電腦和機器,時間長了難免有對於職業發展的迷茫和困惑。Security+國際認證的出現可以讓有追求的IT運維人員學習網絡安全知識,掌握網絡安全實踐。職業發展朝著網絡安全的方向發展,解決國內信息安全人才的匱乏問題。另外,即使不轉型,要做好運維工作,學習安全知識取得安全認證也是必不可少的。

原因三:接地氣、國際範兒、考試方便、費用適中!

CompTIA作為全球ICT領域最具影響力的全球領先機構,在信息安全人才認證方面是專業、公平、公正的。Security+認證偏重操作且和一線工程師的日常工作息息相關。適合銀行、證券、保險、互聯網公司等IT相關人員學習。作為國際認證在全球147個國家受到廣泛的認可。

在目前的信息安全大潮之下,人才是信息安全發展的關鍵。而目前國內的信息安全人才是非常匱乏的,相信Security+認證一定會成為最火爆的信息安全認證。

【安全牛學習筆記】CSRF