python测试-pyc反编译+SSTI模板注入

admin 2024年2月4日10:32:55评论11 views字数 1035阅读3分27秒阅读模式

PY反编译-PYC编译文件反编译源码

pyc文件是py文件编译后生成的字节码文件(byte code),pyc文件经过python解释器最终会生成机器码运行。因此pyc文件是可以跨平台部署的,类似Java的.class文件,一般py文件改变后,都会重新生成pyc文件。

网站源码中有pyc文件时,无法看懂,就可以去浏览器在线反编译pyc文件。

pyc文件打开是这样的,无法看懂

python测试-pyc反编译+SSTI模板注入

进行反编译之后就会变成py文件,就可以进行代码审计

python测试-pyc反编译+SSTI模板注入

SSTI入门-原理&分类&检测&分析&利用

1、什么是SSTI?有什么漏洞危害?

SSTI就是服务器端模板注入(Server-Side Template Injection),实际上也是一种注入漏洞

漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。

2、如何判断检测SSTI漏洞的存在?

-输入的数据会被浏览器利用当前脚本语言调用解析执行

3、SSTI会产生在那些语言开发应用?

python测试-pyc反编译+SSTI模板注入

4、SSTI安全问题在生产环境那里产生?

-存在模版引用的地方,如404错误页面展示

-存在数据接收引用的地方,如模版解析获取参数数据

示例:自写一个报错处理的错误页面,里面存在一个用户可控的参数,输入的数据会被浏览器利用当前脚本语言调用解析执行。

python测试-pyc反编译+SSTI模板注入

我们就可以把一段pyload当做参数传入,让目标将其执行。

浏览器搜索一个pyload

python测试-pyc反编译+SSTI模板注入

执行,虽然出现错误,但属于服务器内部错误,也说明poload成功被执行了

python测试-pyc反编译+SSTI模板注入

想要判断使用python语言的网站是否存在SSTI漏洞,只需要在参数传入{{2*2}}pyload看看是否被执行

python测试-pyc反编译+SSTI模板注入

SSTI考点-CTF靶场-[WesternCTF]shrine

启动靶场,右键查看代码

1源码分析SSTI考点

python测试-pyc反编译+SSTI模板注入

2、测试判断SSTI存在

python测试-pyc反编译+SSTI模板注入

3、分析代码过滤和FLAG存储

python测试-pyc反编译+SSTI模板注入

4、利用Flask函数获取FLAG

{{url_for.__globals__['current_app'].config.FLAG}}:获取全局变量中当前应用的config变量中的FLAG

url_for()函数:是用于构建操作指定函数的URL

__globals__:全局变量

['current_app']:当前应用

python测试-pyc反编译+SSTI模板注入

原文始发于微信公众号(小黑子安全):python测试-pyc反编译+SSTI模板注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月4日10:32:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   python测试-pyc反编译+SSTI模板注入http://cn-sec.com/archives/2466812.html

发表评论

匿名网友 填写信息