如何在7分钟内黑掉40家网站?
晚上在Hackernoon上看到這篇網站安全的文章,翻譯一下,分享給大家。?
作者:Georgios Konstantopoulos
翻譯有刪節和修改
我的一個朋友告訴我,他的網站上發現了一個XSS漏洞,他想讓我深入地看看。?
我向他申請了正式的許可,這樣我可以在這個網站和服務器上做完整的滲透測試。?
(碼農翻身注:這一步非常重要,注意法律風險)?
為了保護隱私,我用http://example.com來代替我朋友的網站?
端口掃描
第一步就是盡可能多地了解你的“敵人”,并且盡量不要驚動它們。?
這時候,我開始啟動計時器計時。?
這次掃描花了大概兩分鐘。?
掃描發現了很多開放的端口!通過FTP(port 21)和SMB (ports 139/445),我們可以猜出這個服務器是用于保存文件和共享文件的。?
與此同時它還是一個Web服務器(port 80/443和相應的代理 8080/8081)?
如果上面的信息不夠,我可能還會做一個UDP 端口的掃描。
現在唯一允許我們與之交互的端口(不需要登錄服務器)是80/443。?
沒有浪費一點兒時間,我啟動了gobuster來探索這個Web服務器上讓我“感興趣”的文件。與此同時,我也通過手工的方式開始挖掘。?
$gobuster -u http://example.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 /admin ?/login?
我發現/admin這個路徑對應這“管理工具”,通過認證的用戶可以修改這個web服務器上的東西,由于我沒有用戶名和密碼,在這里走不下去了。(劇透:gobuster也沒有發現什么有價值的東西)?
已經過去三分鐘了,還沒有發現有用的東西。?
獲取Webshell
瀏覽這個網站的時候,它需要我登錄,沒問題,用一個假的e-mail(http://www.fakemailgenerator.com/)創建一個賬戶,點擊確認郵件,幾秒鐘后就登錄了。?
這個網站對我的登錄表示歡迎,提示我到個人主頁去修改頭像,很貼心嘛!
網站看起來像是自己開發的,要不要“試試不受限的文件上傳”漏洞??
我迅速在本機生成了一個文件:
然后試著把它當作圖像文件上傳, 成功了!?
為了避免這個漏洞,上傳者一定要對上傳的文件做處理,檢查文件擴展名,把它替換成.jpeg, .jpg,這樣可以避免遠程代碼執行。?
當然,我上傳的文件沒有縮略圖:?
通過“復制圖片地址”的功能,我得到了這個URL:
http://www.example.com/admin/ftp/objects/XXXXXXXXXXXX.php?
在瀏覽器中運行一下:
哈哈,看起來我們已經有一個可以工作的webshell了。?
這個web服務器居然運行著Perl腳本,我從我最喜歡的備忘錄中(
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet)找了一個reverse shell 腳本,設置好了IP和端口,這樣我就獲得了一個低權限的shell ——抱歉,沒有屏幕截圖。?
大約5分鐘以后,我獲得了一個低權限的shell。
拿下數據庫
讓我十分驚奇的是,這個服務器不僅host一個web站點,而是40個!
$ ls /var/www access.log site1/ site2/ site3/ {... 更多的sites} ?
你也許猜到了,我具備這些web站點目錄讀的權限,可以讀任意的后端的代碼。?
我把注意力集中到example.com的代碼中,很明顯,在cgi-admin/pages目錄中,所有的perl腳本都是用root來連接MySQL數據庫的,密碼也是明文存放的, 我們假設它們是 root:pwned42?
執行這條命令:?
mysql -u root -p -h localhost victimdbname?
Password: pwned42?
我就以root權限登錄了數據庫。?
僅僅7分鐘, 我具備了對35個數據庫完全的讀寫權限!
在這里,我有道德義務停下來,潛在的損害非常巨大。一個攻擊者可以做這些事情:?
-
dump這些數據庫,這將導致35家公司的數據泄露。?
-
刪除所有數據庫。?
-
使用cronjob在apache里留個后門?
該休息一下了,停止計時器。?
還會有什么問題呢??
我告訴了朋友我的這些發現,獲得了進一步挖掘的許可。?
在尋找將我的權限升級到威力巨大的root之前,我先看看我這個有限權力的用戶能訪問哪些有趣的文件。?
此時我想起來那個開放的SMB 端口,這意味著系統中應該有個文件夾在用戶之間共享,經過一番探索,我找到了這個目錄/home/samba/secured,里邊的內容如下(請原諒為了隱私,我隱去了大量信息)?
在這些目錄中發現了大量的屬于公司用戶的敏感數據,包括:?
-
.psd/.ai files (設計師應該知道這些文件多重要,這是它們的工作成果)?
-
Cookie sqlite files?
-
發票?
-
盜版的電子書 (我看到這些的時候不由得笑了,誰說老外不看盜版?)?
-
Wifi的密碼?
攻擊者就可以做這些事情:
-
到這些公司辦公室的外邊“露營”, 登錄公司的內網,然后做各種各樣有趣的、能在內網實施的攻擊。?
-
把這些敏感數據泄露出去。?
這些目錄花費了我不少時間,這個漏洞的后果非常嚴重。
最后一擊?
用apache這個賬戶在四周看了很久以后,我決定是時候去釣個大魚了:獲取root權限。?
通常,操作系統是打過補丁的,只有那些配置錯誤的服務才有可能給你想要的root權限, 但是在現實的世界中,人們很少給操作系統打補丁!
這個服務器運行的是什么操作系統呢??
內核是什么版本??
看起來這是一個老版本!這個版本有個漏洞,叫Dirty Cow,可以提升用戶的訪問權限。
網上有篇博客講述了如何測試內核是否有這個漏洞,并且提供了一個腳本。
執行這個腳本,root最終到手!?
游戲結束了?
我立刻給朋友寫了一封郵件,全面地告訴他這些滲透測試的細節和每一步的可能影響,然后結束了當晚的活動。?
一個攻擊者可以做的事情:
-
讀/寫服務器上所有的文件?
-
植入一個持久的后門?
-
安裝惡意軟件,并且傳播到內網
-
安裝勒索軟件(劫持35家公司的數據庫和相關數據可不是一件小事)?
-
把這個服務器當作礦機?
-
把服務器當作僵尸網絡的一部分?
-
把服務器當作C2C服務器?
-
… (發揮你的想象力)?
-
rm -rf / (不是在開玩笑)?
第二天,朋友聯系了我,說他聯系了負責那個服務器的公司,那個文件上傳的漏洞已經fix了。??
總結?
-
有文件上傳漏洞的Web應用可能導致黑客獲得一個低權限的shell?
--要仔細設計文件上傳組件
-
明文的密碼,讓我們可以讀寫35個Mysql 數據庫
--所有的數據庫都用同一種密碼可不是什么好事情
-
有很多的敏感數據可以閱讀
--要小心地給用戶分配文件訪問權限,遵循最小權限原則? ?
-
內核的漏洞讓我們獲得了root權限,
--記住給操作系統打補丁
?
原文地址:https://hackernoon.com/how-i-hacked-40-websites-in-7-minutes-5b4c28bc8824
總結
以上是生活随笔為你收集整理的如何在7分钟内黑掉40家网站?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女儿问了我一个问题:什么是抽象?
- 下一篇: 学会这几招,你也可以用 Redis 做实