天天看點

Rootkit XSS

0x00 XSS Rootkit介紹

Rootkit概念: 一種特殊的惡意軟體

            類型: 常見為木馬、後門等

            特點: 隐蔽 持久控制

談到XSS,一般都是想到反射型、存儲型及dom xss,腦海中往往就是點選連結然後彈窗的形式,這次學習的是ROORKIT XSS(持久化XSS),就是通過某些手段嵌入一些js代碼,進而擷取一個持久控制浏覽器用戶端的“Rootkit”的一種攻擊。下面是Roorkit XSS的思維導圖

Rootkit 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就對了伺服器端設定

0x02.2 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如下:

Rootkit XSS

通路:http://localhost/rootkit.php#hack

Rootkit XSS

彈窗了,隻要不清理cookie,什麼時候通路都會觸發這個XSS

0x03 localStorage學習

localStorage是HTML5新加入的一特性,這個特性主要是用來作為本地存儲來使用的,解決了cookie存儲空間不足的問題(cookie中每條cookie的存儲空間為4k),localStorage中一般浏覽器支援的是5M大小,這個在不同的浏覽器中localStorage會有所不同。

0x03.1 浏覽器支援情況

if(window.localStorage){
            alert("Yes");//支援
}else{
            alert("No");//不支援
        }
      

 我們可以用上面js來判斷浏覽器是否支援localStorage特性

簡單點就打開浏覽器的控制台,輸入localStorage回車,看是否localStorage資訊,如下

Rootkit XSS

我這裡是部落格園的,這裡有儲存資訊,儲存的是目前編輯的部落格内容,看來編輯過程中的儲存就是使用localStorage了。

 0x03.2 localStorage使用

我們可以打開控制台的localStorage資訊,裡面會展示特性的方法,如下

Rootkit XSS

擷取:localStorage.getItem(key);若key不存在則傳回null

存儲:localStorage.setItem(key,value); key值存在則更新value

删除:localStorage.removeItem(key,value);

清空:localStorage.clear(); 清空本地localStorage

存儲

我們打開控制台,我們操作都在這裡(FireFox)

三種設定的方法:

localStorage.setItem('test','123');      
localStorage['test']='123';       
localStorage.test='123';       

資訊存儲在本地的,我們選中‘存儲’選項,選擇我們是在那個域下添加的

Rootkit XSS

資訊設定成功。

擷取

擷取也有三種方式:

localStorage.getItem('test');      
localStorage['test'];       
localStorage.test;       

輸出如下

Rootkit XSS

删除

localStorage.removeItem("test"); //删除某個鍵的資料
      

 test的本地存儲就被删除了

Rootkit XSS

清空

localStorage.clear();
      

 這個是清空localStorage的存儲資訊,前面添加的都沒有了。

Rootkit XSS

0x03.3 localStorage持久化XSS原理

上面學習了localStorage,知道資訊是存儲在本地的,而且如果不主動執行clear()時,是會一直保留的,退出浏覽器也不會清空。

這個就是我們的利用點了,因為這個才能形成Rootkit XSS。

利用條件:

1、站點前端有擷取使用localStorage的資料進行展示

2、存在反射型或者存儲型XSS,用于添加localStorage惡意資料

利用過程:

根據站點擷取localStorage的資料輸出點構造payload,通過反射或存儲XSS,将payload設定localStorage

這樣就可以構造一個Rootkit的XSS了。

參考資料:

https://blog.csdn.net/zhangquan_zone/article/details/77627899

https://www.jb51.net/article/86598.htm?pc

https://www.cnblogs.com/st-leslie/p/5617130.html