首页 > 编程语言 >phpstudy后台管理页面存在XSS

phpstudy后台管理页面存在XSS

时间:2023-02-06 15:55:16浏览次数:75  
标签:XSS code return res phpstudy token msg array 页面

一、下载小皮面板

官方下载地址:https://www.xp.cn/

二、漏洞复现

安装完成后来到登录页面,复制好相关后台连接和用户名密码后进行正常登录。

image

在用户名处插入xss语句,验证码需要写对,不然走不到后面的步骤,进行登录,产生登录日志

image

登录验证代码如下:

// 登录
	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;
	}

日志会记录登录失败的用户名,并在登录后将尝试的用户名直接显示在小皮首页当中,而这个过程是没有过滤的,也就可以进行任意xss。

image
image

当管理员登录了面板就会触发xss。
要实现rce的话可以配合小皮自带的计划任务,实现后台添加计划任务实现写webshell、反弹shell等操作,这些交给js就可以实现自动化完成。

js代码内容:

1、添加计划任务,用户名不能重复,所以直接js中生成随机字符串
2、获取刚刚添加的任务ID
3、请求立即执行
4、删除刚刚添加的计划任务
5、清空日志,避免重复触发

标签:XSS,code,return,res,phpstudy,token,msg,array,页面
From: https://www.cnblogs.com/hgschool/p/17095654.html

相关文章