一次方维o2o商城PHP审计学习
PHP审计源码学习
**一、渗透测试**
起因是朋友问fanwei o2o源码搭建的站后台能不能拿shell,于是我进后台进行了一番尝试,各功能点没什么进展,好多地方过滤了,上传也是白名单,编辑器的1day修了,万幸的是有个拿不到shell但是可以执行sql语句的功能点,再通过fofa提取特征,在其他站点下拿到一份残缺的源码(Git_Extract工具拖出来的源码文件名是中文会乱码,换用GitHack解决)。
这次学习过程中不同时间拿到了三份不同版本的源码(v1.x,v3.x,v6.5),真实环境的站一个是朋友发的那个v3.x的站一个是fofa找的v6.9的站。
尝试Shell写到慢日志绕过priv,需要绝对路径,我是这么找的:
1.写python脚本遍历源码下的所有路径和文件后burp suite访问所有文件甚至是构造畸形参数以尝试出现报错页面。
2.在上传iconv压缩包处上传畸形压缩包制造报错找到了绝对路径
可惜sql语句执行错误,没有写入权限,高版本的话对这里则是做了过滤,替换了反斜杠。
** 二、审计源码**
通过前期翻sql表的信息收集可以知道任务计划表的data字段是序列化后存储在数据库的表里的,所以拿到源码先看了任务计划处功能点的“立即执行计划任务”的操作,使用
“立即执行计划任务”操作会将yanhuo_schedule_list表的data字段值反序列化后再调用类自定义的exec函数,所以我就想通过updata语句修改成我们需要的payload然后流入exec函数,而残缺的源码里正好缺了这部分找不到exec()函数里面咋写的。
源码残缺的太多了,就通过源码特征发现了个高版本(v6.5)而且齐全的源码(但本地搭不起来),在这里审到了 二次注入配合下的文件写入漏洞,只要update语句修改fanwe_conf表里面的字段构造payload,调用update_sys_config()函数触发file_put_contents() 应该就能成功写shell。
**在修改佣金提现手续费处会调用update_sys_config()函数**
构造payload时要注意:1.对于value字段用addslashes ()函数做了一遍过滤payload插name字段即可.2闭合数组
真实环境下6.9版本的站,修复了这个漏洞(6.9版本对name字段似乎也做了一定黑名单过滤php关键字会替换为空,即使payload尝试写入html文件,也触发不了file_put_contents ()函数
**文件上传漏洞(v3.x) ,这个漏洞利用过程比较常规:**
do_upload_icon()函数内对上传的zip文件解压后递归删除文件、文件夹
跟进unzip函数
提取压缩包文件名:
这里拼接了我压缩包内文件的文件名(../ll.php)导致文件创建到上一级目录避免被删除:
**三、最后**
这次学习觉得很有意思,萌新的一次分享希望能够对大家有帮助!有什么没讲清楚的地方可以回复我
评论18次
有机会研究下方维的直播xi统,之前很多某些直播用的是方维二开的
学xi了,果然土司是个好地方。
思路挺不错的
虽然还没搞明白,但是大佬讲的还是蛮仔细的
之前看到过好几个帖子,都是上传压缩包解压递归删除,都没有对../进行校验,导致跳过删除的逻辑;另外,师傅我想请问一下,通过Fofa这种搜索到指纹后,你们通过啥去发现有.git文件泄露的,一个一个扫吗
是的,收集起来批量扫
之前看到过好几个帖子,都是上传压缩包解压递归删除,都没有对../进行校验,导致跳过删除的逻辑;另外,师傅我想请问一下,通过Fofa这种搜索到指纹后,你们通过啥去发现有.git文件泄露的,一个一个扫吗
之前看到过好几个帖子,都是上传压缩包解压递归删除,都没有对../进行校验,导致跳过删除的逻辑
思路挺不错的enen
思路挺不错的
学xi了,果然土司是个好地方。
师傅 请教一下 这个上传点再后台的那个功能点呀,找了半天 没有翻到
师傅没找到的话可以下载这个试试,我之前电脑不在身边 https://github.com/redisck/fanwe
咋文章中的图片顺序看着都对不上 代码上张对不齐下一张。。
坏掉了,尝试了几次没搞定
不用这么麻烦 直接尝试phpmyadmin 漏洞差不多
师傅 请教一下 这个上传点再后台的那个功能点呀,找了半天 没有翻到
在“商品分类”处,有个上传图标的点
咋文章中的图片顺序看着都对不上 代码上张对不齐下一张。。
有机会研究下方维的直播xi统,之前很多某些直播用的是方维二开的
慢日志找绝对路径思路不错
这个有源码的下载地址吗,想学xi一下,找到了v3.x的
师傅 请教一下 这个上传点再后台的那个功能点呀,找了半天 没有翻到
php还可以操作的多吗
我也想知道,感觉都好难
php还可以操作的多吗