(30)【RCE集合】RCE漏洞的原理、出现地方、相关命令、函数解析、利用详细的过程

目录

一、介绍:

二、原理:

三、漏洞出现

3.1、代码执行:

3.1.1、脚本:

3.1.2、产生:

3.2、命令执行:

3.2.1、系统:

3.2.2、产生:

四、命令:

4.1、执行系统命令的函数(PHP中)

4.1.1、system()

4.1.2、passthru()

4.1.3、exec()

4.1.4、shell_exec()

4.1.5、popen()

4.1.6、proc_open()

4.1.7、pcntl_exec()

4.2Windows系统命令拼接

4.2.1、“|”:commandA | commandB

4.2.2、“&” commandA & commandB

4.2.3、“||” commandA || commandB

4.2.4、“&&” commandA && commandB

五、利用过程:

 5.1、pikachu(RCE-exec"ping")

5.1.1、 分析:

 5.1.2、漏洞利用:

5.2、 pikachu(RCE-exec"evel")

5.2.1、 分析:

5.2.2、漏洞利用:


一、介绍:

利用RCE漏洞,有两种执行方式,向后台服务器远程注入操作系统命令(即远程命令执行RemoteCommand Exec)或者远程代码执行(Remote Code Exec),顾名思义就是远程执行,通过上述的远程注入后,从而执行系统命令,进而控制后台系统。

二、原理:

我在软件工程等课程中都有看到,为满足用户远程执行等功能(如路由器、防火墙、入侵检测等设备的web管理界面上ping操作的web界面),在设计的时候都会设置提供给用户的接口。如果对用户的输入没有做严格的安全控制,这些接口可能会被攻击者利用提交远程执行命令或代码,进一步控制了整个后台系统。

三、漏洞出现

3.1、代码执行:

3.1.1、脚本:

PHP、java、python

3.1.2、产生:

web源码:thinkphp、eyoucms、WordPress

中间件平台:Tomcat、Apache Struts2、Redis

其他环境:PHP-CGI、Jenkins-CI、Java RMI

3.2、命令执行:

3.2.1、系统:

Linux、windows

3.2.2、产生:

web源码:Nexus、Webmin、ElasticSearch

中间件平台:weblogic、Apache

其他环境:postgresql、samba、supervisord


 

四、命令:

4.1、执行系统命令的函数(PHP中)

4.1.1、system()

执行shell命令,向dos发送一条指令,如system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作;而调用color函数可以改变控制台的前景色和背景。

int system(const char *command)

4.1.2、passthru()

只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上

4.1.3、exec()

在PHP中,执行一个外部程序, exec() 执行 command 参数所指定的命令。 

语法: exec(string $command, array &$output = ?, int &$return_var = ?): string

4.1.4、shell_exec()

是PHP中的一个内置函数,用于通过shell执行命令并以字符串的形式返回完整的输出

4.1.5、popen()

通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 已执行 exit 一样

语法:

FILE * popen ( const char * command , const char * type );

int pclose ( FILE * stream );

4.1.6、proc_open()

执行一个命令,并且打开用来输入/输出的文件指针

类似 popen() 函数, 但是 proc_open() 提供了更加强大的控制程序执行的能力。 

语法:resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd [, array $env [, array $other_options ]]] ) 

4.1.7、pcntl_exec()

在当前进程空间执行指定程序

语法:void pcntl_exec ( string $path [, array $args [, array $envs ]] ) 

4.2Windows系统命令拼接

4.2.1、“|”:commandA | commandB

管道符,A命令的标准输出,作为B命令的标准输入

4.2.2、“&” commandA & commandB

先运行输出命令A,然后运行输出命令B

4.2.3、“||” commandA || commandB

先运行输出命令A,如果失败则运行输出命令B

4.2.4、“&&” commandA && commandB

如果运行输出命令A成功,则继续运行输出命令B
(命令A未执行成功,则命令B不执行)

(迟来的祝愿:愿远方只有快乐,挺帅一小伙子的,和我差不多帅,嘻嘻嘻) 

五、利用过程:

 5.1、pikachu(RCE-exec"ping")

5.1.1、 分析:

可以看见给用户提供了一个ping操作的web界面

当输入目标网址后,点击提交,服务器后台会对输入的地址进行了ping测试,并返回了测试结果

www.iqiyi.com

www.iqiyi.com|dir

大多数操作系统(包括DOS及Windows)中dir命令基本上会列出目录中的文件及子目录的名称,也可以列出其文件大小,创建时间等相关信息,并且列出所在的磁盘、可用空间等信息。dir命令也可以寻找其文件名称符合特定条件的文件。

Linux中ls 命令显示当前目录的内容

127.0.0.1 & ipconfig

111 & whoamI

得到设备名,以及用户名

 5.1.2、漏洞利用:

查看权限

Linux下的话使用 ls -al  // a表示全部的包括u,g和o,l表示列出相关信息

windows下 attrib 1.txt   // 查看当前目录下1.txt的属性,包括读写操作属性

如果当前目录有写入权限,就写入木马

反之,没有写入权限,再进行反弹测试

        如果失败,寻找一个可写入可执行的文件(777),并利用RCE漏洞编写一个bash反弹脚本  

                再进行监听、并利用RCE漏洞执行脚本

5.2、 pikachu(RCE-exec"evel")

5.2.1、 分析:

要输入普通字符串,没什么大用(尝试试试php函数) 

再尝试输入一个php函数,看能不能被执行

phpinfo();

没有对用户的输入做严格的过滤,导致被当做PHP脚本执行了,产生了漏洞

5.2.2、漏洞利用:

查看数据包,可以知道表单的参数是txt 

我试的时候,直接复制粘贴过去会报错

 连接失败改错

我再尝试把这个URL编码的大写都改为了小写,然后就成功了

(再次查看值的时候自己变了大写)

利用system()函数,  或者shell_exec()函数,再写反弹脚本

也可直接写在服务器上后,在执行命令下载脚本(wegt)

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值