网络安全实战之靶场渗透技术
ccwgpt 2024-12-20 11:32 64 浏览 0 评论
信息收集
端口扫描
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 hashlib
import sys
from flask.json.tag import TaggedJSONSerializer
from 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文件。
相关推荐
- 腾讯开源框架TarsCpp-rpc设计分析-server(二)
-
2Tars协议2.1是什么借用官方说法:TARS编码协议是一种数据编解码规则,它将整形、枚举值、字符串、序列、字典、自定义结构体等数据类型按照一定的规则编码到二进制数据流中。对端接收到二进制数据流...
- 微服务调用为什么用RPC框架,http不更简单吗?
-
简单点,HTTP是协议,RPC是概念!实现RPC可以基于HTTP协议(Feign),TCP协议(Netty),RMI协议(Soap),WebService(XML—RPC)框架。传输过程中,也因为序列...
- go-zero:开箱即用的微服务框架(gin框架微服务)
-
go-zero是一个集成了各种工程实践的Web和rpc框架,它的弹性设计保障了大并发服务端的稳定性,并且已经经过了充分的实战检验。go-zero在设计时遵循了“工具大于约定和文档”的理...
- SOFARPC :高性能、高扩展性、生产级的 Java RPC 框架
-
#暑期创作大赛#SOFARPC是一个高性能、高扩展性、生产级的JavaRPC框架。在蚂蚁金服,SOFARPC已经使用了十多年,已经发展了五代。SOFARPC致力于简化应用程序之间的RPC...
- 自研分布式高性能RPC框架及服务注册中心ApiRegistry实践笔记
-
痛点1.bsf底层依赖springcloud,影响bsf更新springboot新版本和整体最新技术版本升级。2.eureka已经闭源,且框架设计较重,同时引入eureka会自行引入较多sprin...
- Rust语言从入门到精通系列 - Tonic RPC框架入门实战
-
Rust语言是一种系统级语言,被誉为“没有丧失性能的安全语言”。Rust语言的优势在于其内存安全机制,在编译时就能保证程序的内存安全。Tonic模块是Rust语言的一个RPC(RemoteProce...
- 腾讯开源框架TarsCpp-rpc设计分析-client(一)
-
前言Tars是腾讯开源的微服务平台,包含了一个高性能的rpc框架和服务治理平台,TarsCpp是其C++版本。对于以C++为主要开发语言,同时还想深入了解rpc和微服务框架具体实现的同学来说,Tars...
- 设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架
-
为啥要开发RPC框架事情是这样的,在开发这个RPC框架之前,我花费了不少时间算是对Dubbo框架彻底研究透彻了。冰河在撸透了Dubbo2.x和Dubbo3.x的源码之后,本来想给大家写一个Dubbo源...
- rpc框架使用教程,超级稳定好用,大厂都在使用
-
rpc是什么远程调用协议如何使用导入依赖<dependency><groupId>org.apache.dubbo</groupId><art...
- Layui 框架实战:动态加载 Select 与二级联动全解析
-
在现代Web开发中,下拉选择框(Select)是用户输入数据时不可或缺的组件。很多时候,我们需要的选项并非静态写死在HTML中,而是需要根据业务逻辑从后端动态获取。更有甚者,我们可能需要实现“...
- 15个能为你节省数百小时的前端设计神器,从UI库到文档生成
-
无论你是刚开始开发之旅的新手,还是疲于应付生产期限的资深程序员,有一个真理始终不变:正确的工具能彻底改变你的工作流程。多年来,我测试了数百个开发工具——有些实用,大多数平庸。但有一批免费网站经受住了时...
- Layui与WinForm通用权限管理系统全解析
-
嘿,小伙伴们,今天咱们来聊聊Layui和WinForm这两个框架在通用权限管理系统中的应用。别担心,我会尽量用简单易懂的语言来讲解,保证让大家都能跟上节奏!首先说说Layui。Layui是一个前端UI...
- 纯Python构建精美UI!MonsterUI让前端开发效率飙升
-
“无需CSS知识,告别类名记忆,11行代码实现专业级卡片组件”在传统Web开发中,构建美观界面需要同时掌握HTML、CSS、JavaScript三剑客,开发者不得不在多种语言间频繁切换。即使使用Boo...
- WebTUI:将终端用户界面(TUI)之美带到浏览器的CSS库
-
在当今Web技术飞速发展的时代,界面设计愈发复杂多样。然而,随着现代化工具的广泛使用,一些开发者开始回归极简风格,追求一种简洁而富有韵味的设计。WebTUI正是这样一款CSS库,它将经典的终...
- 人教版二年级下册生字描红汇总(拼音+笔顺+描红),可打印!
-
可定制内容,评论区留言。本次整理的为人教版二年级下册所有生字,共计300个;写字是小学阶段一项重要的基本功训练,把汉字写得正确、工整、美观,可以提高运用汉字这一交际工具的准确性和效率。对小学生进行写字...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 腾讯开源框架TarsCpp-rpc设计分析-server(二)
- 微服务调用为什么用RPC框架,http不更简单吗?
- go-zero:开箱即用的微服务框架(gin框架微服务)
- SOFARPC :高性能、高扩展性、生产级的 Java RPC 框架
- 自研分布式高性能RPC框架及服务注册中心ApiRegistry实践笔记
- Rust语言从入门到精通系列 - Tonic RPC框架入门实战
- 腾讯开源框架TarsCpp-rpc设计分析-client(一)
- 设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架
- rpc框架使用教程,超级稳定好用,大厂都在使用
- Layui 框架实战:动态加载 Select 与二级联动全解析
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (65)
- tornado框架 (48)
- 前端框架bootstrap (54)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)