天天看點

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

前言

大家好,我是Leon-pi,可以叫我pipi,新人報道,是個菜鳥,由于個人也是在學習過程中,文章寫的也不是面面俱到,盡善盡美,請見諒。

XSS 之盲打

場景:

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

一個留言闆,隻有背景才能看見前端存在的内容,從前端無法确定是否存在XSS漏洞,假設存在XSS漏洞,直接往裡輸入 XSS 代碼,稱為盲打。

不論3721!,直接往裡面插入XSS代碼,然後等待,可能會有驚喜!!

被動等待.....(當背景管理者登陸時就可能被攻擊)

1 構造payload

<script>alert("attack!")</script>           

複制

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

送出後,模拟管理者登入背景

2 模拟管理者登入背景

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

存在XSS漏洞,并且也是存儲型XSS

XSS 之過濾

1 随便輸入内容,然後輸入特殊字元('"<>)

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義
pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

2 輸入 payload

<script>alert("attack!")</script>           

複制

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

什麼也沒發生,應該是過濾掉一些内容

3 嘗試繞過

改動大小寫

<SCRIPT>alert("attack!")</SCRIPT>           

複制

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

img 中 onerror事件

<img src="x" onerror="alert('error!')">           

複制

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

說明隻是過濾了大小寫,當然XSS繞過姿勢不止一種,師傅們自行擴充

XSS 之htmlspecialchars

htmlspecialchars函數概覽

調用該函數進行轉換的字元如下

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

函數轉換的類型

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

如果使用該函數對使用者的輸入進行處理,而保持預設轉換類型可能會出現 XSS漏洞

(僅編碼雙引号)

1 輸入

'"<>111

檢視源碼

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義
pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

從源代碼可以看出,單引号未進行過濾,隻是過濾了雙引号

2 輸入 payload

#' onclick='alert("aaa")           

複制

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義
pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

XSS 之href輸出

javascript 僞協定

文法

javascript:someScript;
someScript 是一個或多個使用 ; 分隔的 JavaScript 語句           

複制

執行個體

<a href="javascript:alert('JavaScript Link!');">JavaScript Link</a>           

複制

XSS href 輸出

  • 輸出在 a 标簽的 href 屬性中,可以使用 JavaScript 協定來執行js
  • 防禦:隻允許http,https,其次再進行 htmlspecialchars 處理

1 根據提示輸入網址,檢視源碼

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義
pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

2 點選連結跳轉至百度

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

2 使用 js協定 構造payload

javascript:alert("aaa")           

複制

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義
pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

XSS之 js輸出

1 輸入aaa,檢視源碼

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

這裡發現輸入的内容被放入到了js中

2 構造payload

';alert("attack xss")</script>           

複制

pikachu 靶場之XSS(跨站腳本) -下篇XSS 之href輸出 XSS之 js輸出 XSS 防範:輸入做過濾,輸出做轉義

XSS 防範:輸入做過濾,輸出做轉義

結語:

本人菜弟弟一個,大佬勿噴,謝謝