闲逛的时候看到一个站点想搞一搞,简单信息收集了一下,发现站点使用的phpcms搭建
网上找了一些公开的exp打一波,发现都GG
随后进行目录扫描发现后台,尝试弱口令登录,发现回显管理员不存在,说明存在用户枚举
进行用户名爆破,最后成功爆破了两个用户,再进行密码爆破,成功爆破出其中一个
登录后发现只是站点管理员,很多模块都没有显示,根据网上公开的一些后台getshell方式搞了一波,还是全部GG。
之后找到一个index.php远程代码执行漏洞,可以成功写入PHPinfo();访问成功执行
但是发现进行写码子还是不行,猜测waf拦截进行免杀还是不行
一顿翻看后台功能发现可以进行管理员管理,但是由于修改密码是不可逆操作,所以在未授权的情况下就不能搞,为了验证是否存在越权修改密码,我本地搭建了一下,发现修改密码无效
看另一处添加管理员模块,进行管理员添加。但发现都是低权限的管理
Burp抓包发现参数info%5Broleid%5D=2
猜测超级管理员是否为1,随后进行修改数据包info%5Broleid%5D=1成功添加,进行登录添加的账户,随后发现成功添加为超级管理员
之后就不多说了很多模块都能使用了,直接参照网上后台getshell,简单进行码子免杀成功一发入魂,最后漏洞平台提交一波完事收工。
整体流程没啥难度,就是过程中有很多失败的姿势就不一一写进来了。
后续回顾整理index.php远程代码执行漏洞为何写不进去码子
利用本地搭建的环境进行写码,发现依次替换到实战环境变换一句话出现$_POST[1]类型时会被过滤,字符会被清除,无法成功写入,字符过长也无法写入
例:写入<?php fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd]);?>');会发现生成的PHP文件变为<?php eval()?>
实战环境写变形码和冰蝎这类发现出现回车等字符依然无法成功写入
既然一些字符会导致无法成功写入,那么就利用base64来写免杀的码子,一开始发现还是不能写,本地环境测试语句没问题,最后反复测试反复修改码子内的空格回车等字符之后成功(玄学)