Hackthebox - Shared
Shared
10.10.11.172
nmap
1 | # 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 |
域名
shared.htb
加到 hosts
PrestaShop
版本号
PrestaShop 1.7
数据库
admin@shared.htb:$2y$10$weantheqSfuC7PO4L/tlKefZ59DBBXR7cz5jixaYKyvv3PlPw0xgS
可以破解一下管理员的 hash,可能是通用密码。
https://www.prestashop.com/forums/topic/1016838-prestashop-176-customer-login-password-encryption/
看起来是 bcrypt,hashcat要跑好久
配置文件
/app/config/parameters.php
Tk#cbND_CWrQ9h 尝试了一下,看起来并不是通用密码。
checkout 旁站
在尝试结算订单时,跳转到了 checkout.shared.htb,添加到 Hosts。
sql 注入
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 可搜到
fc895d4eddc2fc12f995e18c865cf273:Soleil101
于是有了凭据
james_mason:Soleil101
成功通过该凭据登录 ssh。
一些凭据信息
james_mason:Soleil101
从 checkout 旁站注入得到
数据库
pshop:Tk#cbND_CWrQ9h
从 prestashop 配置文件中得到
Redis
F2WHqJUz2WEz=Gqq 无用户名
密码从 /usr/local/bin/redis_connector_dev 中逆向得到
linpeas
一些 CVE
实在没办法了再说吧
cron
cron 有东西
没权限,一会 pspy 看看
nginx 配置
可以看到站点路径,一会去看看源码里面有没有什么敏感的配置。
ipython
这里没有思路了,去看了下 ippsec。才发现没去搜 ipython 的版本和 CVE。
这里 ipython 的版本是 8.0.0,搜了一下发现 CVE-2022-21699 https://github.com/advisories/GHSA-pq7m-3gw7-gq5x
只要在 ipython 运行的目录可写就可以任意执行代码,所以还要找一下 cron 运行 ipython 的目录。
看起来 pspy 不太行,这下不得不试试 linpeas 的进程探测了。在关闭了 fast mode 后,linpeas 给出了答案
/opt/scripts_review 正是 james_mason 用户所在组 developer 的可写目录,那么接下来
拿到了 dan_smith 的 shell,由于这里定时 pkill ipython 进程,shell 不稳定,而且 /home/dan_smith/.ssh 里存了私钥,存下来连 ssh。
pspy
ipython 或许可以入手
组可写目录
dan_smith fuzz
运行看看
输出了一些 redis 的信息
golang 写的,下回来逆一下
这里找到的密码 F2WHqJUz2WEz=GqqGC 试了一下,结果不对,要去掉后面的 GC。
这里其实还有不用的逆向的办法,那就是本地 6379 起一个 nc,然后运行就会把密码吐出来。
于是密码 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。那么上传编译加载模块之后
芜!
这个模块还贴心的附带了 shell 反弹功能
爱了爱了
后记
最近挺忙的,这台机器断断续续地做了好久。。
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 可以给出更多有用的信息。