cookie注入

0x00 什麼是cookie?

cookie是當前識別用戶,實現持久會話的最好的方式,有時也叫cookies,指某些網站爲了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。cookie最初是由網景公司開發的,現在所有的瀏覽器都支持。

“Cookie”是小量信息,由網絡服務器發送出來以存儲在網絡瀏覽器上,從而下次這位獨一無二的訪客又回到該網絡服務器時,可從該瀏覽器讀回此信息。這是很有用的,讓瀏覽器記住這位訪客的特定信息,如上次訪問的位置、花費的時間或用戶首選項(如樣式表)。Cookie 是個存儲在瀏覽器目錄的文本文件,當瀏覽器運行時,存儲在 RAM 中。一旦你從該網站或網絡服務器退出,Cookie 也可存儲在計算機的硬驅上。當訪客結束其瀏覽器對話時,即終止的所有 Cookie。

0x01 cookie的類型

(1)會話cookie

會話cookie是一種臨時cookie,它記錄了用戶訪問站點時的設置和偏好。用戶退出瀏覽器時,會話cookie就被刪除了。

(2)持久cookie

持久cookie的生存時間更長一點,他們存儲在硬盤上,瀏覽器退出,計算機重啓時他們依然存在。通常會用持久cookie維護某個用戶會週期性訪問的站點的配置文件或登錄名。

(3)會話cookie和持久cookie的區別

唯一的區別就是它們的過期時間。

0x02 cookie是如何工作的?

cookie就像服務器給用戶帖的“嗨,我叫xxx”的貼紙一樣。用戶訪問一個web站點時,這個web站點就可以讀取服務器貼在用戶身上的所有貼紙。

用戶首次訪問web站點時,web服務器對用戶一無所知。web服務器希望這個用戶會再次回來,所以想給這個用戶貼上一個獨有的cookie,這樣以後它就可以識別出這個用戶了。cookie中包含了一鍵值對形式的列表,並通過Set cookieSet cookis2HTTP響應(擴展)首部將其帖到用戶身上去。

cookie中可以包含任意信息,但他們通常只包含一個服務器爲了進行跟蹤而產生的獨特的識別碼。

0x03 如何判斷是否存在cookie注入?

(1)判斷參數是否通過cookie傳遞?

一般瀏覽器向服務器發起請求都是通過GETPOST來傳入參數的,但是也有通過cookie傳入的,要判斷是否存在cookie注入,首先就要判斷參數是不是通過cookie來傳入的。

通過下面一個實例來說明:

訪問http://120.203.13.75:8001/shownews.asp?id=171,可以看到參數id
在這裏插入圖片描述
去掉參數id,再次訪問,發現頁面不能正常訪問
在這裏插入圖片描述

這時候我們在瀏覽器地址欄中輸入下面的代碼,來設置cookie,其內容爲id=171

javascript:alert(document.cookie="id="+escape("171"));

在這裏插入圖片描述

成功彈窗,說明上面的代碼被成功執行,這時候再來訪問http://120.203.13.75:8001/shownews.asp,發現頁面又可以成功訪問了
在這裏插入圖片描述

通過上述過程,我們就可以確定參數是通過cookie傳入的

(2)判斷在cookie處是否存在注入?

由於edge沒有cookie編輯插件,所以我們在chrome中測試是否存在注入?
在這裏插入圖片描述

再次訪問,頁面顯示正常
在這裏插入圖片描述

測試是否存在注入,payload:id=171+order+by+10,頁面返回正常,
在這裏插入圖片描述

通過以上測試就可以得出結論:該站點存在cookie注入。

0x04 cookie注入漏洞產生原因

cookie注入一般見於aspaspx搭建的網站,這是因爲在aspaspx語言中,獲取參數是有不同的語言表達形式,比如:

GET型獲取參數:Request.QueryString['id']

POST型獲取參數:Request.Form['id']

還可以以Request['id']的表達形式來獲取參數,這時候獲取參數的順序是QueryStringFormCookiesServerVariables

所以說如果使用了Request['id']的形式,就有可能存在cookie注入。

0x05 cookie注入的利用條件

(1)程序對get和post方式提交的數據進行了過濾,但未對cookie提交的數據庫進行過濾。

(2)在條件1的基礎上,還需要程序對提交數據獲取方式是直接request(“xxx”)的方式,未指明使用request對象的具體方法進行獲取。

0x06 簡單示例

猜測是否存在admin

id=171+union+select+1,username,password,4,5,6,7,8,9,10+from+admin

在這裏插入圖片描述

發現頁面返回了admin表中,usernamepassword字段的值:adminb9a2a2b5dffb918c
在這裏插入圖片描述

得到管理員用戶名和密碼
在這裏插入圖片描述

登錄後臺,admin/welcome
在這裏插入圖片描述

成功拿到flag
在這裏插入圖片描述

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