远程代码执行
可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
一、漏洞危害
1、获取服务器权限
2、获取敏感数据文件
3、写入恶意文件getshell
4、植入木马病毒勒索软件等
二、PHP RCE涉及函数
1、命令command注入
2、代码code注入
3、Windows命令拼接符号
4、Linux命令拼接符号
三、示例:(pikachu靶场)
1、ping
127.0.0.1 & ipconfig
2、evel
phpinfo();
也可以直接用蚁剑连接
四、实践(ctfhub rce相关练习)
1、eval执行
(1)看到有eval函数,直接上蚁剑。
(2)蚁剑只看到一个文件
(3)查看当前目录只发现一个文件,切换到根目录下查看,发现flag文件。
2、命令注入
(1)查看代码没有任何过滤,直接查看目录文件
127.0.0.1;ls
(2)发现一个php文件,cat访问。
127.0.0.1;cat 27046314332967.php
(3)访问后页面没有显示,查看网页源代码发现flag。
(4)第二种方法,也可以加密显示。
127.0.0.1;cat 27046314332967.php|base64
3、过滤cat
(1)观察代码发现过滤到了cat,所以在访问文件时需要使用cat的代替命令。
显示相关命令
cat由第一行开始显示内容,并将所有内容输出
tac从最后—行倒序显示内容,并将所有内容输出
more根据窗口大小,一页一页的显示文件内容
less 和more类似。但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail只显示最后几行
nl类似于cat -n,显示时输出行号
tailf 类似于tail -f
4、过滤空格
(1)观察代码发现过滤到了空格,所以在访问文件时需要使用空格的代替命令。
空格的各种形式
使用IFSS9、%09、<、>、<>、{,}、%20、${IFS)来代替空格
5、过滤目录分隔符
(1)观察代码发现过滤了目录分割符,所以在访问文件时需要使用代替命令。
(2)使用;组合多条命令。
127.0.0.1;cd flag_is_here;cat flag_1814925829678.php
6、综合练习
(1)过滤了很多的关键字,需要一一替换。
(2);的替换:%0a回车**%0d**换行
127.0.0.1%0als
(3)flag的替换:使用f***
127.0.0.1%0acd${IFS}f*** _is here%0als
127.0.0.1%0acd${IFS}f***_is_here%0amore${IFS}f***_20021218031292.php
五、漏洞防御
1、开源框架,升级到最新版本
2、尽量不要使用命令执行的函数
3、如果必须使用,需要做白名单处理
4、用正则表达式对用户输入的内容进行处理
5、使用WAF