環境搭建參考:https://www.b1uew01f.net/learnnotes/tips/281.htmlhtml
Ruby 是一種開源的面向對象程序設計的服務器端腳本語言,上世紀90年代由一位日本人設計。web
環境久遠,如今Ruby的更新使得一些內容不支持,搭建成功的環境也可能沒法復現漏洞shell
提示:不知道Ruby on Ralis環境運行方式的話,就沒法從根本解析漏洞,所以環境仍是須要搭建的ruby
上面文章也有些微小的錯誤,且文章久遠環境版本會出錯,我搭建的步驟以下:bash
RVM安裝環境服務器
sudo gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 13E2069D6956105BD0E739499BDB curl -L https://get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh
rvm -v #查看版本
RVM安裝Ruby環境app
rvm install 2.4.2
或是自動安裝curl
apt install ruby-full
設置默認版本編碼
rvm 2.4.2 --default
安裝bundlerurl
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ #gem切換可用的源
gem install bundler
安裝Rails
gem install rails
隨便新建一個文件夾進入,用如下命令建立一個應用
rails new hello_world_2
修改/hello_world_2文件夾下的/config/boot.rb文件,使得監聽在 0.0.0.0
啓動web server,訪問網頁報錯
解決辦法,修改目錄下Gemfile
而後
bundle update
訪問ip:12345正常出現的網頁:
建立名爲「welcome」的控制器和一個名爲「index」的動做
修改視圖爲任意網頁內容,訪問後可正常顯示
參考烏雲:https://wooyun.x10sec.org/static/drops/papers-12519.html
動態渲染路徑的問題,控制器中的代碼:
def show
render params[:template]
end
對比本身的控制器:
渲染視圖時,採用渲染 template
參數指定 view 模板,即會對目錄下相關文件進行讀取,像上面搭建視圖時,讀取的就是app/views/welcome/index.html.erb文件。
可是不一樣的是若是它沒法找到文件,則會在RAILS_ROOT/app/views
,RAILS_ROOT
和系統根目錄中搜索能訪問的文件。
所以咱們能夠讀取主機上的敏感目錄,如/etc/passwd
嘗試在新版本的Ralis上新建一個控制器和視圖文件
rails generate controller users dashboard
修改控制器
能正常訪問
可是漏洞已經不存在,只能在老版本中操做,實際上漏洞也屬於文件包含漏洞
此外當傳入的URL包含惡意代碼時能夠執行想要的命令
<%%>之間能夠寫入服務器端代碼
URL傳入編碼的參數
<%= \`ls\` %>
則會執行查看目錄下文件,同理最終能夠獲得shell