iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
Security

【CTF衝衝衝 - Web篇】系列 第 6

【第六天 - vim 備份洩漏】

Q1. vim 是什麼?

  • 簡單來說, vim 是一種純文字編輯器,是從 vi 發展出的增強版,而 vi 是從 ex 發展出的視覺化文字編輯器, ex 又是從 ed 發展出的增強版。 以上這些工具都是在 Unix / Unix-Like 作業系統上的純文字編輯器。

  • 早期,當人們還在用電傳打字機作為電腦的終端機時,由於無法即時更新畫面,因此皆是使用如 ex / ed 的 line-oriented editor,一次編輯一行,並且只有在使用者下指令時才會將該行印出。

  • 當人們陸續開始使用顯示器作為終端機時,由於畫面可以即時更新了,line-oriented editor 的使用體驗不在令人滿意, vi 也隨之誕生。 vi 延伸了 ex 的功能,但同時實現了視覺化編輯的功能,或稱為 screen-oriented editor。 vi 能夠在螢幕上呈現文本,並透過游標在文本中自由移動,選擇欲修改的位置。 vi 大幅提升了編輯文本的體驗,成為諸多 Unix / Unix-Like 發行版上預設的純文字編輯器。

  • 最後, Vi IMproved (vim) 是 vi 的增強版,增加了更多強大的功能,例如 auto-completion 、 syntax highlight 等等利於程式開發的功能,還能夠撰寫 plugin 進一步擴充功能,至今仍是最多工程師使用的純文字編輯器之一。

Q2. 為什麼會有 vim 備份檔洩漏的問題?

  • 當 user 在使用 vim 編輯文件時,在編輯中,會在當前目錄下依序生成備份文件 .swp.swo.swn 的隱藏檔案,在 vim 意外中斷時,這些備份檔案可以用於還原尚未儲存的變更。
    • 編輯 flag 檔案時,第一次會生成 .flag.swp 的備份檔案,若 .flag.swp 存在(例如已經有一次意外中斷,或者有另一外使用者已開啟此檔案),則會生成 .flag.swo,第三次則會產生 .flag.swn
    • 當工程師想將某個備份檔還原時,可以使用 vim -r <.檔名.要的備份檔> 的指令
  • 由於備份檔案為隱藏檔,工程師可能在未注意備份檔存在的情況下,將其公開於 Web Server 上,或是隨著資料夾打包傳送給他人。
    • 生成的備份檔預設權限可能會隨著設定、版本有所差異,不過我實作時,預設權限為 644,此權限可以於網頁端被駭客所讀取

Q3. vim 洩漏類型

  • 將 FLAG 儲存於 <.檔案.swp> 備份檔案中 (如 Lab 1)
    • ls -al
      • 查看目錄結構
    • cat <.檔名.目標備份檔>
      • 讀取目標檔案

Lab 1

  • 題目環境佈置
# Create Folder
sudo mkdir /var/www/html/vim && cd /var/www/html/vim

# Take ownership
sudo chown -R "$(whoami)" .

# Edit File with VIM
vim index.php

https://ithelp.ithome.com.tw/upload/images/20210920/20140592VgWMXGijkv.png

  • 在 vim 中:
# Save Empty file
:w

# Enter Insert Mode
i

# Type flag
FLAG{caec56b46ae54987465ee1231dfff}

# Enter Normal Mode
<ESC>

# Wait a minute (wait for vim write the modification into swap file)

# Suspend vim
<Ctrl>z
  • 回到 bash
# Kill vim
kill -9 %

# 有時候可能因為版本、設定的原因,備份檔可能權限為600,也有可能是644
# 讓網頁可以讀取的權限,至少要讓 other 擁有 r 的權限
chmod o+r .index.php.swp

https://ithelp.ithome.com.tw/upload/images/20210920/201405922WWPrIOnnF.png

解題

  • 存取 .index.php.swp ,由於非純文字檔,瀏覽器一般會直接下載下來。
    https://ithelp.ithome.com.tw/upload/images/20210920/20140592oi1dueZEX5.png

  • 使用 vim -r 還原檔案
    https://ithelp.ithome.com.tw/upload/images/20210920/20140592Z5QW4HbO4x.png

https://ithelp.ithome.com.tw/upload/images/20210920/20140592WkrZet5a7t.png

https://ithelp.ithome.com.tw/upload/images/20210920/20140592gHKPJ8Od0B.png


上一篇
【第五天 - Gedit 備份洩漏】
下一篇
【第七天 - 常見文件洩漏】
系列文
【CTF衝衝衝 - Web篇】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言