某软件存在目录遍历漏洞

  • A+
所属分类:安全漏洞



点击蓝字 ·  关注我们


01


前言


深圳某网络有限公司,是国内专业的电商软件开发、服务提供商。是一家拥有自主知识产权的互联网软件企业。
   其网络建立了一整套以“TPshop”标准化电商软件为基础的"一全网营销电商解决方案。包括基于不同运维模式的B2B2C、B2B、B2C、O2O、C2C、C2B等被企业用户广泛使用的电商软件产品,还包括基于汽车、百货、母婴、电视、跨境、工业品、社区等具体解决方案。

      公司核心产品 是国内应用范围大、覆盖面广的电商软件产品,基于此,历经5年的时间,而发展成为国内先进的具备成熟且标准化的电商平台技术解决方案提供商。


02


漏洞标题


某网络公司电商软件存在目录遍历漏洞


03


漏洞类型


目录遍历漏洞(前台)


04


漏洞范围



0x01 演示地址

http://xxx.xxxx.cn

http://xxx.xxx.cn/admin


0x02 用户使用量

粗略估计用户量

某软件存在目录遍历漏洞


某软件存在目录遍历漏洞


05


漏洞详情



0x01 代码分析

代码可从xxx.cn 官网下载
漏洞文件:/application/home/controller/Uploadify.php

某软件存在目录遍历漏洞



0x02 漏洞代码

漏洞函数public function fileList()

根据thinkphp 路由

可以自己构造URL,访问函数fileList

构造路由结果:index.php/home/uploadify/fileList

某软件存在目录遍历漏洞



0x03 遍历目录文件类型绕过

  • 函数为thinkphp获取系统输入变量方法:

  • 具体看:http://www.thinkphp.cn/document/308.html

  • 当传参type 进行switch 选择时,若type类型不为images|flash就会采用 default  $allowFiles=”.+”

  • 所以在进行tpye传参,值不为images|flash 就可以绕过文件类型

某软件存在目录遍历漏洞



0x04 目录遍历

  • 通过thinkphp的I方法进行传参

  • path默认值为temp,当我们传参数时,将不使用默认值

  • 这时可以传入../进行目录穿越

  • getfiles的作用是为了获取文件列表

  • $path 为可控,所以可以进行目录穿越

某软件存在目录遍历漏洞


某软件存在目录遍历漏洞


  • $allowFiles 值为 .+ ,所以在进行preg_match 的时候 可以匹配所有文件

某软件存在目录遍历漏洞


最终payload:
http://xxx.xxxx.cn/index.php/Home/uploadify/fileList?type=.+&path=../

06


漏洞利用


例子:可通过目录遍历,下载SQL备份文件,登陆后台
官方演示站做测试:
payload
http://xxx.xxxx.cn/index.php/Home/uploadify/fileList?type=.+&path=../
直接GET请求payload

某软件存在目录遍历漏洞

获取sql路径下载地址,直接web访问地址:

某软件存在目录遍历漏洞


下载地址

http://xxx.xxx.cn/public/upload/sqldata/20171030-165720-1.sql

SQL文件为后台自动备份功能,定期自动备份。

下载后通过筛选 tp_admin   找到后台登陆账号密码。

admin', '[email protected]', '519475228fe35ad067744465c42a19b2',


某软件存在目录遍历漏洞


07


修复建议


  1. 限制path 用户可控
  2. 限制文件类型
  3. 尽量设置为私有函数,不要设置为公用函数,防止用户前台利用。


PS:本文仅用于技术讨论与分析,严禁用于任何非法用途,违者后果自负。




EDI安全

某软件存在目录遍历漏洞

扫二维码|关注我们


一个专注渗透实战经验分享的公众号


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: