01
6
命令执行漏洞原理
应用有时要调用一些执行系统命令的函数,如PHP中的 system、exec、shell_exec、Passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以建恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
02
6
命令执行漏洞利用条件
03
6
漏洞分类
在商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:
System(“/bin/program --arg $arg”);
如:WordPress中用来出来图片的lmageMagick组件
Java中的命令执行漏洞(Struts2/ElasticsearchGroovy等)
ThinkPHP命令执行
04
6
漏洞的危害
05
6
本期作者:xxxxx
1.我们拿到靶场
2. 在输入框内我们输入正常的
这是输出正常的提示
3. 我们将恶意的系统里面带进去执行看下,这里以ipconfig为例
我们把系统命令带进去之后,然后他就执行了我们的恶意命令。它先是把前面的127.0.0.1执行完成之后,再来执行我们的ipconfig的。这是后端没有做严格的过滤,用户能用拼接的符号让系统执行其他的命令。
4. 让我们简单的来看下源码
if(isset($_POST['submit']) && $_POST['ipaddress']!=null){ $ip=$_POST['ipaddress'];// $check=explode('.', $ip);可以先拆分,然后校验数字以范围,第一位和第四位1-255,中间两位0-255 if(stristr(php_uname('s'), 'windows')){// var_dump(php_uname('s')); $result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理 }else { $result.=shell_exec('ping -c 4 '.$ip); }} |
---|
在这里的代码我们能看到,没用做任何的过滤
首选通过post去请求,获取相对应的ip地址,然后它会去判断操作系统的类型,如果是Windows的,他就会直接去ping一下IP地址,直接就把
shell_exec('ping '.$ip); |
---|
进行拼接起来执行。
06
6
防范命令执行漏洞