PHP漏洞全解-客戶端腳本植入 |
發(fā)布時間: 2012/5/18 18:53:46 |
客戶端腳本植入(Script Insertion),是指將可以執(zhí)行的腳本插入到表單、圖片、動畫或超鏈接文字等對象內。當用戶打開這些對象后,攻擊者所植入的腳本就會被執(zhí)行,進而開始攻擊。 可以被用作腳本植入的HTML標簽一般包括以下幾種: 1、<script>標簽標記的javascript和vbscript等頁面腳本程序。在<script>標簽內可以指定js程序代碼,也可以在src屬性內指定js文件的URL路徑 2、<object>標簽標記的對象。這些對象是java applet、多媒體文件和ActiveX控件等。通常在data屬性內指定對象的URL路徑 3、<embed>標簽標記的對象。這些對象是多媒體文件,例如:swf文件。通常在src屬性內指定對象的URL路徑 4、<applet>標簽標記的對象。這些對象是java applet,通常在codebase屬性內指定對象的URL路徑 5、<form>標簽標記的對象。通常在action屬性內指定要處理表單數(shù)據的web應用程序的URL路徑 客戶端腳本植入的攻擊步驟 1、攻擊者注冊普通用戶后登陸網站 2、打開留言頁面,插入攻擊的js代碼 3、其他用戶登錄網站(包括管理員),瀏覽此留言的內容 4、隱藏在留言內容中的js代碼被執(zhí)行,攻擊成功
實例 數(shù)據庫 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 顯示留言 提交下圖的留言
瀏覽此留言的時候會執(zhí)行js腳本 插入 <script>while(1){windows.open();}</script> 無限彈框 插入<script>location.href="http://www.sectop.com";</script> 跳轉釣魚頁面 或者使用其他自行構造的js代碼進行攻擊 防范的方法 一般使用htmlspecialchars函數(shù)來將特殊字符轉換成HTML編碼 函數(shù)原型 string htmlspecialchars (string string, int quote_style, string charset) string 是要編碼的字符串 quote_style 可選,值可為ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES,默認值ENT_COMPAT,表示只轉換雙引號不轉換單引號。ENT_QUOTES,表示雙引號和單引號都要轉換。ENT_NOQUOTES,表示雙引號和單引號都不轉換 charset 可選,表示使用的字符集 函數(shù)會將下列特殊字符轉換成html編碼: & —-> & " —-> " ‘ —-> ‘ < —-> < > —-> > 把show.php的第98行改成 <?php echo htmlspecialchars(nl2br($row['question']), ENT_QUOTES); ?> 然后再查看插入js的漏洞頁面
本文出自:億恩科技【www.allwellnessguide.com】 |