最近腳本攻擊好象是很流行的,不過早在很久前就有這個了!腳本攻擊嚴格的說應該是一件藝術而不是漏洞!首先我們先要知道什麼是腳本。
腳本就是運行在網頁服務器上的文本程序,例如:ASP、PHP、CGI、JSP、ISAP等等,腳本的攻擊就是利用這些文件的設置和編寫時的錯誤或者疏忽不當,攻擊者就可以利用這些來達到自己攻擊目的,如果一個服務器存在這些漏洞,那麼它的淪陷也是時間的問題!
這些文本文件一般都是要結合數據庫來使用的,這些數據庫有ACCESS、MSSQL、MYSQL、Oracle等!腳本攻擊就是針對這些數據庫來配合腳本對一些變量的過濾不嚴的問題來達到得到用戶密碼等敏感信息,修改數據庫等目的!下面我就針對這些來分別舉例說明!
一、跨站腳本的攻擊
腳本的跨站(CSS/XSS)就是利用程序對用戶提交的變量審查不嚴,大多數是利用多媒體標籤,前段時間比較流行的flash跨站就是利用的這個,比如我在[FLASH=450,350][/FLASH]之間插入一個我自己作好的一個swf文件,swf文件裏我們用geturl里加上javascript:window.open
(‘http://blog.csdn.net/t673afa')就可以讓它打開我的博客,如果這裏是一個木馬網頁,呵呵……,你就等着中木馬吧!還有就是竊取用戶的cookie,例如我們利用也就是圖片的跨站,在這個裏面插入這段地址即可得到!如果將javascript過濾掉後怎麼辦?
好,我們在看看下面這段代碼:
[upload=swf]uploadImages/200310812145390577.swf?">[/upload]
怎麼樣,還是能將你的信息得到的,而且還不會彈出對話框!
另外在joekoe論壇程序裏還有一個這樣的問題,比如你發個帖子裏有[DIR][/DIR]就會彈出一個播放器的安裝程序,呵呵,如果是一個黑心的站
長利用這個來放馬,那後果就不用說了吧!
解決辦法:現在還沒有好的方法解決這個問題,你要做的就是將多媒體的標籤刪掉!
另附ASP和PHP的跨站代碼
php如下:
$info = getenv("QUERY_STRING"; if ($info) { $fp = fopen("test.txt","a"; fwrite($fp,$info."n"; fclose($fp); } ?>
sql注入是現在最熱門的,也是要闡述的重點!
1、ASP+ACCESS數據庫類型的SQL注射
現在的大多數網站是採用的這個組合,但是如果在ASP程序中沒有對用戶提交的變量充分過濾的話就可能導致管理員密碼被猜到,整個網站的信息就會暴漏無移~!
在大多數ASP站點中,我們並不知道其程序代碼,靠任何掃描器也不可能發現SQL injection漏洞,這時就要靠手工檢測了,由於我們執行SQL語句要用到單引號、分號、逗號、冒號和“--”,所以我們就在可修改的URL後加上以上符號,或在表單中的文本框加上這些符號!比如比較經典的金梅系統漏洞,在movie.aps中有怎麼一段代碼:
articleid=request("id")
set rs=server.createobject("adodb.recordset")
sql="update learning set hits=hits+1 where articleID="&articleid
--------------------------------------------------------------------------------
2、[轉帖]腳本安全和利用
rs.open sql,conn,1,3
sql="select * from learning where articleid="&articleid
rs.open sql,conn,1,1
articleid未經任何檢查便提交了,所以我們就可以自己構造一些SQL語句來提交上去!具體的利用過程請看拙作《SQL注入完整篇》和《SQL注入的補充》的動畫教程,這裏我就不在重複的說了!
3、ASP+MYSQL數據庫類型的利用
MYSQL數據庫簡單使用和強大的功能一直以來都是網管們的最愛!但是如果是ASP中沒有對變量過濾的話,我們就可以直接的到他的系統管理員權限!
比如動網論壇、BBSXP論壇的SQL版有好幾個文件都沒有對ID過濾,所以我們只要找到他的存在問題的頁面就可以了,
看這段代碼:rs.open "select * from news where newsid=" & cstr(request("newsid"),conn,1,1
比如我們提交:
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user xuehan ilovexuehan /add';--
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net localgroup administrators xuehan /add';--
看到了嗎?我們已經在系統中田加了一個xuehan 密碼是ilovexuehan的管理員帳號,以下的事情你就自己來做吧,呵呵,,,不用我來說了吧!!!
如果過濾了分號和單引號怎麼辦?呵呵,我們只要將我們的命令形式轉換一下,比如我們轉換成十六進制或者別的形式就可以繼續注入了,還有就是他如果過濾了xp_cmdshell 我們也可以解決,我們可以寫成xp'+'_cmd'+'shell形式,如果他將xp_cmdshell 擴展刪掉,我們可以通過xplog70.dll文件來恢復,呵呵……,具體自己查找下數據庫的知識,當然我們也可以用別的擴展!所以說SQL injection不僅僅是一門技術,
更要有靈活的頭腦和紮實的數據庫知識,特別是對SQL語言的掌握程度,如果不會SQL語言,你永遠都是生搬硬套,遇到障礙就過不去了!
4、PHP+MYSQL數據庫類型
PHP+MYSQL一直以來都認爲是最安全的組合,不過一些文件沒有過濾單引號、反斜線等,我們也可以來進行注入,不過在最新的php安裝程序裏的php.ini文件默認都是對這些過濾掉的,所以很大情況下我們是無法對進行注入的,不過也有許多牛人們可以饒過這個限制的!由於我的PHP
和MYSQL不是太懂,所以就不能來具體舉例來說明了,大家要是有興趣可以去找寫資料來看!
需要從根本上解決解決SQL Injection問題。還得從程序本身入手。過濾不能單純的過濾URL所提交的參數,在表單裏的也要過濾,value=後面的可以修改的數據,修改後可以提交到服務器,總之對所有的表單提交的數據以及用戶可能對HTML源文件進行修改來控制的所有來自Web服務器外部的數據進行過濾或轉換,對單引號、雙引號、分號“--”還有對數字鍵上面的所有特殊字符進行過濾,還有QUERY_STRING環境變量。在服務器上刪除一些危險的擴展存儲過程,比如xp_cmdshell。有條件裝個IDS更好,不敢說無堅不摧,但至少可以阻擋大部分攻擊者。
三、一些別的腳本攻擊
有些程序沒有對cookie或者session進行過濾和檢查,就造成了用戶可以非法修改提交頁面,自己提交修改數據,比如像海陽頂端網木馬的以前版本對session沒有過濾,我們就可以饒過密碼的驗證來到達真正的頁面,還有就是post提交的問題,像leadbbs的2.77版本就是沒有充分的過濾,我們就可以把管理員的密碼修改成自己的密碼!
還有一個腳本的攻擊例子,在Discuz! 2.0 論壇裏,因爲個人屬性缺乏必要的安全確認,所以很容易誘使其他會員自動修改其個人屬性內容,特別是註冊郵件信息,這關係着登陸密碼的修改。
比如我們發個帖子,寫上誘使會員點擊這個頁面後,就會自動修改該會員註冊的email地址爲crack.x.h2163.com。當然爲了隱蔽性,可以更新後自動關閉,然後調用另外一個假地址。
當然我們也可以利用這個漏洞進行欺騙、隱藏來誘惑管理員來修改我們爲管理員等等!大家自己去學習吧!
看了這麼多枯燥的東西下面我們再來看看另外一個好玩的漏洞,在百渡裏搜索”傳奇留言薄“找幾個免費的留言本進去,找到他的登陸頁面,我找到的一個是:
http://www.conanshome.com/guestbook/login.asp
我們再來看看下面這個連接:
http://www.conanshome.com/guestbook/admin.asp?adminid=admin
哈,怎麼我們就闖入後臺了!!!什麼原因,自己去琢磨吧!
後記:腳本的攻擊可以說是防不勝防的,我們所要做的只能是提高編寫程序的嚴謹態度,人爲的因素在腳本攻擊中是最重要的!
聲明:本文提到的漏洞都有一定的攻擊性,我們的目的是探討技術,搞破壞的是小人!所造成的一切後果於作者無關!由於作者水平有限,文
中難免有錯誤之處,歡迎指出!