0x01 最近有一位粉丝朋友私信我,给我发了一个网上商城,问我能不能做一下渗透测试,我拿来看了一看,由于是在网吧,没有什么环境,但是简单一看就发现这个站真的可以说是漏洞百出,这样的商城还能开这么久,真的是一件奇怪的事情

我们先看看他的主页

看上去很是精美,这个页面可能就骗过了许多人,觉得这是一个防护森严的正规商城,但是我们仔细看下去,真的是这样么,我们看到这是一套开源的cms,我们可以在网上下载到它的源码

0x02 开始找漏洞

我们从index.php找到应用层目录application,在application目录下找到admin的控制器

这就是所有的控制器,渗透经验丰富的同学一定会注意到upload这个控制器,这是一个毁誉参半的东西,我们著重关注一下他

总共有700多行,笔者看了一会儿,忽然电脑提示我余额不足,正当我准备去交费的时候,发现了一个问题

这七百多行都没有一个身份验证的判断???

那岂不是说谁都可以上传文件???

这里就是正常的获取路径,文件名,并没有发现对文件的后缀判断语句,直接获取,然后对文件改名,最后复制到指定目录,重要的代码在这

// 文件上传成功执行下边的操作
if (! strstr(UPLOAD_VIDEO, $this->reset_file_path)) {
@unlink($_FILES[file_upload]);
$image_size = getimagesize($ok["path"]); // 获取图片尺寸
if ($image_size) {

$width = $image_size[0];
$height = $image_size[1];
$name = $file_name_explode[0];

switch ($this->file_path) {
case UPLOAD_GOODS:
// 商品图
$type = request()->post("type", "");
$pic_name = request()->post("pic_name", $guid);
$album_id = request()->post("album_id", 0);
$pic_tag = request()->post("pic_tag", $name);
$pic_id = request()->post("pic_id", "");
$upload_flag = request()->post("upload_flag", "");
// 上传到相册管理,生成四张大小不一的图
$retval = $this->photoCreate($this->reset_file_path, $ok["path"], "." . $file_name_explode[$suffix], $type, $pic_name, $album_id, $width, $height, $pic_tag, $pic_id, $ok["domain"], $ok["bucket"]);
if ($retval > 0) {
$this->return[code] = $retval;
$this->return[message] = "上传成功";
$this->return[data] = $ok["path"];
} else {
$this->return[message] = "上传失败";
}

在文件上传成功之后,会用getimagesize()这个函数去获取图片信息,否则会强制改掉文件后缀,并报错提醒

那我们看看这个漏洞点

xxx/index.php?s=/admin/upload/uploadfile

0x3 开始测试

这时候我们构造一个表单,用post传一个图片马试一试

图片马后缀php,回显会告诉你他的路径

这里这个站也会过滤eval函数的post方式。。。我传一个get形式的一句话执行一下phpinfo();

看到可以执行,这时候写上过狗的后门(要自己发挥想像力了),连上过狗的菜刀,打完收工

网费刚好到点,溜溜球了


推荐阅读:
相关文章