安全牛学习笔记CSRF
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全牛学习笔记CSRF相关的知识,希望对你有一定的参考价值。
╋━━━━━━━━━━━━━━━━━━━━━━━╋┃CSRF ┃
┃Cross-site request forgery ┃
┃与XSS经常混淆 ┃
┃从信任的角度来区分 ┃
┃ XSS:利用用户对站点的信任 ┃
┃ CSRF:利用站点对已经身份认证的信任 ┃
┃结合社工在身份认证会话过程中实现攻击 ┃
┃ 修改账号密码、个人信息(email、收获地址) ┃
┃ 发送伪造的业务请求(网银、购物、投票) ┃
┃ 关注他人社交账号、推送博文 ┃
┃ 在用户非自愿、不知情的情况下提交请求 ┃
╋━━━━━━━━━━━━━━━━━━━━━━━╋
╋━━━━━━━━━━━━━━━━━━━━━━━╋
┃CSRF ┃
┃业务逻辑漏洞 ┃
┃ 对关键操作缺少确认机制 ┃
┃ 自动扫描程序无法发现此类漏洞 ┃
┃漏洞利用条件 ┃
┃ 被害用户已经完成身份认证 ┃
┃ 新请求的提交不需要重新身份认证或确认机制 ┃
┃ 攻击者必须了解Web APP请求的参数构造 ┃
┃ 诱使用户触发攻击的指令(社工) ┃
┃Burpuste CSRF PoC generator ┃
┃ Post/Get方法 ┃
╋━━━━━━━━━━━━━━━━━━━━━━━╋
[email protected]:~# apt-get install linux-image-4.4.0-kali-amd64
[email protected]:~# apt-get install linux-headers-4.4.0-kali-amd64
[email protected]:~# 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
[email protected]:~# 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
.
[email protected]:~# Openvas-stop
[email protected]:~# 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
.
[email protected]:~# service apache2 start
[email protected]:~# cd /var/www/html/
[email protected]:~/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的主要内容,如果未能解决你的问题,请参考以下文章