目录
一,白盒审计-Finecms-代码常规-处理逻辑
黑盒思路:寻找上传点抓包修改突破获取状态码及地址
审计流程:功能点-代码文件-代码块-抓包调试-验证测试
二,白盒审计-CuppaCms-中间件-.htaccess
三,白盒审计-Metinfo-编辑器引用-第三方安全
配套资源(百度网盘):
链接:https://pan.baidu.com/s/1kl84Z8ttjp_pI4tWskcv-A?pwd=mnkl
提取码:mnkl
本章知识点:
1 、白盒审计三要素
2 、黑盒审计四要素
3 、白黑测试流程思路
前置知识:
后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码 ( 解析漏洞除外 )
如: jpg 图片里面有 php 后门代码,不能被触发,所以连接不上后门
如果要图片后缀解析脚本代码,一般会利用包含漏洞或解析漏洞,还 有.user.ini&.htaccess
文件上传:
黑盒:寻找一切存在文件上传的功能应用
1 、个人用户中心是否存在文件上传功能
2 、后台管理系统是否存在文件上传功能
3 、字典目录扫描探针文件上传构造地址
4 、字典目录扫描探针编辑器目录构造地址
白盒:看三点,中间件,编辑器,功能代码
1 、中间件直接看语言环境常见搭配
2 、编辑器直接看目录机构或搜索关键字
3 、功能代码直接看源码应用或搜索关键字
一,白盒审计-Finecms-代码常规-处理逻辑
黑盒思路:寻找上传点抓包修改突破获取状态码及地址
进入网站首页,注册登入,进入个人中心上传图片并抓包分析
通过抓包发现,请求数据包并没有看到图片的名称以及类型,这里猜测tk的值就是图片信息,并且进行了base64编码,这里解码tk值看看
解码发现内容和图片16进制内容有相似之处,现在将tk值的jpg替换成php,并将后面的用一句话木马进行替换,注意后面代码也要用base64编码
根据返回信息无法判断有没有上传成功,我们根据上传成功的图片路径访问.php文件看看结果
返回404错误,现在有两种可能,一就是没有上传成功,二就是上传成功但是路径不一样了,或者文件名被改了
审计流程:功能点-代码文件-代码块-抓包调试-验证测试
通过抓包获取基本路径,然后找到对应的php文件,找到对应函数进行分析
源码
public function upload() {// 创建图片存储文件夹$dir = SYS_UPLOAD_PATH.'/member/'.$this->uid.'/';@dr_dir_delete($dir);!is_dir($dir) && dr_mkdirs($dir);if ($_POST['tx']) {$file = str_replace(' ', '+', $_POST['tx']);if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){$new_file = $dir.'0x0.'.$result[2];if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {exit(dr_json(0, '目录权限不足或磁盘已满'));} else {$this->load->library('image_lib');$config['create_thumb'] = TRUE;$config['thumb_marker'] = '';$config['maintain_ratio'] = FALSE;$config['source_image'] = $new_file;foreach (array(30, 45, 90, 180) as $a) {$config['width'] = $config['height'] = $a;$config['new_image'] = $dir.$a.'x'.$a.'.'.$result[2];$this->image_lib->initialize($config);if (!$this->image_lib->resize()) {exit(dr_json(0, '上传错误:'.$this->image_lib->display_errors()));break;}}list($width, $height, $type, $attr) = getimagesize($dir.'45x45.'.$result[2]);!$type && exit(dr_json(0, '图片字符串不规范'));}} else {exit(dr_json(0, '图片字符串不规范'));}} else {exit(dr_json(0, '图片不存在'));}
通过对代码的阅读发现,并没有都文件进行过滤,但是将文件前缀改成了0x0,现在我们尝试将名称改为0x0再次访问
发现执行成功,说明我们刚刚上传的php文件上传成功了,只是名称被改了
二,白盒审计-CuppaCms-中间件-.htaccess
黑盒思路:存在文件管理上传改名突破,访问后在突破
无法上传php文件,但是通过修改名称抓包,将后缀改掉可以成功将文件后缀该成.php,但是.php文件并不能执行,没有执行权限,因为同目录下有.htaccess文件,限制了php文件的权限。可以通过删除.htaccess文件使php文件拥有权限,也可以在修改名称的时候将文件放到上一级目录。
审计流程:功能点-代码文件-代码块-抓包调试-验证测试
三,白盒审计-Metinfo-编辑器引用-第三方安全
黑盒思路:探针目录利用编辑器漏洞验证测试
用目录扫描器扫描发现存在fckeditor编辑器,通过版本路径获取版本,根据版本查找有没有exp
审计流程:目录结构 - 引用编辑器 - 编辑器安全查询 -EXP 利用验证