记一次比较蛋疼的渗透(getshell)

0X01 前景

   fofa扫外网xmapp建站的时候扫到了一个FengOffice搭建的企业项目管理系统,很幸运的弱密码登录进去。查看版本号1.7.5,便想苍蝇小也是肉看看能不能getshell

0X02 漏洞一把梭?

    老规矩,对于这种已知CMS我都是先谷歌一下、或者是Exploit DB找一下有没有可以利用的漏洞EXP。


Exploit DB结果
谷歌结果

    经过搜索好像是有一个任意文件上传,但是利用EXP一把梭的时候失败。竟然有任意文件上传出现,那找找上传点看能不能绕过。找了一下在档案上传处有一个不检验后缀的上传,

    但是我们可以看到上传之后文件是通过路由方式读取的不是直接使用相对路径,没有办法找到相对应的文件。当然这里第一时间的做法还是扫目录看看能不能尝试扫到上传目录然后访问到我们上传的shell,不过当然是失败了。中间还有几个方式就略过了。

0X03 代码审计getshell

    想一想,不然自己看下源码审一下了,先去github搜一下源码。有挺多套的选一套最接近目标版本的,2.1.0版本的代码审计一下,直接锁定文件上传控制器文件。


当然你要我整个文件看下来是不可能的,毕竟就是顺手拿一下,怎么办呢?抓文件上传包直接搜参数锁定文件上传涉及的流程函数。


缓存文件


添加文件

看到这两个包我们大胆猜测一下url中的a参数应该就是方法名,直接在控制器类中搜索


搜索结果

这里略过审查流程了,大概就是上传文件后会先建立一个缓存文件,然后添加文件后会删除缓存文件(这里题外话一下其实在第二步的时候光看抓包就看出来,也想利用抓包不放的方式访问,结果发现不是存的php就放弃了)。 还是这段缓存文件创建的代码。我们可以看到拿到传入的id参数之后直接拼接文件名fname=ROOT+"/tmp/$id",然后直接copy创建,那么这里id可控且没有过滤,基本到这里就可以确立getshell了。

这里就是抓一个缓存包,然后修改id参数为../shell.php后放包,再抓住add_file的包不放。然后直接访问根目录下的shell


结果

0X04 后记

null

你可能感兴趣的:(记一次比较蛋疼的渗透(getshell))