目錄
- 1. 前言
- 2. 示例
-
- 2.1. HttpOnly 安全過濾測試
- 2.2. HttpOnly 安全過濾繞過思路
- 2.3. Xsslabs 關卡代碼過濾繞過測試
-
- level 1 反射型
- level 2
- level 3
- level 4
- level 5
- level 6
- level 7
- level 8
- level 9
- level 10
- level 11
- level 12
- others
- 完言
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnL4cjYmRDOihTNyYzM4UjMiJGNxQjZ1AjNzYGZkZmY2kzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1. 前言
什麼是 HttpOnly:
如果您在 cookie 中設定了 HttpOnly 屬性,那麼通過 js 腳本将無法讀取到 cookie 資訊,這樣能有效的防止 XSS攻擊,具體一點的介紹請 google 進行搜尋
可以防止XSS攻擊(手法),不意味着防止跨站攻擊的漏洞,跨站語句仍舊可以執行
代碼類過濾:Xsslabs
HttpOnly 屬性過濾防讀取
2. 示例
2.1. HttpOnly 安全過濾測試
網站代碼添加配置:PHP設定COOKIE的HttpOnly屬性
設定參數
session.cookie_httponly
值為 1 (true)。在php.ini 配置中修改或者添加在網頁源碼中。
添加後js語句正常執行,但擷取的 cookie 參數值為空
2.2. HttpOnly 安全過濾繞過思路
擷取背景權限兩種方式:cookie擷取(HttpOnly)、直接賬密登入
跨站攻擊上繞過 httponly擷取賬密:
- 浏覽器未儲存帳号密碼:需要 xss 産生登入位址,利用表單劫持。(将資料包中的送出資料再另發一份至己方伺服器(僅限于登入框頁面功能))
- 浏覽器儲存帳号密碼:産生在背景的XSS,存儲型XSS如留言等,浏覽器讀取帳号密碼
讀取浏覽器儲存的明文賬密:使用跨站平台
讀取浏覽器記住的明文密碼
配置賬密的input标簽屬性:type、name、id,生成項目代碼配套的跨站注入語句
2.3. Xsslabs 關卡代碼過濾繞過測試
以靶場為例:xss-labs
XSS-labs通關
// 彈窗觸發即可通關,彈窗語句:
<script>alert(1)</script>
javascript:alert(1)
level 1 反射型
level 2
網頁上 p 标簽中的參數顯示被 htmlspecialchars 轉化成實體,檢視源碼發現輸入框會暫存送出值顯示,則input标簽中 value 屬性會有相關資料
level 3
添加 HTML事件屬性到輸入框 HTML 事件參考手冊
// value 屬性也被 htmlspecialchars 轉換成實體
<input name=keyword value='".htmlspecialchars($str)."'> // 網頁源碼
// HTML 添加滑鼠點選屬性到按鈕标簽頁。 事件屬性很多應該不局限于滑鼠點選
' οnclick='alert(1)
<input name=keyword value='' onclick='alert(1)'> // 拼接後
滑鼠被點選時觸發。滑鼠屬性很多,點選、一定、松開等
level 4
level 5
過濾關鍵字,将onclick過濾成o_nclik,同時也有大小寫過濾
直接添加新标簽卧槽:
// 閉合前導符号
" ><a href='javascript:alert(1)'>嗨嗨嗨</a>
level 6
- 甚多關鍵詞替換,
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例 - 但是沒進行大小寫替換
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例
level 7
關鍵詞被 str_replace 替換成空字元串,同檔案上傳時躲避關鍵字檢測,隻過濾一次可以雙寫
level 8
本關要求送出 url 連結
javascript:alert(1)
。但存在大小寫轉換以及關鍵詞替換,
借用編碼工具轉換成繞過PHP函數檢測的格式,但HTML或者url可以識别轉義的編碼。
迪師傅推薦的工具有問題:線上Unicode編碼解碼
level 9
檢視源碼,有檢測是否存在關鍵詞:http://
http://javascript:alert(1) 直接這樣寫會影響js執行,需要添加關鍵詞任其檢測,但不能影響js的執行
level 10
- 檢視網頁源碼并測試三個輸入框的關鍵詞:
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例 - 修改與添加輸入框的屬性
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例
level 11
- 從level10跳轉過來可以看到value的參數,是上關的url内容,判斷是讀取來源,即資料包中屬性
Referer
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例 - 明了讀取參數的位置則修改參數
" type="text" onclick="alert(1)" >//
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例
XSS : 跨站攻擊
CSRF :跨站請求僞造
網頁檢測所執行腳本的來源,以判斷執行腳本時從自身執行還是其他域名,防止跨站攻擊。是以需要對請求來源進行僞造
level 12
- 這裡明顯了 :接收浏覽器類型
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例 - 添加同上一關語句到該在的地方
第27天:WEB漏洞~XSS跨站~代碼及httponly繞過1. 前言2. 示例
others
資料送出和注入相似,get、post、cookie、資料包參數等方式接收,找尋可以上傳js語句的地方
完言
- 跨站漏洞是需要他人觸發的漏洞,由于此條件限制,視情況,可以好用可以無用
- 手工判定跨站漏洞:通過通路網站的資料包(不一定存在網站的url參數中),通過測試資料包中是否有資訊修改而觸發頁面代碼中是否有相關變動; 有代碼則通過源碼和前端分析