对某商城的一次渗透测试 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(); 看到可以执行,这时候写上过狗的后门(要自己发挥想像力了),连上过狗的菜刀,打完收工 网费刚好到点,溜溜球了 推荐阅读: 相关文章 {{#data}} {{title}} {{/data}}