目录
配套资源(百度网盘):
链接: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
利用验证