BUUCTF-WEB-INF/web.xml泄露-SSTI注入

第八周

目录

WEB

[RoarCTF 2019]Easy Java

WEB-INF/web.xml泄露

WEB-INF/web.xml泄露原因

WEB-INF/web.xml泄露利用方法

解决方法

[BJDCTF2020]The mystery of ip

什么是板块注入 SSTI

为什么会产生

什么是render_template

render_template:

 我们为什么能想到是框架注入呢

Crypto

被劫持的神秘礼物

[BJDCTF2020]认真你就输了


WEB

[RoarCTF 2019]Easy Java

打开环境

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第1张图片

 发现是登入界面 看看能不能sql注入

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第2张图片

发现是做不到的

我们看看源代码

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第3张图片

 发现有两个界面 第一个我们刚刚去过了 看看下面这个

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第4张图片

返回了这个文件 我们发现docx 是文档文件

看看能不能下载

31d39024-b852-4ee7-9743-b9b17fa5494e.node4.buuoj.cn:81/help.docx

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第5张图片

显然没有这么简单

但是这道题目不是耍我们 是给我们发现 我们能够从里面下载文件

因为这道题的题目是java

java有一个漏洞 和git差不多的漏洞

WEB-INF/web.xml泄露

其实web-inf就是一个文件夹 这个文件夹里存放着很多敏感文件

/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其余的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点全部用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用须要的各类JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件

这些文件都是包含着敏感信息 如果我们有办法得到访问这个文件夹的权限

我们就可以看到这些文件

我们可以先试试看能不能访问这些文件

WEB-INF/web.xml泄露原因

因为web有的时候需要很多服务器来共同维护 如果有的服务器对静态资源的目录或文件的映射配置不

当,就容易出现这个泄露

WEB-INF/web.xml泄露利用方法

先看看能不能访问/WEB-INF/web.xml文件 如果可以访问 我们就可以发现命名规则 然后通过

/WEB-INF/classes/ 来下载文件

解决方法

修改Nginx配置文件禁止访问WEB-INF目录

我们得到了这个办法 就开始看看哪里可以访问 /WEB-INF/web.xml

我们能发现 在这里有post的方法 因为经过尝试 get无法访问这个文件夹

我们看看post能不能

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第6张图片

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第7张图片

 记事本打开

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第8张图片

 能发现flag的命名和类存放位置

我们可以使用

/WEB-INF/classes/com/wm/ctf/FlagController.class

来访问 其实就是访问文件夹

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第9张图片

得到文件 通过java打开

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第10张图片

发现加密 

base64解密

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第11张图片

 CTF常见源码泄漏总结 - JavaShuo

[BJDCTF2020]The mystery of ip

https://www.cnblogs.com/2ha0yuk7on/p/16648850.html#%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E

服务器端模板注入(SSTI) - 知乎

这题考的是板块注入 SSTI

什么是板块注入 SSTI

其实和sql注入一样 sql注入是通过构造字符串 让我们要比对的字符串变为执行的命令

ssti也是一样的 只不过 ssti是在框架中执行 语言框架对html的渲染 因为对字符串不够严格 就容易变为命令执行

为什么会产生

render_template渲染函数的问题

什么是render_template

是用户和页面交互的函数  页面可以通过用户的操作来展示页面

render_template:

如果对用户输入不进行操作

{{}}在Jinja2渲染的时候会对{{}}里面进行操作 例如 {{1+2}} 会被渲染为3  所以SSTI利用了这一点

{{命令}} 来实现注入

 开始做题

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第12张图片

 打开网站 发现有其他的页面 看看源代码

访问 flag.php

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第13张图片

 访问hint.php

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第14张图片

 在源代码里发现提示

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第15张图片

 让我们思考如何知道我们ip的 我们一下就想到 X-Forwarded-For

我们抓包看看能不能更改

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第16张图片BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第17张图片

 我们为什么能想到是框架注入呢

因为这个是我们完全可控的 我们修改多少就是多少 我们可以先尝试看看能不能写入

因为这里是自动获取 SSTI就是容易在cookie这块自动获取的地方下手脚

我们尝试{{1+2}}

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第18张图片

发现完全可以 说明就是SSTI注入

我们开始构造payload

X-Forwarded-For:{{system('ls')}}

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第19张图片

 发现flag文件 我们开始查看

X-Forwarded-For:{{system('cat /flag.php')}}

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第20张图片

 发现没有回显 应该不会是黑名单 我们先看看根目录再说 实在不行 我们应该可以发现黑名单文件的

我们开始查看根目录

X-Forwarded-For:{{system('ls ../../..')}}

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第21张图片

发现这里也有flag 说明刚刚是骗我们的

我们继续访问

X-Forwarded-For:{{system('cat /flag')}}

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第22张图片

 得到flag

Crypto

被劫持的神秘礼物

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第23张图片

 这题很简单 流量分析

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第24张图片

 有一个login

看看里面的账号密码

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第25张图片

adminaadminb

MD5小写加密

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第26张图片

提交即可

[BJDCTF2020]认真你就输了

下载文件

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第27张图片

 发现pk 解压包 我们改后缀

下来一大堆文件 看看里面 flag

得到flag

BUUCTF-WEB-INF/web.xml泄露-SSTI注入_第28张图片

你可能感兴趣的:(BUUctf,xml,java,servlet)