0x00 背景

这套系统审了很久了,审计的版本是1.6,前台审不出个所以然来。前台的限制做的很死。

入库的数据都是经过mysql_real_escape_string,htmlspecialchars的处理。

二次注入没找到,逻辑漏洞也没找到。抛开实际利用来说,简单讲讲两个任意文件删除漏洞,在拿到后台之后的getshell方法。

0x01 phpshe程序简介

phpshe是一个开源商城程序,程序在前台入库的地方都用了pe_dbhold函数(mysql_real_escape_string,htmlspecialchars过滤),虽然用的是全局变量注册,但是进行了变量的划分。

加上了各自不同请求的前缀。使得变量不能夸请求覆盖,同时底层有入库的参数值都是用单引号进行包含。

所以注入是不可能的了,加上htmlsepcialchars的过滤,连xss都没发现一个。

上传方面用的是白名单,限死了后缀,加上文件名重命名,使用时间加上大范围随机数md5的方法。

前台就介绍到这里,讲讲后台的一些情况。

后台大部分都进行了csrf防御,只有少部分没有(一些查询操作,没有实际作用),几乎所有后台页面都是存在注入,但由于程序是没有开启报错的。

所以是没有办法通过报错的方式拿到绝对路径,后台的注入其实等于没用,也没有越权的情况(通过鉴权文件,加载后台模块)。

看了一下乌云镜像站上关于该程序的历史漏洞也是少的可怜,程序的安全性确实做得很好。

那么下面就讲讲两个后台任意文件删除,与及拿shell。

0x02 后台两处任意文件删除至getshell

1,文件module\admin\db.php( 数据库操作相关)

没有任何过滤,直接拼接路径删除。但是有csrf防御。

2,文件 module\admin\moban.php(模板操作相关)

也是等同于没有任何过滤,有csrf token防御。

再看看安装文件的逻辑。

将配置参数写入到配置文件中,直接写入,没有任何过滤,可以通过重装的方式直接getshell。(动作太大了)


 0x03 更新

更新一下吧,有几个小问题。

一个是前台的任意用户密码重置,犯了最常见的用户密码重置的错误之一,直接把token返回到前端了。

当然,这个在实际环境颇为鸡肋,需要知道用户的用户名和邮箱(且这套系统的普通用户登录时不需要验证码的,直接爆破就好了)

文件:/module/user/do.php

而其实这里是我之前在找头攻击的时候无意之中发现的。

这里也是存在着host头攻击的,找回密码的方式用的是链接的方式,存在着头攻击。

文件:/module/user/do.php

这里要提一下头攻击的问题。可以参考林林总总的Host Header Attack这篇文章与及p牛提攻击《LNMP架构Web应用的几个小Tricks》提到的nignx+php获取host头的Tirck。

当环境是apache+php的时候,p牛没有说明,我自己测了一下,总结下来就是

apache 解析host头的时候取得是最后一个,而PHP通过$_SERVER['HTTP_HOST']取到的host头为所有的,用逗号隔开。

比如存在多个Host头的时候,

Host: www.phpshe.cc
Host: www.unkown.com  

此时apache 取得的Host是www.unkown.com,而php 通过$_SERVER['HTTP_HOST']取到的host头的值为:www.phpshe.cc,www.unkown.com。

无论是apache 还是nginx 都是可以配置多个server的,当它们找不到server的时候都会发送给默认的server进行处理。而这个默认的server是指在配置文件中排列较前的server配置。

所以这里的头攻击,倘若是apache+php的模式的话,主机上必须只能架设目标网站一个server,否则就会失效。

还有就是后台管理登录处无视验证码直接爆破。

看到文件/module/amdin/do.php, 后台登录代码:

整个逻辑判断竟然是先去数据库里面去匹配用户名和密码,如果用户名和密码正确,才判断验证码。那么完完全全可以无视验证码了。

当用户名和密码正确的时候,验证码错误时返回验证码错误。

当用户名和密码错误的时候,直接返回用户名和密码错误。

当然这里只是代码的表现,但其实在实际中是看不到这些提示的,实际操作后发现可以通过返回包中是否是直接跳转到admin.php来判断。

当用户名和密码错误的时候,跳转回登录页面继续登录。

当用户名和密码正确的时候,直接跳转到admin.php

0x04 总结

看了很久这个程序,没有审出什么来,写个总结吧!

死磕了很久,依旧没有发现比较严重的问题,颇为鸡肋。

想寻找几个经典案例感觉都挺难的,菜鸡仍需努力啊!

[代码审计]phpshe开源商城后台两处任意文件删除至getshell的更多相关文章

  1. WebLogic 两处任意文件上传漏洞动态分析(CVE-2018-2894)

    0x01 前言 CNCERT前几天发公告称发现Oracle公司出品的基于JavaEE结构的中间件WebLogic产品存在一个远程上传漏洞,并得到了厂商的确认,危害程度评分高达9.8分.鉴于厂商已进行了 ...

  2. [代码审计]云优cms V 1.1.2前台多处sql注入,任意文件删除修复绕过至getshell

    0X00 总体简介 云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义字段,自定义表单,自定义栏目权限,自定义管理权限等众多功能深受用户青睐,上线短短3个月,下载次 ...

  3. 【代码审计】iZhanCMS_v2.1 后台任意文件删除漏洞分析

      0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...

  4. 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  5. 【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞

      0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...

  6. ThinkSNS2.5前台getshell+后台任意文件删除

    12年爆出的一个洞 前几天比赛的一个cms  于是跟出题人表哥要过来审计了看看 漏洞文件再根目录thumb.php中 <?php /* * 自动缩略图 参数 url|w|h|type=" ...

  7. 【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  8. 【代码审计】YzmCMS_PHP_v3.6 任意文件删除漏洞分析

      0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...

  9. PHP:网展cms后台任意文件删除和sql注入

    0x01:目录结构 可以发现Frameword是框架的文件 install安装 public公共文件 uploads储存上传之类的文件 webuser后台文件 Home前台文件 0x02.csrf漏洞 ...

随机推荐

  1. 集合框架基础知识-----java基础知识

    Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...

  2. python高级特性和高阶函数

    python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...

  3. 函数和常用模块【day05】:装饰器前奏(一)

    本节内容 定义 原则 实现装饰器的储备知识 函数及变量 高阶函数 一.定义 1.装饰器:本质是函数. 2.功能:用来装饰其他函数,顾名思义就是,为其他的函数添加附件功能的. 二.原则 不能修改被装饰函 ...

  4. SQL记录-PLSQL变量与常量文字

    PL/SQL变量   变量是只不过是一个给定的存储区域,程序可以操纵的名称.PL/SQL每个变量具有一个特定的数据类型,它决定了大小和变量的存储器的值,可以说存储器和设置操作可以施加到可变内被存储的范 ...

  5. [国家集训队2012]middle

    http://cogs.pro:8080/cogs/problem/problem.php?pid=1763 二分答案x 把区间内>=x的数设为1,<x的数设为-1 左端点在[a,b]之间 ...

  6. 2018年10月14日ICPC南京站参赛总结

    这次比赛消耗掉了我们全部的信心和精力 在热身赛上,总体来说还是比较愉快的,这个时候心态就不对 正赛的时候我们遇到了A题签到题 我一开始是读错了题意了,认为这个题是一个裸的SG函数,而且那么多人秒过 W ...

  7. Markdown 详细语法

    << 访问 Wow!Ubuntu NOTE: This is Simplelified Chinese Edition Document of Markdown Syntax. If yo ...

  8. JAVA 位操作学习

    一,基础知识 计算机中数值的编码方式中,原码.反码.补码. 正数的补码与原码相同,负数的补码为:负数的原码符号位不变,其它位取反,再加1. 在计算机中,数值是以补码的形式存储的.补码的好处: ①用补码 ...

  9. Sublime Text 之运行 js 方法[2015-5-6更新mac下执行js]

    昨天说完<Sublime Text 2 绿化与汉化 [Windows篇]>,今天我们来说说怎么用st直接运行 js 吧.群里的小伙伴一直对我的 ST 能直接运行js感到非常好奇,今天我就公 ...

  10. [译]使用chage来管理Linux密码过期时间的七个例子

    本文译自 7 Examples to Manage Linux Password Expiration and Aging Using chage 本文主要介绍命令chage的使用,译文会对原文内容会 ...