审计本地靶场

小白一枚,打个beescms本地靶场,第一次,望大佬不吝赐教

首先,访问本地搭建的靶场后台

因为是本地靶场,我就直接看代码了,先猜测登录出有注入

搜索关键字,找到判断登陆出,一般sql的关键字有select insert update mysql_query mysqli等

找到了这里

从这里开始看


这里能够看到,他是判断完账号密码后,在进行验证码的判断,也就存在了跑字典的可能
image-20210818134604887
这边上面是声明了全局变量,下面开始判断用户user和密码password
image-20210818134825702
跟进这两个函数,fl_value和fl_html,这两个函数应该就它对用户的过滤规则,我们定位他俩

这俩在这,

这就是fl_value这个函数,他就是过滤了常见sql语句,然而他只过滤了一边,我们还是可以用双写绕过的,接着往下看

fl_html调用了htmlspecialchars()这个函数,这里它 '转换后还是’,这里就造成了报错注入

sql注入拿到密码进入后台


接着找,在下图这个地方有个上传的地方

我们看一下代码,搜索关键字$_FILES

一般上传的关键字有$_FILES,type="file",上传,move_upload_file()等


点第一个进去

在右上角那个文件下,这不是我们之前找到的那个上传的地方,这是另一个,我们进去看一下!

上传文件,抓包看一下
image-20210818145855448
这俩参数指向我们的地址
image-20210818142101260
找到这俩参数,上面是接收文件,主要看is_uploaded_file这个函数

跟进它,全局搜索,我找到了他的规则

主要看下图
image-20210818143407747
这是对type进行白名单检测,追踪$file_type这参数

主要看下面这两行

这是对后缀名的对比,然后抓包截断一下,上传不成功 ennnnn,这个地方不行
还是找到最开始得那个上传得地方看一下

就是这个上传点,找到它得代码

跟之前一样,直接找到它判断上传的地方
1

2

3
image-20210818145320657
他只是检测了mime类型,并没有对文件后缀名判断
也就是说这个地方验证通过就可以了
图片
直接改成php,然后上传成功,然后蚁剑上场,结束end

我是小白,第一次发稿,大佬留情,勿喷!!