CSRF代码审计

token原理(dvwa)

首先对应的index.php页面会调用对应级别的页面(high.php)。
high.php里面有:
//Generate Anti-CSRF token
generateSessionToken();
这样就在index.php页面生成了个token。
跟进核心函数库看一下这个函数:
function genrateSessinoToken(){
if(isset($_SESSION['session_token'])){
destroySessionToken();
}
$_SESSION['session_token']=md5(uniqid());
}
function destroySessionToken(){
unset($_SESSION['session_token']);
}
然后生成了一个session_token
然后又使用tokenField(),增加一个隐藏字段
function tokenField(){
return "<input type='hidden' name='user_token' value'{$_SESSION['session_token']}' />";
}
接下来就是在high.php页面的GET['Change']请求中进行判断
checkToken($_REQUEST['user_token'],$_SESSION['session_token'],'index.php');
function checkToken($user_token,$session_token,$return_url){
if($user_token!==$session_token||!isset($session_token)){
dvwaMessagePush('CSRF token is incorrect');
dvwaRedirect($returnURL);
}
}

找准对应漏洞位置


利用burp的功能Generate CSRF PoC的功能生成HTML代码

利用短域名伪装

然后引诱管理员访问
这里结合XSS漏洞更好。

原文地址:https://www.cnblogs.com/lyxsalyd/p/12551493.html