写点什么

网络安全实战之靶场渗透技术

  • 2022-10-20
    湖南
  • 本文字数:3884 字

    阅读完需:约 1 分钟

信息收集

端口扫描

nmap 找到三个开放的 TCP 端口,FTP (21)、SSH (22) 和 Python 托管的 HTTP (5000):



发现存在 ftp 匿名登录,使用 ftp 进行登录。


Flask App

访问 5000 端口,发现开启了 web 服务。



在登录框测试了一些常规漏洞,SQL 注入和弱口令都没有用。


【一一帮助安全学习,所有资源获取处一一】

①网络安全学习路线

②20 份渗透测试电子书

③安全攻防 357 页笔记

④50 份安全攻防面试指南

⑤安全红队渗透工具包

⑥网络安全必备书籍

⑦100 个漏洞实战案例

⑧安全大厂内部视频资源

⑨历年 CTF 夺旗赛题解析


网站上没有什么有趣的东西,我们去注册看看:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JuUqjTGv-1666254322221)(https://upload-images.jianshu.io/upload_images/26472780-e99697bf5b49f6cd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]


登录之后,重定向到/dashboard 这个目录下。



“添加注释”按钮指向/add_note,它有一个表格。尝试提交一个 note 进行测试。




它显示在我的仪表板上。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDZtKtZ4-1666254322239)(https://upload-images.jianshu.io/upload_images/26472780-abe0e1ed7ae5972a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]


尝试各种 XSS 有效负载,但一切似乎都正确地转义了。“Notes” ( /notes) 现在显示我的笔记:



单击它会导致/note/3 并显示注释:



我将尝试通过检查其他注释 ID(/note/1)。例如,点击“升级到 VIP”的链接显示该选项当前不可用


漏洞发现

JWT 解密

尝试解密 cookie。



Flask cookie 看起来很像 JWT。我将尝试flask-unsign,一个用于解码、暴力破解和制作 Flask cookie 的工具,它可以工作:


目录爆破

没有发现啥可以利用的地方,就继续看 cookie。


Flask Unsign 解密

使用 flask-unsign 解密


flask-unsign --decode--cookie'.eJwlx0EKgCAQBdCrDH_torU3iZCQHC0wBUcpEO-e0OrxOnYfrZws0FsH1QmkHQeLQGHNjWxhSvmhmENgR1eCGUbh7z6ra2ms0IRLsjdDY3mdx_gAqEYfRw.YkOi3g.uAoRysM25q2FzuEUmYMaCRMQ4aA'{'_flashes': [('success', 'You are now logged in')], 'logged_in': True, 'username': '0xdf'}
cookie:eyJsb2dnZWRfaW4iOnRydWUsInVzZXJuYW1lIjoiYWRtaW4ifQ.Yxvarg.S9d5IqA4nL7CBjzYp4CfnG8IoLk
复制代码


命令


flask-unsign --decode --cookie 'eyJsb2dnZWRfaW4iOnRydWUsInVzZXJuYW1lIjoiYWRtaW4ifQ.Yxvarg.S9d5IqA4nL7CBjzYp4CfnG8IoLk'
复制代码



使用 flask-unsign. Flask cookie 使用秘密签名,因此在不知道该密码的情况下无法修改它们。可以进行暴力破解来测试弱密码,并通过 flask-unsign 来提供该功能。--unsign-w,运行它会 rockyou.txt 返回错误:



它似乎将文件中的“123456”通过添加--no-lteral-eval. 我将添加它,它可以很快找到秘密:


以管理员身份访问测试

生成一个管理员的 cookie,然后替换到浏览器当中去。


eyJsb2dnZWRfaW4iOnRydWUsInVzZXJuYW1lIjoiYWRtaW4ifQ.YxvdIw.PpnxZ3h8WkIo_5JMIfhCDD7hXo8
复制代码


带有 Cookie 的暴力用户名

使用 time 将可能的用户名生成一个 cookie 列表。


代码分析

这将获取一个名称列表并生成我需要的所有 cookie。这实际上很慢,运行时间超过 8 分钟。这是因为每项工作都必须启动,其中包括导入所有 Flask。


我可以深入研究一下 flask-unsign 源代码,并跟踪我用--sign.


@lru_cache()def get_serializer(secret: str, legacy: bool, salt: str) -> URLSafeTimedSerializer:    """    Get a (cached) serializer instance    :param secret: Secret key    :param salt: Salt    :param legacy: Should the legacy timestamp generator be used?    :return: Flask session serializer    """    if legacy:        signer = LegacyTimestampSigner    else:        signer = TimestampSigner
return URLSafeTimedSerializer( secret_key=secret, salt=salt, serializer=TaggedJSONSerializer(), signer=signer, signer_kwargs={ 'key_derivation': 'hmac', 'digest_method': hashlib.sha1})
复制代码


向后追溯,我可以发现默认的 salt 是“cookie-session”。我知道或只是在文件顶部导入的其他内容。我可以使用它来生成我自己的脚本:


#!/usr/bin/env python3
import hashlibimport sysfrom flask.json.tag import TaggedJSONSerializerfrom itsdangerous import TimestampSigner, URLSafeTimedSerializer
if len(sys.argv) < 2: print(f"{sys.argv[0]} [wordlist]") sys.exit()
with open(sys.argv[1], 'r') as f: names = f.readlines()
for name in names: cookie = URLSafeTimedSerializer( secret_key='secret123', salt='cookie-session', serializer=TaggedJSONSerializer(), signer=TimestampSigner, signer_kwargs={ 'key_derivation': 'hmac', 'digest_method': hashlib.sha1 } ) print(cookie.dumps({"logged_in": True, "username": name.strip()}))
复制代码


使用 wfuzz 检查每个 cookie,隐藏 302 响应(重定向回/login



枚举到一个,解码为 blue,发现一个 blue 用户。


使用登录 Oracle 的暴力用户名

使用 wfuzz 对所有用户发送登录请求,并注意任何不响应“无效凭据”的用户。有一个文件: names.txt



它返回了一个有效的用户名,blue(就像我通过制作 cookie 找到的一样)。我将 flask-unsign 用来制作 cookie:


站点访问/枚举

无论我以哪种方式获得 blue 的 cookie,替换 Firefox 开发工具中的当前 cookie,然后重新加载/dashboard 显示我现在以 blue 登录:



还有“导入笔记”和“导出笔记”按钮。我稍后会回到这些。



发现 FTP 登录的用户和密码。



FTP 登录


发现一个 是关于密码安全的 PDF,下载下来,然后进行分析。


发现了默认的用户名格式。


以 ftp_admin 身份访问 FTP

ftp_admin@Noter!
复制代码


有一个目录 files 和一个 PDF。目录为空:


发现 2 个 zip 文件,将它们都下载到本地。


md 到 pdf 中的 RCE

使用unzip -l查看压缩包文件内容。



使用 diff 命令比较 2 个压缩包的区别。



app.py将从每个中提取,并将它们重命名为app-1.pyand app-2.py


继续使用 diff 进行比较。运行 diff app-1.py app-2.py 显示第一个对数据库有不同的信任:


来源分析

该代码很有趣,export_note_local在andexport_node_remote函数中有一个有趣的东西。每个人都会得到一个注释,要么在本地读取它,要么从给定的 URL 读取它,然后用来针对它subprocess运行一个nodeJavaScript 程序。例如,来自 export_node_local:


rand_int = random.randint(1,10000)command = f"node misc/md-to-pdf.js  /pre>{note['body']}' {rand_int}"subprocess.run(command, shell=True, executable="/bin/bash")
return send_file(attachment_dir + str(rand_int) +'.pdf', as_attachment=True)
复制代码

CVE-2021-23639

漏洞描述:


影响 md-to-pdf 包,版本 <5.0.0


md-to-pdf 是一个用于将 Markdown 文件转换为 PDF 的 CLI 工具。此软件包的受影响版本容易受到远程代码执行 (RCE) 的影响,因为它利用库灰质来解析前端内容,而不禁用 JS 引擎。


package-lock.json文件将给出所需 JavaScript 包的版本。我将从档案中提取它并通过以下方式找到它 grep:



google 搜索这个包和漏洞利用会返回一个页面:



攻击者可以将有效载荷放入传入的降价中,这将导致 RCE。


获取权限

反向壳

创建一个 md 文件,写入反弹 shell 的语句来利用它。



本地先启动一个 80 端口,然后使用 nc 进行监听,接着使用网站的 Export 功能。



反弹 Shell


获得 user.txt

获得第一个 user.txt 文件,使用 cat 命令进行查看。


MySQL

我们在其中一个脚本中发现了 mysql 凭据。由于这是一个 CTF,这样的事情总是会引起怀疑。


我们检查 mysql 是否在本地运行:



我们在默认端口 3306 上看到它。我们还可以检查服务,看看它是否以 root 身份运行


在 MySQL 中利用 UDF

这是。所以我们知道 mysql 以 root 身份运行,并且我们有 root 凭据来登录它。使用 Exploit-DB 上的漏洞利用我们可以将源代码复制到盒子中,编译它,然后使用它在 mysql 中创建的共享库以 root 身份执行代码。


让我们使用 searchsploit 获取代码:



本地开启一个 web 服务,将文件下载到目标机器上。


接着使用 gcc 进行编译。



然后下载到目标机器上。


MYsql 登录

在之前获取到了机器的用户和密码,然后进行登录。


权限提升

Raptor

漏洞利用:


有很多关于如何使用称为 Raptor 的代码来利用以 root 身份运行的 MySQL,我的想法是,我将编写一个共享库,将 SQL 中的命令运行到插件目录中,然后添加一个命令来访问它并以 root 身份执行。


我需要获取漏洞利用文件的副本并使用注释中的说明进行编译:



将脚本文件上传上去。


漏洞利用过程

1.创建一个 foo 表并将二进制文件读入其中:


2.查看插件目录


3.将二进制文件写入上面的插件目录,并将其作为用户定义的函数加载:


4.测试文件权限。



5.运行。



mysql 复制 bash 并将其更改为 SUID:


需要找一个文件运行的地方不是/dev/shm,因为它已经安装 nosuid:


而/tmp 会正常工作。因为 bash 删除 privs,运行它会返回一个非 root 的 shell:


获得 root.txt

读取 root.txt


总结:

靶机主要是从信息收集开始,发现是 flask 搭建的,然后使用 flask unsign 进行解密,暴力破解。接着使用枚举出的用户进行 FTP 登录,FTP 登录之后,下载 pdf 文件,发现管理员账号和密码规则,然后登录 FTP 管理员,接着下载压缩包,进行文件分析,发现可以使用 CVE-2021-23639 历史漏洞可以获取权限,在文件中发现存在 mysql 服务,接着进行权限提升,获取到了 root 文件。


用户头像

我是一名网络安全渗透师 2021-06-18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
网络安全实战之靶场渗透技术_黑客_网络安全学海_InfoQ写作社区