swarm是乙個docker的集群管理工具,它相容大部分的docker命令,會將請求**給特定的docker。
官方文件說,別把2375埠暴露在外網,但很多時候大家都會選擇預設安裝,即把埠繫結在 0.0.0.0:2375,而它自身又缺乏有效的驗證機制,所以一旦出現在外網,那就是見光死。
直入主題,對於開放的2375埠,直接執行docker run -h tcp://host:2375 command
就可以執行任意docker命令,但我們的目標肯定不是拿到乙個容器的許可權這麼簡單,直入宿主機才有意思,所以,需要了解一下下面這些命令:
互動型任務:
docker exec -i
-t cc /bin/bash
資料夾對映(很重要):
docker run -v /:/tmp
$repotags
這裡的意思是建立乙個新容器,然後將宿主機器的根目錄與新容器的/tmp目錄對映,後面那個引數是你想用來建立新容器的映象。映象名怎麼獲取?http://host:2375/images/json
知道上面兩個命令以後,我們綜合一下:
經過剛才的命令,其實直接訪問/usr
就已經可以訪問宿主機器的檔案系統了,但當你執行類似 ifconfig 這種命令的時候,還是在容器的環境裡,所以很多時候不夠方便,而且如果服務是以root許可權執行的話,你得到的shell也是root許可權,這個時候我們就可以利用這個許可權做一些事了,最方便的留後門方式,就是配置乙個ssh免密登入:
進到/root
目錄,找到.ssh
資料夾,如果沒有,那說明當前的使用者還沒有生成公私鑰,ssh-keygen –t rsa
生成一下,然後將自己的公鑰新增到該.ssh
下的authorized_keys
檔案中。
如果此時你嘗試用root遠端ssh登入,會報錯:
host key verification failed.
因為ssh的預設配置是不允許root登入的,所以需要改一下:
vim /etc/ssh/sshd_config
然後設定permitrootlogin yes
linux 發行版不同可能會出現vim等編輯器控制混亂的問題,怎麼辦?笨辦法複製全部內容,修改其中的部分配置,然後再 echo >回去。
這種輕鬆的拿shell簡直不能更爽。
參考文件:
docker engine api v1.29 reference
深入淺出swarm
docker remote api未授權訪問漏洞分析和利用
docker遠端訪問get(root)shell姿勢
從軟體保護到軟體授權
軟體保護的概念是站在開發商的角度出發的,它強調的是軟體加密和不被盜版。常用的軟體保護方式有軟體加密和硬體加密兩種。軟體授權的概念則是同時考慮了開發商和終端使用者兩方面的感受而提出的。授權 在名字上弱化了 保護 給終端使用者帶來的對立情緒,強調了軟體的按許可使用。軟體保護的概念是站在開發商的角度出發的...
Docker 從容器中拷貝檔案到宿主機中
現在公司用docker,有時候需要從容器中拷貝檔案出來。先上語法 docker cp options container id src path dest path 語法是這麼個寫法,在實際的操作中,在寫容器內的路徑的時候並不能自動補全,所以實際上還需要還要先進入到容器才行。下面就拿個例項來講下 1...
Git中git push到遠端倉庫不被授權的問題
使用git過程中,我們可能遇到這樣的問題,在git push到github遠端倉庫但失敗了,提示你說這次push不被授權。原因 沒有匹配正確ssh公鑰金鑰對。要麼是你沒有生成對應的公鑰金鑰對並將公鑰部署在github上的對應專案,要麼就是生成了金鑰對並將公鑰部署在了github上之後,你的本地目錄沒...