強制找回GitLab管理員賬戶密碼的方法
為了開發運維工具,我們採用自行搭建的GitLab來管理所有程式碼。悲催的是最近忘記了管理員賬戶的密碼,而且沒有郵件伺服器,因此無法接收密碼找回的郵件,導致無法新建使用者或者專案,這樣一來,豈不就成為了一個”永不能擴充套件”的程式碼庫?難道只能重建?
重建可以解決問題,可是實在有些LOW,好在GitLab留下了可以修改管理員賬號密碼的方法,一定意義上可以認為就是一個後門。
嘗試各種可能的管理員賬戶密碼,無效,
嘗試使用忘記密碼,由於未配置郵件伺服器,所以顯示傳送了郵件,但實際沒有任何的作用。
接下來,嘗試使用”後門”。首先登入GitLab後臺伺服器,並且切換至git使用者,
登入GitLab的Rails控制檯(GitLab使用RoR語言開發),
接下來使用user = User.where(id: 1).first,定位到id=1的使用者,就是超級管理員,
我們可以從回顯中可以看出,id=1的使用者電子郵箱是[email protected],密碼加了密,還有關於這個使用者的所有屬性資訊,例如skype、linkedin、twitter、username等。
我們還可以使用User.find_by(email: ‘xxx’)來查詢指定郵箱的使用者,
接下來為這個使用者設定password,
儲存設定,可以猜出此時會觸發一個郵件傳送的JOB,告知所做變更,
再次登入,
確實可以了,
總結:
GitLab的任何使用者賬號資訊都可以從後臺Rails控制檯來查出來,包括所有的使用者屬性資訊,由於其使用的是PG資料庫,因此這些資訊從相應表中同樣可以檢索出來,一方面方便了這種密碼忘記的找回,另一方面實際是開了後門,任何訪問GitLab伺服器的使用者,都有方法查詢到甚至直接修改所有使用者的資訊,聽起來還是很可怕的一件事情,因此便捷性和安全性有時可能就是互相沖突的一對矛盾,此消彼長。