1. 程式人生 > >Rootkit XSS 之 Cookie

Rootkit XSS 之 Cookie

代碼 設置 script 允許 get 時間戳 www innerhtml user

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