PHP漏洞全解-客戶端腳本植入 |
發(fā)布時(shí)間: 2012/5/18 18:53:46 |
客戶端腳本植入(Script Insertion),是指將可以執(zhí)行的腳本插入到表單、圖片、動(dòng)畫(huà)或超鏈接文字等對(duì)象內(nèi)。當(dāng)用戶打開(kāi)這些對(duì)象后,攻擊者所植入的腳本就會(huì)被執(zhí)行,進(jìn)而開(kāi)始攻擊。 可以被用作腳本植入的HTML標(biāo)簽一般包括以下幾種: 1、<script>標(biāo)簽標(biāo)記的javascript和vbscript等頁(yè)面腳本程序。在<script>標(biāo)簽內(nèi)可以指定js程序代碼,也可以在src屬性內(nèi)指定js文件的URL路徑 2、<object>標(biāo)簽標(biāo)記的對(duì)象。這些對(duì)象是java applet、多媒體文件和ActiveX控件等。通常在data屬性內(nèi)指定對(duì)象的URL路徑 3、<embed>標(biāo)簽標(biāo)記的對(duì)象。這些對(duì)象是多媒體文件,例如:swf文件。通常在src屬性內(nèi)指定對(duì)象的URL路徑 4、<applet>標(biāo)簽標(biāo)記的對(duì)象。這些對(duì)象是java applet,通常在codebase屬性內(nèi)指定對(duì)象的URL路徑 5、<form>標(biāo)簽標(biāo)記的對(duì)象。通常在action屬性內(nèi)指定要處理表單數(shù)據(jù)的web應(yīng)用程序的URL路徑 客戶端腳本植入的攻擊步驟 1、攻擊者注冊(cè)普通用戶后登陸網(wǎng)站 2、打開(kāi)留言頁(yè)面,插入攻擊的js代碼 3、其他用戶登錄網(wǎng)站(包括管理員),瀏覽此留言的內(nèi)容 4、隱藏在留言內(nèi)容中的js代碼被執(zhí)行,攻擊成功
實(shí)例 數(shù)據(jù)庫(kù) CREATE TABLE `postmessage` ( `id` int(11) NOT NULL auto_increment, `subject` varchar(60) NOT NULL default ”, `name` varchar(40) NOT NULL default ”, `email` varchar(25) NOT NULL default ”, `question` mediumtext NOT NULL, `postdate` datetime NOT NULL default ’0000-00-00 00:00:00′, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT=’使用者的留言’ AUTO_INCREMENT=69 ; //add.php 插入留言 //list.php 留言列表 //show.php 顯示留言 提交下圖的留言
瀏覽此留言的時(shí)候會(huì)執(zhí)行js腳本 插入 <script>while(1){windows.open();}</script> 無(wú)限彈框 插入<script>location.href="http://www.sectop.com";</script> 跳轉(zhuǎn)釣魚(yú)頁(yè)面 或者使用其他自行構(gòu)造的js代碼進(jìn)行攻擊 防范的方法 一般使用htmlspecialchars函數(shù)來(lái)將特殊字符轉(zhuǎn)換成HTML編碼 函數(shù)原型 string htmlspecialchars (string string, int quote_style, string charset) string 是要編碼的字符串 quote_style 可選,值可為ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES,默認(rèn)值ENT_COMPAT,表示只轉(zhuǎn)換雙引號(hào)不轉(zhuǎn)換單引號(hào)。ENT_QUOTES,表示雙引號(hào)和單引號(hào)都要轉(zhuǎn)換。ENT_NOQUOTES,表示雙引號(hào)和單引號(hào)都不轉(zhuǎn)換 charset 可選,表示使用的字符集 函數(shù)會(huì)將下列特殊字符轉(zhuǎn)換成html編碼: & —-> & " —-> " ‘ —-> ‘ < —-> < > —-> > 把show.php的第98行改成 <?php echo htmlspecialchars(nl2br($row['question']), ENT_QUOTES); ?> 然后再查看插入js的漏洞頁(yè)面
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |