侵权声明
本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。
如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: [[email protected]]。我们将在确认后的合理时间内采取适当措施,包括删除相关内容。
0x00漏洞poc
上传:
index.php?d=main&m=flow&a=copymode&ajaxbool=true
POST:
id=1&name=a{};phpinfo ();class a
访问:
//地址一
webmain/flow/input/mode_a%7B%7D%3Bphpinfo%20%28%29%3Bclass%20aAction.php
//地址二
webmain/model/flow/2%7B%7D%3Bphpinfo%20%28%29%3Bclass%20aModel.php
0x01漏洞分析
通过poc找到文件上传点
webmain -> main -> flow -> flowAction.php -> copymodeAjax()
copymodeAjax函数上半部分
红框一
获取输入进来的name值并且全部转换成小写
红框二
判断输入进来的name在数据库中是否已经存在,如果已经存在本次上传结束,如果需要上传多次验证debug此时文件需要修改,我的建议是修改calss后面的字母
判断前id参数是否在数据库中存在,即是否存在id号的模板
copymodeAjax函数下半部分
红框一
获取本次复制模板的所以文件数量和模板位置
红框二
$from = str_replace('{bh}',$obha,$file);
得到正真模板的位置,参数obha是存在模板名,参数file是模板位置的模板
$to = str_replace('{bh}',$bhnu,$file);
获取存放复制结果的地方,和获取模板是同样的原来
红框三
从模板中获取文件内容
这行代码的目的是在 $fstr
中找出所有的'flow_'.$obha.'ClassModel'
模板名,并用 'flow_'.$bhnu.'ClassModel'
替换掉它们,其中的bhnu的值等于name
跟进createtxt()
函数
第一句就是创建文件。
第二个红框位置是测试文件是否可以创建并打开,如果失败无法写入。
两个if判断都是同样的效果,这就相对于将一句话或其他测试语句写入文件达到文件上传的目的。
其他的模板就是完全复制没有修改,这就是为什么有两个访问路径
poc组成(瞎猜版)
name=a{};phpinfo ();class a
我分成三部分
第一部分a{};
认为是为了和前面的class进行闭合,为了使中间的语句起作用和sql注入闭合'
分号差不多。
第二部分phpinfo();
危险函数
第三部分class a
试了一下如果将a删除此时calss关键字就不会起作用,此时类名会报错无法正常访问该文件,因为访问会报错。
可以看出该模块是担任前面的那个class的职责
以上内容纯属瞎猜
0x02漏洞复现
1、发送文件上传包
2、访问
0x03总结
我感觉上传方式很新奇,可能是见识少了
危险函数createtxt()
0x04参考
信呼OA普通用户权限getshell方法 - FreeBuf网络安全行业门户
免责声明
本博客所提供的技术知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提升。作者严禁将这些技术和信息用于任何非法或不道德的目的。
使用本博客内容而导致的任何违法行为或后果,作者不承担任何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保遵守当地法律法规。
我们鼓励所有读者合法地使用所提供的信息和技术,致力于维护安全和负责任的网络环境。
感谢您的理解与支持。
标签:文件,红框,name,flow,OA2.6,上传,信呼,模板 From: https://www.cnblogs.com/0kooo-yz/p/18336817