為了開發運維工具,我們采用自行搭建的GitLab來管理所有代碼。悲催的是最近忘記了管理員賬戶的密碼,而且沒有郵件服務器,因此無法接收密碼找回的郵件,導致無法新建用戶或者項目,這樣一來,豈不就成為了一個”永不能擴展”的代碼庫?難道只能重建?
重建可以解決問題,可是實在有些LOW,好在GitLab留下了可以修改管理員賬號密碼的方法,一定意義上可以認為就是一個后門。
嘗試各種可能的管理員賬戶密碼,無效,
嘗試使用忘記密碼,由於未配置郵件服務器,所以顯示發送了郵件,但實際沒有任何的作用。
接下來,嘗試使用”后門”。首先登錄GitLab后台服務器,並且切換至git用戶,
登錄GitLab的Rails控制台(GitLab使用RoR語言開發),
接下來使用user = User.where(id: 1).first,定位到id=1的用戶,就是超級管理員,
我們可以從回顯中可以看出,id=1的用戶電子郵箱是admin@example.com,密碼加了密,還有關於這個用戶的所有屬性信息,例如skype、linkedin、twitter、username等。
我們還可以使用User.find_by(email: ‘xxx’)來查找指定郵箱的用戶,
接下來為這個用戶設置password,
保存設置,可以猜出此時會觸發一個郵件發送的JOB,告知所做變更,
再次登錄,
確實可以了,
總結:
GitLab的任何用戶賬號信息都可以從后台Rails控制台來查出來,包括所有的用戶屬性信息,由於其使用的是PG數據庫,因此這些信息從相應表中同樣可以檢索出來,一方面方便了這種密碼忘記的找回,另一方面實際是開了后門,任何訪問GitLab服務器的用戶,都有方法查詢到甚至直接修改所有用戶的信息,聽起來還是很可怕的一件事情,因此便捷性和安全性有時可能就是互相沖突的一對矛盾,此消彼長。
————————————————
版權聲明:本文為CSDN博主「bisal」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/bisal/article/details/54672184