Minuv2靶机渗透实战

Minuv2靶机wp

前言

  这个靶机是暑假中间的时候找到的,做下来主要的感觉就是还是偏信息收集这块,基本上没有什么需要高技巧的操作,然而我还是,,,果然还是缺乏经验。

环境以及工具介绍

  虚拟机parallers,本机macOS ip 10.211.55.2,kali攻击机 ip 10.211.55.4,靶机 ip 10.211.55.14,kali和靶机均设置为共享网络模式。
抓包工具bp,浏览器firefox。

##流程介绍

1.信息收集

  • 首先是要找到靶机的ip和开放的端口,这里直接用nmap去扫。
    1
    2
    nmap -v -sP 10.211.55.0/24
    nmap -A 10.211.55.14
    10.211.55.2是本机,10.211.55.14应该就是靶机,然后把所有脚本跑一遍,发现开启了两个口一个是22另外一个是3306。
    image.png
  • linux版本3以上
  • 22毫无疑问是ssh服务,然而这个3306端口似乎并不是mysql服务,我试试直接访问。
    image.png
    看起来是web服务。
  • 拿dirsearch跑下看看有什么发现。发现上传页面upload.html,要求上传svg文件。猜测一波可能有文件上传漏洞。
  • 看了下http包的header。发现有 X-Powered-By
    Kemal
    这串数据,查找治疗后后发现是一个国外的轻量级web框架。
    不是php开发的。https://github.com/kemalcr/kemal

2.试图获取webshell

  • 随便找了张图片转成了svg上传抓包,发现svg是由xml构成的,临时打算试了下xml的实体解析漏洞,尝试读取/etc/passwd。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

    <svg version="1.0" xmlns="http://www.w3.org/2000/svg"
    width="1305.600000pt" height="1094.400000pt" viewBox="0 0 1305.600000 1094.400000"
    preserveAspectRatio="xMidYMid meet">

    <metadata>
    Created by potrace 1.13, written by Peter Selinger 2001-2015
    </metadata>
    <g transform="translate(0.000000,1094.400000) scale(0.080000,-0.080000)"
    fill="#000000" stroke="none">
    </g>
    </svg>
    响应
    image.png
    这里确定了就是信息泄露了。整理下了,发现能用的就这些。
    1
    2
    3
    root:x:0:0:root:/root:/bin/ash
    employee:x:1000:1000:Linux User,,,:/home/employee:/bin/ash
    postgres:x:70:70::/var/lib/postgresql:/bin/sh
    基本上可登录的用户就两个,一个是root,另外一个是employee,感觉可以尝试获取employee的密码后登录,然后再获取超级账号。在这个思路指导下,我还尝试了/etc/shadow,/etc/hosts等文件,基本上没有什么收货。
  • 尝试读取employee的命令行记录,由于知道employee的shell是ash所以,尝试获取.ash_history。获取密码superultrapass3。然后成功登陆系统。
  • uname -a 查看操作系统的版本
    1
    Linux minuv2 4.19.58-0-virt #1-Alpine SMP Wed Jul 10 13:00:23 UTC 2019 x86_64 Linux
    感觉内核不是特别老,exploit db上也没找到相关的信息,感觉不是直接提权。
  • 通过which命令发现机子上并没有,pyhton和php环境,连/dev/tcp也没有,但发现有perl,可以连一句话。但这里好像也没什么用了。
  • 没有sudo,su可用,基本上除了根目录就没什么能写能看的文件。

3.提权

  提权的时候,大概有这么几种思路:

  1. 内核提权,这个需要结合靶机的内核和靶机的环境,比如dirtycrow就只能在3.1到3.78版本的内核上用
  2. 攻击以管理员权限运行的服务,比如httpd,mysql等等,利用root权限运行的服务,尝试获取root shell。
  3. suid代表设置用户id,linux通过suid机制使非指定用户使用某些指定用户才能使用的功能。例如ping命令需要用root权限打开原始套接字,而ping命令有suid所以普通用户也可以使用ping命令。我们可以通过一些拥有root权限的程序获取root shell,或者对现有文件做一些更改,比如/etc/passwd
    1
    find / -perm -u=s -type f 2>/dev/null
  4. 利用sudo权限
    等等

  这里我发现可以用micro编辑器修改文件,从而获取和root同样分组的用户
image.png
这里可以添加新用户或者直接修改employee的权限,但要注意,最后一行记录后需要换行,不然会出现can’t use /bin/as这个错误。
image.png

最后cd /root 获取flag.txt

image.png

总结一下

  这个靶机其实还算是简单,但是由于不是特别熟悉思路,还是花了好久才做出来。那个查当前用户的命令记录还真的没想到。怎么说呢,还是一个思路广度和对资料利用的问题,好多地方都是最后差了一点。

Reference: