教你辨别kali扫描web漏洞的方法 变量覆盖与方法覆盖的区别

0x01近期财务审计了一波seacms , 官方网站:https://www.seacms.net。版本号是最新版的(财务审计时) , 和这些单通道架构不一样 , 这一cms财务审计起來很圆滑 , 可是过虑的就很干干瘪 , 印像中仿佛看到了三个过虑阻拦网页页面
360webscan(cmseasy也是有)一个 , 仿佛内置也有2个 , 丧尽天良 。但還是盘出去一个能够 绕开的引入 。
0x02 最先了解了下参数传递方法 。关键文档是/include/common.php , 许多文档都包括了这一文档 。看下这一文档 , 114-117行:
foreach(Array('_GET','_POST','_COOKIE') as $_request){ foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);}
GET、POST和Cookie的主要参数会历经一次自变量遮盖 , 随后把值$_v赋给相匹配的自变量$$_k , 这儿会对$_v开展解决 , 单引号啥的都是被转义 。这儿即然能够 开展自变量遮盖 , 换句话说像一些静态变量我还能够 操纵!!!觉得这儿难题挺大 。
接下去看20-26行:
foreach($_REQUEST as $_k=>$_v){ if( strlen($_k)>0 && m_eregi('^(cfg_|GLOBALS)',$_k) && !isset($_COOKIE[$_k]) ) { exit('Request var not allow!'); }}
这儿的编码在上一步开展自变量遮盖以前开展了一次过虑 , 不可以遮盖静态变量$GLOBALS和一些配备自变量(以$cfg_开始) 。可是过虑的是$_REQUEST , 换句话说只有过虑$_POST和$_GET 。这儿把想遮盖的自变量放进在Cookie里边就可以绕开 。例如下面的图 , cfg_runmode , cfg_paramset2个配备自变量的值都被取值为1 。

教你辨别kali扫描web漏洞的方法 变量覆盖与方法覆盖的区别

文章插图
0x03 上一步明确了构思 , 接下去找一波包括common.php的文档 。大约有这么多 , 忽视掉后台管理的 。

教你辨别kali扫描web漏洞的方法 变量覆盖与方法覆盖的区别

文章插图
这种文档在开展自变量遮盖后都是做一些整数金额化解决 , 例如

教你辨别kali扫描web漏洞的方法 变量覆盖与方法覆盖的区别

文章插图


教你辨别kali扫描web漏洞的方法 变量覆盖与方法覆盖的区别

文章插图
相近这类解决的地区非常多 。
0x04 第二处自变量遮盖 。
在/detail/index.php文件中 。echoContent($vId)方式中 , 第38行开展了sql语句拼凑 , $row=$dsql->GetOne("Select d.*,p.body as v_playdata,p.body1 as v_downdata,c.body as v_content From `sea_data` d left join `sea_playdata` p on p.v_id=d.v_id left join `sea_content` c on c.v_id=d.v_id where d.v_id='$vId'") , 这儿把$vId拼凑了进来 , 而且必须单引号合闭才能够 引入 。
if($GLOBALS['cfg_runmode']==2||$GLOBALS['cfg_paramset']==0){ $paras=str_replace(getfileSuffix(),'',$_SERVER['QUERY_STRING']); $id=intval($paras); $id = (isset($id) && is_numeric($id) ? $id : 0);}else{ $id=$$GLOBALS['cfg_paramid'];}if($id==0){ showmsg('主要参数遗失 , 请回到!', -1); exit;}echoContent($id);function echoContent($vId){ global $dsql,$cfg_iscache,$mainClassObj,$t1,$cfg_user; $row=$dsql->GetOne("Select d.*,p.body as v_playdata,p.body1 as v_downdata,c.body as v_content From `sea_data` d left join `sea_playdata` p on p.v_id=d.v_id left join `sea_content` c on c.v_id=d.v_id where d.v_id='$vId'"); if(!is_array($row)){ShowMsg("该內容已被删掉或是掩藏","../index.php",0,10000);exit();} $vType=$row['tid'];
在第23行 , 启用了echoContent($id)方式 。看看传进来的$id怎样赋值 。
第16行能够 见到 , $id=$$GLOBALS['cfg_paramid'] , 这儿开展了第二次自变量遮盖 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: