Rootkit XSS 之 Cookie
0x00 XSS Rootkit介紹
Rootkit概念: 一種特殊的惡意軟件
類型: 常見為木馬、後門等
特點: 隱蔽 持久控制
談到XSS,一般都是想到反射型、存儲型及dom xss,腦海中往往就是點擊鏈接然後彈窗的形式,這次學習的是ROORKIT XSS(持久化XSS),就是通過某些手段嵌入一些js代碼,從而獲取一個持久控制瀏覽器客戶端的“Rootkit”的一種攻擊。下面是Roorkit XSS的思維導圖
0x01 利用點-網站用戶信息
思維導圖中列舉了一些,如個性簽名、用戶名、昵稱等,主要就是網站本身展示的信息,這個其實跟存儲型XSS很類似
這塊就不詳細講了,挖掘方式跟存儲型XSS一樣
0x02 Cookie
有時我們會將信息保存在cookie中,使用document.cookit獲取信息再輸出在頁面中,
如果沒有做安全輸出的話,就會存在Rootkit XSS,因為cookie是保存在客戶端的,有失效時間,當然如果我們能控制添加,那就可以控制這個失效時間了
0x02.1 Cookie學習
Cookie是由服務器生成的,通過響應返回給客戶端,保存在某個目錄下,後面發往該服務器的請求都會攜帶此Cookie;
而Cookie是存儲什麽信息的呢,又是起到什麽作用的呢?
主要是HTTP協議是無狀態的,而業務是需要狀態的,要判斷此次請求是屬於誰的,才能記錄客戶端的行為和數據,換句話說就是維持會話的,當然也是可以存儲其他信息的。
Cookie的處理分為:
1)服務器向客戶端發送cookie
2)瀏覽器將cookie保存
3)之後每次http請求瀏覽器都會將cookie發送給服務器端
Cookie的主要構成如下:
name:一個唯一確定的cookie名稱。通常來講cookie的名稱是不區分大小寫的。
value:存儲在cookie中的字符串值。最好為cookie的name和value進行url編碼
domain:cookie對於哪個域是有效的。所有向該域發送的請求中都會包含這個cookie信息。這個值可以包含子域(如:
yq.aliyun.com),也可以不包含它(如:.aliyun.com,則對於aliyun.com的所有子域都有效).
path: 表示這個cookie影響到的路徑,瀏覽器跟會根據這項配置,像指定域中匹配的路徑發送cookie。
expires:失效時間,表示cookie何時應該被刪除的時間戳(也就是,何時應該停止向服務器發送這個cookie)。如果不設置這個時間戳,瀏覽器會在頁面關閉時即將刪除所有cookie;不過也可以自己設置刪除時間。這個值是GMT時間格式,如果客戶端和服務器端時間不一致,使用expires就會存在偏差。
max-age: 與expires作用相同,用來告訴瀏覽器此cookie多久過期(單位是秒),而不是一個固定的時間點。正常情況下,max-age的優先級高於expires。
HttpOnly:
告知瀏覽器不允許通過腳本document.cookie去更改這個值,同樣這個值在document.cookie中也不可見。但在http請求中仍然會攜帶這個cookie。註意這個值雖然在腳本中不可獲取,但仍然在瀏覽器安裝目錄中以文件形式存在。這項設置通常在服務器端設置。
secure: 安全標誌,指定後,只有在使用SSL鏈接時候才能發送到服務器,如果是http鏈接則不會傳遞該信息。就算設置了secure 屬性也並不代表他人不能看到你機器本地保存的 cookie 信息,所以不要把重要信息放cookie就對了服務器端設置
0x03 Cookie持久化XSS原理
Rootkit XSS主要是利用了下面兩點:
1、Cookie可以設置過期時間保存在客戶端,只要客戶端不主動清理cookie
2、發往該服務器的請求都會攜帶屬於此服務器的Cookie
如果前端使用cookie數據在頁面展示,可以利用XSS或者CSRF等漏洞成功設置惡意Cookie內容,就能夠構造可持續的XSS攻擊。
這裏寫了個簡單的業務:
<html>
<head>
<title>Rootkit XSS for Cookie</title>
</head>
<body>
<h1 id=‘id‘></h1>
</body>
<script type="text/javascript">
var user = location.hash.split("#")[1];
var cookies = document.cookie.split("; ");
for (index in cookies){
var cookie = cookies[index];
if(cookie.indexOf(user) == 0){
//cookie的名字hack加= 一共5個字符
var data = cookie.substring(5);
console.log(data);
document.getElementById("id").innerHTML=data;
break;
}
}
</script>
</html>
將cookie中的信息展示到<h1>標簽中
構造cookie如下:
訪問:http://localhost/rootkit.php#hack
彈窗了,只要不清理cookie,什麽時候訪問都會觸發這個XSS
參考資料:
https://blog.csdn.net/zhangquan_zone/article/details/77627899
https://www.jb51.net/article/86598.htm?pc
Rootkit XSS 之 Cookie