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. 第一篇:打造专属开发工具Eclipse篇

    第一篇:打造专属开发工具Eclipse篇 eclipse 优化 1.动画很酷,但如果可以的话,我总是在所有的工具中禁用动画.所以classic或者window classic主题是我最常用的主题 , ...

  2. UnicodeDecodeError gbk codec can't decode byte in position illegal multibyte sequence

    UnicodeDecodeError:'gbk' codec can't decode byte in position : illegal multibyte sequence 觉得有用的话,欢迎一 ...

  3. CSS 设置网页中选中文字的背景色

    在样式文件中增加如下代码: ::selection { background: hsla(5, 92%, 76%, 0.8); color: #fff;}

  4. 20155339 2016-2017-2 《Java程序设计》第6周学习总结

    20155339 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 串流设计 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象 ...

  5. [机器学习笔记]主成分分析PCA简介及其python实现

    主成分分析(principal component analysis)是一种常见的数据降维方法,其目的是在“信息”损失较小的前提下,将高维的数据转换到低维,从而减小计算量. PCA的本质就是找一些投影 ...

  6. Loadrunner如何进行有效的IP欺骗

    柠檬班的清风同学某天紧急求助如何搞IP欺骗,端午节后,抽时间把这个事情搞定啦!跟大家详细的讲讲IP欺骗的运用和理解. 一.什么是IP欺骗 给你客户端的IP地址加个马甲,让服务器端识别不到是同一个IP地 ...

  7. import和require的区别

    node编程中最重要的思想就是模块化,import和require都是被模块化所使用. 遵循规范 require 是 AMD规范引入方式 import是es6的一个语法标准,如果要兼容浏览器的话必须转 ...

  8. QTP图片验证/图片比较/二进制流对比法

    图片验证主要是文件对比,其中我们可以利用二进制的方法读取图片信息,然后进行对比,达到对比的效果,本例子利用fso对象的文件流的方法实现,代码如下: Public Function CompareFil ...

  9. Python 优雅获取本机 IP 方法

    原文 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  10. OE中的bitbake使用

    OpenEmbedded是一些脚本(shell和python脚本)和数据构成的自动构建系统.     脚本实现构建过程,包括下载(fetch).解包(unpack).打补丁(patch).config ...