判断后端语言
php:Apache和linux
asp .NET:iis
Java:Tomcat、Resin、JBoss
看返回包'werkzeug'就是Python
判断方法很多
一、知识点
PYC文件反编译
Python-web-ssti
SSTI模板注入利用分析
二、PYC反编译
php源码没有加密,直接看的
Java只有很多class和jar 反编译
.NET有dll文件 反编译
python中也有类似文件,称为PYC
我们所看到的pyc文件,其实是PyCodeObject,是Python编译后的结果。当python程序运行时,编译的结果是保存于PyCodeObject,程序运行结束后,Python就将PyCodeObject写入到pyc文件中,这是个字节码文件。
所以当你下一次运行这个程序时,程序会现在pycache文件夹里找pyc文件,而如果找到了,就省去了编译的过程,节省了时间。
https://blog.csdn.net/weixin_42183408/article/details/88557812
三、SSTI模板注入
1、什么是模板?
顾名思义,就类似我博客的主题
就是在更改的时候会传递数据到服务器端,如果数据被攻击者篡改,那么在回显的html页面中就会显示
比如一个Python的模板,报错页面接收传入的参数,就可以先测试{{2*2}}是否输出4
输出就带变服务器用Python执行代码,就可以传入内置的后门,命令,任意代码执行
回显在页面上,或者反弹shell到kali
2、代码举例
<div class="center-content error">
<h1>Oops! That page doesn't exist.<h1>
<h3>%S可控值 留给数据库语句去操作取出数据显示</h3>
</div>
一定会有接收数据的地方,就是我们注入数据的地方
只要模板语言能做的,我们都能做(实则不然,有过滤)
3、如何判断检测SSTI漏洞存在?
输入的数据会被浏览器利用当前脚本语言调用解析执行
如果能看到源码,看到引用了常见模板引擎和内置函数就说明是ssti
找注入点,过滤了什么,flag在哪个文件中,一般命令执行、代码执行、文件读取
要对脚本很熟悉啊,找对位置
如:flask render_template_string()
4、SSTI安全问题在生产环境哪里产生?
-存在模版引用的地方,如404错误页面展示
-存在数据接收引用的地方,如模板解析获取参数数据
Python: 使用像Jinja2、Mako、Django等模板引擎的Python Web应用程序容易受到SSTI攻击。这些框架在处理用户输入时,如果不正确地进行了过滤或者模板渲染不安全,就容易受到攻击。
Ruby: Ruby on Rails框架使用ERB(Embedded Ruby)作为默认的模板引擎,如果开发人员未正确处理用户输入,就可能导致SSTI漏洞。
Java: 基于Java的Web应用程序通常使用像FreeMarker、Thymeleaf等模板引擎。如果这些模板引擎未受到适当的保护或者没有正确地过滤用户输入,就可能受到SSTI攻击。
JavaScript/Node.js: 一些Node.js应用程序使用像Handlebars、Pug等模板引擎。如果这些模板引擎在处理用户输入时不安全,就可能存在SSTI漏洞。
补充
存在于Python、php、js中,Java语言比较少,具体看下图
一般要白盒,慢慢审计,黑盒的话就要看提示了,实战中少,CTF多
总而言之,要很强的编程能力,尤其py和常见的模板

相关漏洞介绍链接:
https://blog.csdn.net/m0_47418965/article/details/122385067?spm=1001.2014.3001.5501
https://xz.aliyun.com/news/7341
csdn搜索 kracer127
常见的CMS模块SSTI注入源代码下载:
https://github.com/wibiti/uncompyle2
trim 过滤空格
echo或者var_dump、eval
web渗透测试中怎么判断后端源码是什么,用什么编写的?---->自行ai
小结
CTF中常见SSTI,要看懂和利用Python代码,熟悉各类模板引擎,常见绕过
Comments NOTHING