首页 > 其他分享 >SSTI.

SSTI.

时间:2024-04-25 16:12:05浏览次数:22  
标签:__ builtins 子类 __.__ SSTI wrap close

SSTI

晚上学长讲了ssti 我好像要长脑子了..

源于一道ssti的签到题

ssti

ssti:服务器端模板注入漏洞

{

为什么利用 {{}}来执行ssti语句

image-20240424214841955

image-20240424212957410

a =''.__class__.__base__.__subclasses__()

‘’一个实例

例如

print('i')//打印字符串

__class__

类的内置属性,返回该实例的类型

__base__

返回父类

__subclassess__

查看当前函数下的所有子类(父类的所有子类)

创建一个for循环

如果i在a里边,将i当作字符串,如果i在 wrap_close子类里 打印b

image-20240424215646517

b+=1

__subclassess__()[0]是调用第一个子类,故 +1

image-20240424215006168

image-20240424215306829

image-20240424215207660

找到 wrap_close子类,找 wrap_close子类的原因是 wrap_close子类里边有能实现命令执行的函数 如popen函数

a =''.__class__.__base__.__subclasses__()[132].__init__

image-20240424220110308

__init__

初始化 创建一个新的实例

__globals__

__globals__将获取到的方法 椅子垫的形式返回

image-20240424220740037

popen

找到 popen函数 利用 popen函数来执行命令

泼盆函数相对于 sysytem函数来讲 更安全一点

image-20240424221006436

__builtins__

__builtins__模块里边有 eval()函数 可以执行命令 如

a =''.__class__.__base__.__subclasses__()[132].__init__.__globals__['__builtins__']['eval']("__import__"('os').popen('cat flag').read())

open

打开文件 如

image-20240424222110893

read()

image-20240424222218352

如果没有 read()

image-20240424222354476

显示字节流 数据存在字节流里面

例题 菜狗工具

image-20240424223346189

app.py

from flask import *
import io
import os

app = Flask(__name__)
black_list = [
    '__build_class__', '__debug__', '__doc__', '__import__', 
    '__loader__', '__name__', '__package__', '__spec__', 'SystemExit',
    'breakpoint', 'compile', 'exit', 'memoryview', 'open', 'quit', 'input'
]
new_builtins = dict([
    (key, val) for key, val in __builtins__.__dict__.items() if key not in black_list
])

flag = "flag{xxxxxxxxx}"

@app.route("/")
def index():
    return redirect("/static/index.html")

@app.post("/run")
def run():
    out = io.StringIO()
    script = str(request.form["script"])
    
    def wrap_print(*args, **kwargs):
        kwargs["file"] = out
        print(*args, **kwargs)
    new_builtins["print"] = wrap_print

    try:
        exec(script, {"__builtins__": new_builtins})
    except Exception as e:
        wrap_print(e)
    
    ret = out.getvalue()
    out.close()
    return ret

app.run('0.0.0.0', port=9001)

image-20240424223719305

返回实例类型

image-20240425142938164

返回父类

image-20240425143157643

查找所有子类

image-20240425143211119

找到 _wrap_close_子类 想用里边的函数去实现命令执行

image-20240425143604570

image-20240425143856627

初始化实例

image-20240425144142081

image-20240425155454898

访问 app.py

image-20240425160507493

popen函数为空

image-20240425160627575

标签:__,builtins,子类,__.__,SSTI,wrap,close
From: https://www.cnblogs.com/Yolololo/p/18157923

相关文章

  • flask之ssti模版注入从零到入门
    前言在学习ssti模版注入的时候,发现国内文章对于都是基于python基础之上的,对于基础代码讲的较少,而对于一些从事安全的新手师傅们,可能python只停留在写脚本上,所以上手的时候可能有点难度,毕竟不是搞pythonflask开发。就本人学习ssti而言,入手有点难度,所以特写此文,对于一些不需要深......
  • Thymeleaf SSTI模板注入分析
    环境搭建先搭建一个SpringMVC项目,参考这篇文章,或者参考我以前的spring内存马分析那篇文章https://blog.csdn.net/weixin_65287123/article/details/136648903SpringMVC路由简单写个servletpackagecom.example.controller;importorg.springframework.stereotype.Controlle......
  • WEB专项-文件上传&命令执行&SSTI模板注入&其他
    文件上传一、Upload11.进入靶场,是一个文件上传功能的页面,尝试上传一个一句话木马去getshell。2.发现提示是notimage,那就通过burp抓包进行类型的修改。3.但却提示我这个是php代码,看来对文件的后缀名进行了过滤,那就将其后缀名改为jpg。4.又提示我文件中包含<?,那接下来......
  • 学警杯SSTI复现以及SSTI一类题目核心思路
    本题知识点:漏洞存在原因以及基本思路:开发者在涉及程序网页时为了方便将HTML语言作为一个字符串写进了一个python语句中而造成,通过对某个参数传参,进行查找调用python内部的命令执行语句,获得控制权。参考文章:SSTI_OF_FLASK-Huamang'sBlog类似以下题目把HTML语言写在pytho......
  • HTB Perfection-wp 基于ruby的SSTI注入、密码爆破工具hashcat的使用、反弹shell的编码
    一进来发现这个页面,估计突破点就是在这里了 当然也可走一下固定的流程,nmap扫一下、dir爆破一下。这里不太像是sql的注入点(并不是查询功能),就不用sql试了。首先第一反应时看到WEBrick模板框架,考虑有没有版本漏洞,但是在几个CVE数据库搜一下都没有对应版本的漏洞。那么走一下正常......
  • 简析Go SSTI利用
    简析GoSSTI利用目录GoSSTI基础模版渲染ActionPipelinesVariablegin.context的利用方式Hgame2024Week2梅开二度总结Gossti的xss利用简单来说就是可以利Go的模版注入,来绕过Cookie的HTTPOnly安全限制GoSSTI基础参考go官方文档templatepackage-text/templ......
  • 简析Go SSTI利用
    简析GoSSTI利用目录GoSSTI基础模版渲染ActionPipelinesVariablegin.context的利用方式Hgame2024Week2梅开二度总结Gossti的xss利用简单来说就是可以利Go的模版注入,来绕过Cookie的HTTPOnly安全限制GoSSTI基础参考go官方文档templatepackage-text/templ......
  • sstilab
    sstilablevel1无过滤{{''.__class__.__base__.__subclasses__()[133].__init__.__globals__['popen']('cat/app/flag').read()}}level2过滤{}用{%%}代替print标记{%print''.__class__.__base__.__subclasses__()[133].__ini......
  • [Flink] Flink源码分析 : BoundedOutOfOrdernessTimestampExtractor
    0序言0.1缘起importorg.apache.flink.api.common.functions.MapFunction;importorg.apache.flink.api.java.tuple.Tuple;importorg.apache.flink.api.java.tuple.Tuple3;importorg.apache.flink.configuration.Configuration;importorg.apache.flink.configuration.......
  • 【python】SSTI模版注入
    0x00  PythonVene环境及介绍venv虚拟环境:创建和管理虚拟环境的模块首先aptupdate更新一下包管理安装你当前版本的python-venv选择一个目录,安装venv虚拟环境。我取的名是flask-venv。如何选中当前的venv呢?执行以下命令可以发现多了一个前缀flask-venv在当前目录安装f......