目錄
前言:
區別:
XSS篇!!!!!
漏洞簡介:
分類:
注入點:
繞過:
1.大小寫混合
2.復寫
3.標簽測驗
4.嘗試使用錯誤的事件查看過濾
5.編碼轉換
6.加入混淆字符
7.代替空格
8.引號的使用
CSRF篇!!!!!
漏洞簡介:
分類:
利用:
前言:
斷更的原因是期末考試壓身,本來我是想學CSRF,但是看到他和XSS很像,我就想到我XSS好像沒學太好,只是做了做題,那正好就兩個一起學對比一下,關于這兩種漏洞做題記錄,就再等等吧哈哈哈
區別:
這兩種漏洞是有區別的,依我來看,csrf可謂是假傳圣旨,利用盜取的賬號做一些事情,xss是騙皇上下圣旨,得到你的小餅干,然后得到登陸你賬號的權限或者記錄你鍵盤滑鼠的操作,換句話說,csrf是借用小餅干干壞事(本質上并沒有得到小餅干),而xss是盜取小餅干干壞事,
如果還不李姐的話,那就比喻成xss:城門已破,黑客帶著各種武器在城內為所欲為,為所欲為,而csrf:城門未破,黑客僅能通過借用戶的通行令牌進入城內做些小偷小摸,
XSS篇!!!!!
漏洞簡介:
XSS漏洞叫做跨站腳本攻擊,是指攻擊者向Web頁面插入Script代碼后,用戶瀏覽該頁時,嵌入其中的Web里面的Script代碼會被執行,從而達到攻擊用戶的目的,
XSS漏洞通常是通過php的輸出函式將JavaScript代碼輸出到HTML頁面中,通過用戶本地瀏覽器執行的,所以XSS漏洞關鍵就是尋找引數未被過濾的輸出函式
常見的輸出函式有: echo printf print print_r sprintf die var-dump var_export
分類:
xss攻擊分成三類:反射型,存盤型和DOM型,
反射型:反射型是不持久的,攻擊者需要先構造好攻擊鏈接,然后欺騙用戶自己去點擊鏈接觸發xss代碼(xss代碼并沒有存在于服務器中),一般容易出現在搜索頁面,(瀏覽器->后端->瀏覽器)
存盤型:存盤型顧名思義,是可以儲存在服務器中的持久化攻擊,一般出現在,個人資訊,發表文章和留言板等地方,如果過濾不嚴將這些代碼儲存到服務器中,每當有用戶訪問該頁面,該代碼都會被觸發執行,所以存盤型很危險,(瀏覽器->后端->資料庫->后端->瀏覽器)
DOM型:他為什么叫DOM型,因為它是基于檔案物件模型(Document Objeet Model,DOM)的漏洞,DOM是一個與平臺和編程語言無關的介面,它允許程式或腳本動態地訪問和更新檔案內容、結構和樣式,處理后的結果能夠成為頁面顯示的一部分,DOM中有很多物件,其中一些使用戶可以操縱的,如uRI,location,refelter等,客戶端的腳本程式可以通過DOM動態的檢查和修改頁面內容,它不依賴于提交資料到服務器端,而是從客戶端獲取DOM中的資料在本地執行,如果DOM中的資料沒有經過探戈的確認,就會產生DOM XSS漏洞,(URL->瀏覽器)
注入點:
| 注入點 | 示例 |
|---|---|
| HTML元素內容 | <div>內容用戶</div> |
| HTML元素屬性 | <input value="用戶內容"> |
| URL請求引數 | http://server.com?search=用戶內容 |
| CSS值 | color:用戶內容 |
| JavaScript | var name="用戶內容" |
案例:
某人搭建博客需要一個搜索功能,根據URL引數決定關鍵詞的內容,他很快寫好然后上線,代碼如下:
<input type="text" value="<%= getParameter("keyword") %>">
<button>搜索</button>
<div>
您搜索的關鍵詞是:<%= getParameter("keyword") %>
</div>
然后第二天,他就收到了一個神秘鏈接:http://xxx/search?keyword="><script>alert('XSS');</script>;他打開了這個鏈接,網頁彈出了“XSS”的對話框(請勿模仿,不明鏈接不要隨意打開),在這個攻擊案例中,服務器端決議請求引數keyword并拼接到HTML中回傳給瀏覽器,形成了這樣的的HTML:
<input type="text" value=""><script>alert('XSS');</script>">
<button>搜索</button>
<div>
您搜索的關鍵詞是:"><script>alert('XSS');</script>
</div>
這個彈窗并沒有什么實際的意義,但通過它我們知道輸入javascript代碼是可以被執行的,當我們輸入一些其他函式,比如document.cookie就可以成功盜取用戶的cookie資訊,或者讀取用戶瀏覽器資訊等,為我們進一步深入攻擊做鋪墊,聰明的程式員很快找到了解決方法,修復漏洞:
<input type="text" value="<%= escapeHTML(getParameter("keyword")) %>">
<button>搜索</button>
<div>
您搜索的關鍵詞是:<%= escapeHTML(getParameter("keyword")) %>
</div>
escapeHTML()按照如下規則進行轉義:
| 字符 | 轉義后的字符 |
|---|---|
| - | - |
| & | & |
| < | &1t; |
| > | > |
| " | " |
| ' | ' |
| / | / |
經過轉移函式的處理后,最終瀏覽器接收到的回應為:
<input type="text" value=""><script>alert('XSS');</script>">
<button>搜索</button>
<div>
您搜索的關鍵詞是:"><script>alert('XSS');</script>
</div>
這樣就安全了?當然不!!No system is safe!不久后又有人發來了鏈接http://xxx/?redirect_to=javascript:alert('XSS'),打開頁面后沒有彈出xss,這樣就安全了嘛?程式員查看源代碼,發現多了以下內容
<fuck href="<%= escapeHTML(getParameter("redirect_to")) %>">跳轉...</a>
雖然代碼不會立即執行,但是當用戶點擊fuck標簽時,瀏覽器就會彈出“XSS”,有些人會說這還不好解決?
// 禁止 URL 以 "javascript:" 開頭
xss = getParameter("redirect_to").startsWith('javascript:');
if (!xss) {
<fuck href="<%= escapeHTML(getParameter("redirect_to"))%>">
跳轉...
</fuck>
} else {
<fuck href="/404">
跳轉...
</fuck>
}
只要url的開頭不是JavaScript就安全了吧!沒想到神秘人又發來了http://xxx/?redirect_to=jAvascRipt:alert('XSS'),好吧,我服了……
繞過:
1.大小寫混合
<scRiPt>alert(1);</scrIPt>
2.復寫
<scr<script>ipt>alert(1)</scr<script>ipt>
3.<a>標簽測驗
<a href="javascript:alert(1)">Clickme</a>
4.嘗試使用錯誤的事件查看過濾
<a href="javascript:alert(1)" onclimbatree=alert(1)>ClickHere</a>
5.編碼轉換
8進制、10進制、16進制混合轉換,組合越多,繞過方法越妙(sao)
6.加入混淆字符
比如Tab符、換行符、回車符,繞過關鍵字過濾,比如:
<a hREf="j
avas
c
r
i
p
t:alert(/xss/)">click</a>
7.代替空格
行內注釋/**/可以代替空格
左斜線/可以代替空格
8.引號的使用
HTML 語言中對引號的使用不敏感,對于html可以使用雙引號、單引號,或者不使用引號
左斜線可以代替引號比如"xss"可以用/xss/代替
CSRF篇!!!!!
漏洞簡介:
CSRF(Cross-site request forgery),也被稱為:one click attack/session riding,中文名稱:跨站請求偽造,縮寫為:CSRF/XSRF,
簡單來講就是你打開這惡意網站,然后再打開別的網頁的時候你的小餅干會被盜取,舉個栗子,你向別人轉賬十塊錢如果是GET型傳參是?money=10&name=hacker(當然現實中不會是GET型……),惡意代碼得到了你的小餅干,然后可以通過改這個引數給他自己轉錢,比如改為?money=10000&name=jiangxiaohai這樣他就用你的賬戶給他轉了一萬塊
分類:
CSRF攻擊主要分為兩種型別GET型和POST型
利用:
檢測CSRF漏洞是一項比較繁瑣的作業,最簡單的方法就是抓取一個正常請求的數據包,去掉Referer欄位后再重新提交,如果該提交還有效,那么基本上可以確定存在CSRF漏洞,
burp里面有CSRF利用的工具
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394300.html
標籤:其他
下一篇:資訊安全技術真難啊
