WEB漏洞-RCE代码及命令执行漏洞全解

在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞

QQ截图20220128092219.jpg

代码执行 RCE 漏洞

  • eval() : 把字符串作为PHP代码执行

函数eval()语言结构是非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。 如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,不要允许传入任何由用户 提供的、未经完整验证过的数据

<?php @eval($_REQUEST['x']);?>

QQ截图20220128093429.jpg

命令执行 RCE 漏洞

  • system() : 执行外部程序,并且显示输出

实际上改函数将字符串以系统命令的方式执行,如果传入用户提供的过滤不严格的字符串,会产生严重的漏洞

<?php @system($_REQUEST['x']);?>

QQ截图20220128093800.jpg

墨者靶场黑盒功能点命令执行-应用功能

经过测试和阅读,发现该input输入框具有前端验证并且可以执行系统命令,利用这点和提示,绕过前端验证并且使用管道符号拼接命令就可以命令注入

QQ截图20220129110423.png

QQ截图20220129110505.png

使用burp抓包后,绕过前端验证,用管道符号拼接命令执行,这里需要注意,由于webshell不是持久化shell所以vi,vim之类的交互命令都无法使用只能用cat等非交互命令查看

QQ截图20220129110809.png

QQ截图20220129111412.png

墨者靶场白盒代码及命令执行-代码分析

根据给出的提示,进行解密,获得的解密结果如下

QQ截图20220129112448.png

QQ截图20220129112719.png

分析后,只要传入a参数就可以利用eval函数执行系统命令

QQ截图20220129112859.png

QQ截图20220129113141.png