Vulnhub之trollcave-v1-2

admin 2024年2月15日15:45:21Vulnhub之trollcave-v1-2已关闭评论29 views字数 3571阅读11分54秒阅读模式

0x01 环境介绍

Vulnhub之trollcave-v1-2

下载(镜像):https://download.vulnhub.com/trollcave/trollcave-v1-2.ova

刚打开虚拟机时,可能靶机没有网络,可以看这篇文章进行网络配置

https://www.ordshine.cn/security/labs/217.html

0x02 信息搜集

主机发现

arp-scan -l

Vulnhub之trollcave-v1-2

可以看到该靶机的ip地址为 192.168.80.146

端口扫描

nmap -A 192.168.80.146 -oA notes/nmap/trollcave/trollcave

Vulnhub之trollcave-v1-2

目录扫描

这里使用dirsearch

python dirsearch.py -u http://192.168.80.146/ -e* -r

-e* 表示扫描所有类型的网站脚本,也就是后缀名

-r 表示递归搜索

先访问一下80端口

Vulnhub之trollcave-v1-2

可以看到是有Home Log in Register功能

Vulnhub之trollcave-v1-2

在线用户 是个 Moderator

Vulnhub之trollcave-v1-2

还有king用户 是Superadmin

Vulnhub之trollcave-v1-2

因为发现查看不同用户时,页面的url不同,尝试更改

Vulnhub之trollcave-v1-2

应该是由17个用户,利用python写一个小脚本,把用户和级别统计一下

```

coding:utf-8

import requests
import re

def get_userinfo(id):
req = requests.get("http://192.168.80.146/users/%s" % id).text
# match

King's page

username = re.search('

(.?)\'s',req).group(1)
# match Superadmin
userlevel = re.search('\s\s(.
?)\s

',req).group(1)

return username,userlevel

for i in range(0,20):
try:
username,userlevel=(get_userinfo(i))
print(username+":"+userlevel)
except:
None
```

Vulnhub之trollcave-v1-2

但是注册功能已经关闭了

Vulnhub之trollcave-v1-2

Vulnhub之trollcave-v1-2

可以看到是有个/login 目录

指纹识别

Vulnhub之trollcave-v1-2

尝试登录

发现,如果账户存在时,会有不一样的提示信息

Vulnhub之trollcave-v1-2

但是如果账号不存在则是红色的警告提示

Vulnhub之trollcave-v1-2

编写一个python脚本将这些信息保存下来

```

coding:utf-8

import requests
import re

def get_userinfo(id):
req = requests.get("http://192.168.80.146/users/%s" % id).text
#

King's page

username = re.search("

(.?)\'s", req).group(1)
# username = re.search("

/s

/s

(.

?)'s page

", req).group(1)
return username

return req

def get_notice(username):
url = "http://192.168.80.146/login"
cookies = {"_thirtytwo_session": "aGRTeEI5bzRualFGbkJqeDhMblN2STBYMURNaVF4RjlyY0JrNGc3dW5ZSVljK01jenNjNTV0L3pMcGdobnBtY2JNWUx0MjkzUENocFVqSmVjYXhGMXdBc29tTmpqc3ZLNXlOOTZuYmI5MmNHRzdoMm03WG15a05YS3dabWM5N1Q0eFhhTjh4MjE0ZktUa3lBQThQeDA0WDYxUlRHTXBtT1drRkhWZmhuRmprSG9PS29vc09rT1RGZkszU250ZFNCaFNBREZDd1lFQjk1UHpZNVdneTNXLzhrRFFxT20rL3JBSGVhMnF1Nmx3az0tLUx1TUhWV3VJVnB6Z2o4UHRuRkl4SFE9PQ%3D%3D--eabac19d78d301cf7e5fa2639ee768fda9dbd5db"}
data={"authenticity_token": "1os5OczhcWEbVTl5Xf5ciS/ZEc2EreVeRAsH6d/JSg4pBL0Lg3bz9Kc2AvK/I8MmiEg0LparpPkHQysbXstY5Q==", "session[name]": username, "session

输入密码查看隐藏内容

": "123", "commit": "Log+in"}

req = requests.post(url=url, cookies=cookies, data=data).text
# match <div id='notice'>:)</div>
notice = re.search("<div id='notice'>(.*?)</div>", req).group(1)
return notice

print(get_notice("King"))

for i in range(0, 20):
try:
username = get_userinfo(i)
notice = get_notice(username)
print(username + ":" + notice)
except:
None

print(get_userinfo(1))

```

Vulnhub之trollcave-v1-2

在博客里面有个密码重置的文章,看一看如何可以密码重置从而修改掉其他账户的信息

Vulnhub之trollcave-v1-2

可以看出,网站的框架是rails,一个ruby语言的全栈框架,并且该网站已经部署了密码重置的功能

当然也可以使用指纹识别的工具

Vulnhub之trollcave-v1-2

0x03 漏洞发现

密码重置的介绍可以看这两篇文章,Rails —密码恢复 | 码农家园 (codenong.com)Ruby on Rails 教程 - 第 12 章 重设密码 (railstutorial-china.org)

Vulnhub之trollcave-v1-2

可以访问/password_resets/new路径重设密码

Vulnhub之trollcave-v1-2

我想要给King用户重置,但发现这里只可以给普通用户进行重置密码

那我们就给xer用户重置

Vulnhub之trollcave-v1-2

Vulnhub之trollcave-v1-2

必须超过十个字符,成功将xer用户密码重置成1111111111

登录成功后继续寻找突破口,发现有一个文件上传的功能

Vulnhub之trollcave-v1-2

尝试写入php一句话,上传失败,看来是不能通过文件上传突破了

欸,刚刚的那个修改链接呢,可以修改King的吗,试一下

Vulnhub之trollcave-v1-2

发现修改成功了

那这个用户可以文件上传么,尝试一下,看来还是不行

Vulnhub之trollcave-v1-2

发现有个控制面板,可以打开文件上传的功能,打开后再次上传一句话

这次成功上传,但是文件路径在哪里呢,根目录? 并不是

呃。。。,找一找

Vulnhub之trollcave-v1-2

这里可以删除文件,发现可以右键打开,那就打开看一看

Vulnhub之trollcave-v1-2

文件路径有了,访问一下

Vulnhub之trollcave-v1-2

感觉怪怪的,哦没有被解析,那有没有可以解析的目录呢

尝试上传的时候进行目录跳跃

Vulnhub之trollcave-v1-2

Vulnhub之trollcave-v1-2

Vulnhub之trollcave-v1-2

并没有被解析

好叭,想想别的办法

发现首页有一篇这样的文章

Vulnhub之trollcave-v1-2

提到了使用rails用户

前面发现存在任意目录上传的漏洞,那我们可以猜测是不是存在rails用户,通过上传authorized_keys 到rails用户的.ssh目录下,这样rails用户就可以免密码进行ssh登录

于是先在本地生成ssh key

ssh-keygen -f rails

Vulnhub之trollcave-v1-2

然后把公钥修改名称为authorized_keys

Vulnhub之trollcave-v1-2

进行ssh连接

```

ssh -i rails [email protected]

```

登录成功

Vulnhub之trollcave-v1-2

0x04 漏洞利用

版本是Ubantu 16.04.4 LTS

搜索一下这个版本是否有漏洞

发现 CVE-2017-16995

该漏洞存在于调用eBPF bpf(2)的Linux内核系统中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,导致任意内存读写问题, 低权限用户可使用此漏洞获得管理权限。

Vulnhub之trollcave-v1-2

0x05 权限提升

因为exp是C语言,但是本地靶机并没有gcc环境,那就本地编译,然后再传送的靶机上

gcc -o 44298.c exp

然后将exp传到靶机上,可以使用python开启一个http服务,然后wget下载到靶机上

然后添加执行权限 chmod + x

执行之后报错了

rails@trollcave:~$ ./exp
./exp: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./exp)

GLIBC_2.34' not found,经过百度,发现问题是glibc版本不对

Vulnhub之trollcave-v1-2

尝试了更新靶机的glibc版本,因为是这个压缩包是外网的,下载实在是太慢了,然后在本地下载的,又建立了http服务wget下载到靶机,安装发现权限不够,呃呃

冷静下来仔细想了想问题,是不是我kali的glibc版本太高,查了一下是2.35的,或许是呢,我又用了一个低版本的glibc2.31 的kali,重新编译了一下exp,成功执行,获得root权限

Vulnhub之trollcave-v1-2

查看flag.txt

Vulnhub之trollcave-v1-2

查看网络连接情况

Vulnhub之trollcave-v1-2

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日15:45:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Vulnhub之trollcave-v1-2https://cn-sec.com/archives/2187800.html