命令执行详解

RCE

        RCE(remote code execute):远程命令执行或者代码执行,我们平时说的rce,比如thinkPHP的rce漏洞,即算代码注入漏洞,也算rce漏洞,因为渗透的最终情况可以实现执行命令或者是代码都属于RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE。

命令执行的原理

        命令执行漏洞指的是网站的应用程序有些需要调用执行系统命令,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

命令执行的成因

1、代码层过滤不严格:商业应用需要执行命令,商业应用的一些核心代码可能封住在二进制文件当中,在web应用中通过system函数调用。

system("/bin/program --arg $arg")

2、调用第三方组件存在的代码执行漏洞:如wordpress,可以选择imagemagick这个常用的图片处理组件,处理用户上传图片时造成命令执行;还有JAVA中 struts2/elasticsearch groovy等。

命令执行漏洞分类

1、代码层过滤不严

2、系统的漏洞造成命令注入

3、调用的第三方组件存在代码执行漏洞

常见的函数

  1. system():将字符串作为操作系统命令执行,并返回命令执行结果。
  2. exec():将字符串作为操作系统命令执行,但只返回执行结果的最后一行(无回显)。
  3. shell_exec():将字符串作为操作系统命令执行,可以获取命令的完整输出。
  4. passthru():将字符串作为操作系统命令执行,不返回任何结果,但将命令的运行结果输出到标准输出设备上。
  5. popen():popen函数用于打开一个指向进程的管道,该进程由command参数指定的 shell 命令启动。    
  6. proc_open():proc_open()函数在功能上与popen()类似,但它提供了更多的控制,可以传递更复杂的参数数组,并可以双向传递数据。
  7. pcntl_exec():用于替换当前进程映像,即执行一个新程序并覆盖当前进程的内存映像。
  8. 反引号 ```: 将反引号内的字符串解析为操作系统命令。

利用条件

1、应用调用执行系统命令的函数

2、将用户输入作为系统命令的参数拼接到了命令行中

3、没有对用户输入进行过滤或过滤不严

Windows常用的命令和特殊字符

常用的命令

1、dir----查看文件目录

2、ipconfig----查看Windows的IP地址

3、arp -a----查看ARP缓存表

4、calc----在命令行打开计算器

5、regedit----打开注册表

6、netstat -ano----查看开放的端口信息

特殊字符

1、|       直接执行后面的语句

2、||      前面出错执行后面的,前面为假

3、&     前面的语句为假则直接执行后面的,前面可真可假

4、&&   前面的语句为假则直接出错,后面的也不执行,前面只能为真

Linux常用的命令和特殊字符

常用的命令

1、cat /etc/passwd----查看

2、passwd文件 id----查看该用户的ID号

3、groups----查看用户所属的组

4、cat /etc/group----查看组信息

5、whoami----查看当前用户

6、pwd----查看当前路径

7、uname -a----查看主机信息

8、cat /etc/issue----查看主机的配置信息

9、netstat -pantu----查看开放的端口信息

10、netstat -nr----查看路由信息

特殊字符

1、;       前面的执行完执行后面的

2、|          管道符,显示后面的执行结果

3、||         当前面的执行出错时执行后面的

4、&        前面的语句为假则直接执行后面的,前面可真可假

5、&&     前面的语句为假则直接出错,后面的也不执行,前面只能为真

命令执行getshell

1、直接获取getshell

?cmd=echo " <?php @eval($_REQUEST[123]);?> " > D:\phpstudy\PHPTutorial\WWW\webshell.php

2、显示当前路径

例如可以提交参数 ?cmd=cd 来查看当前路径

3、读文件

例如:?cmd=type c:\windows\system32\drivers\etc\hosts,来查看系统hosts文件。

4、写文件

例如可以提交参数 ?cmd=echo "<?php phpinfo();?>" > D:\shell.php

命令执行危害

继承web服务程序权限去执行系统命令或读写文件

反弹shell

控制整个网站甚至控制服务器

进一步内网渗透

命令执行防御

1、禁用部分系统函数:高危系统函数可直接禁用,从根本上避免程序中命令执行类漏洞的出现。

禁用方法:打开PHP安装目录,找到php.ini,查找到disable_functions,添加需禁用的函数名,如:phpinfo()、eval()、passthru()、exec()、system()、chroot()、chgrp()、chown()等

2、严格过滤关键字符(管道命令)

3、严格限制允许的参数类型

4、使用escapeshellarg函数来处理命令函数

5、使用safe_mode_exec_dir指定可执行文件的路径(php.ini)

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值