跨站腳本攻擊(XSS)初探(一)

起因:突然覺得不該把人生全壓在考研之上,畢竟萬一沒考上。。那就只能社招了,就當學點課外東西,休閒放鬆。

下面開始正題:

一.XSS由來:

我剛開始的時候很奇怪,爲什麼叫XSS,因爲跨站腳本攻擊英文是Cross Site Script,那不應該是CSS嗎,後來查了一下是爲了和三劍客(HTML,CSS,JS)裏的CSS相互區別,所以就叫XSS了。

顧名思義:在web安全裏,XSS通常是通過網頁標記語言(通常是HTML)注入修改了網頁,插入腳本,破壞原有正常的功能。可能是隻能搞自己當前的網頁,也可能是可以攻擊所有用戶的,舉個例子:比如一個能提交評論沒有做任何安全措施的網站,當一個用戶上傳了一個惡意的腳本作爲評論並且通過服務端,其他任何用戶都可以加載這個評論,在加載這個評論時候,就執行了這個惡意的腳本。導致所有用戶都。。你懂得。

二.前置技能:

1.紮實的JavaScript功底,還會一些像隱式轉換這種的,基本上是用最短的JS,實現最多的功能那種。

2.當然還要對Web間的各種數據交互,開發過程有一定的瞭解。

3.腦洞。腦洞一定要大。

三.XSS分類:

根據效果分大致可以分成兩類:

1.反射型:

說定義就不說了,舉個例子,就是需要把用戶的數據反射給瀏覽器,一般可以放一個釣魚網站讓別人來點,從而獲取一些數據。顯然這個東西是Non-persistent的。

其中有一個特殊的,經常被單獨討論,叫做基於DOM的XSS攻擊。

JS學的不錯的話應該知道什麼意思了,就是修改DOM節點的XSS攻擊。

2.存儲型:

這種顧名思義,就是把攻擊腳本存到服務器去,讓他人在無意中瀏覽這段腳本時候被攻擊到。這種顯然比上種來說是persistent的。

四.攻擊角度:

1.登陸憑證劫持攻擊:

原理

做過網站的應該都知道,我們與後臺交互一般都是使用一個憑證的,這個憑證,可能是cookie中保存的,可能是storage存的,也可能是放在header裏的一個token令牌,如果沒有作額外的校驗的話,外人一旦得到這個token,是可以直接繞開登陸這個過程進入用戶操作的。

具體

憑證具體在哪,在控制檯打出這個就有了,拿百度舉例。

怎麼用得到的cookie登陸

向請求的地方把cookie替換,然後會返回對應HTML代碼,將這個代碼複製到本地打開即可。

如何預防

常用做法用HttpOnly,還有的和IP綁定等等操作。

被上述預防之後還能這個劫持還有意義嗎

這個問題其實是肯定的。。矛盾在馬克思主義唯物辯證法下可是發展的動力啊。。就算我不能直接用這個憑證繞過登陸,我就不能直接用請求去操作嗎?用過postman做開發接口測試的人應該都懂。。只要構造一個適當的請求,還是可以進行一些操作的,比如舉個簡單的例子:

假設我已經獲得了一個人QQ郵箱的憑證,我可以先用自己的郵箱刪除一個郵件,在Chrome的控制檯的Network裏看到發請求的各種操作。

然後用postman還是自己寫JS還是別的什麼工具都無所謂,直接把憑證替換,構造對應的參數就可以刪掉了。

也許有人會說,那怎麼要刪的郵件id呢。。

這個其實也簡單。。正常登陸進去,郵件id也是前端發請求,後臺發給前端的,我們之間可以通過構造這個請求獲取到一系列的郵件id。。甚至可以用查看郵件詳情的接口,獲取到對應的郵件內容,從而竊取相關內容。

當然了,實際不是那麼簡單的這是理想化的狀態。

 

這篇就這麼多了,下次有機會繼續。

       Life shouldn't be at the mercy of fate.The more you lost,the more you will get.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章