此篇教大家如何利用TCP进行远程命令执行。 一. 命令集 将值得信任的命令放进一个txt文件中,执行命令时,就去这个文件里面找,有就执行命令,没有就不执行。 命令执行模块实现 依然封装成类,将上述命令集写进类中。 命令将被传到 bin/sh 并使用 -c 标志,shell 将执行这个命令,比如sh -c ls type: 只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型 并创建出执行命令类对象。 效果展示 可以看见只要在命令集中的命令都能执行。 总结: 好了,到这里今天的知识就讲完了,大家有错误一点要在评论指出,我怕我一人搁这瞎bb,没人告诉我错误就寄了。
("ls") # 执行ls命令 # os 使用方法 # 使用system模块执行linux命令时,如果执行的命令没有返回值res的值是256 # 如果执行的命令有返回值且成功执行,返回值是0 res = os.system("ls") # popen模块执行linux命令。 返回值是类文件对象,获取结果要采用read()或者readlines() val = os.popen('ls').read() # 执行结果包含在val中 方案二:脚本远程执行命令 在 Python _ssh_fd.close() 方案三:使用SecureCRT脚本 该方法参见此前的博文:SecureCRT 下 Python 脚本编写 参考文献 Python学习总结 06 paramiko 远程执行命令 linux命令(调用linux命令):https://blog.csdn.net/shanliangliuxing/article/details/8811701 (转)python中执行linux命令
Zabbix远程执行命令可以做些什么: 1)重启应用(apache/nginx/mysql)。 2)自定义执行脚本。 3)使用IPMI接口重启服务器。 Zabbix远程执行命令注意事项: 1)远程执行命令是server端向agent端执行,不支持主动模式的agent; 2)不支持代理模式; 3)zabbix用户必须对命令具有执行权限,可以使用sudo赋予 log”中查看远程命令是否执行成功(成功为” Executed”)。 配置zabbix远程执行命令 创建一个报警,记得使用邮件报警吗?实际上,我们把发送邮件的操作改成执行远程命令就行了。 Zabbix agent不支持远程命令,远程命令最大长度为255字符,同时支持多个远程命令,如需要执行多条命令,只需要另起一行写命令即可,但最好自定在agent端定义一个脚本,直接让zabbix执行脚本即可
日常Zabbix报警案例中,大多都是报警发送邮件,场景里很少有需要报警后执行一个命令(启动服务、清空磁盘空间、关停服务器);而今天就给大家讲讲最近需要做的事:报警后执行远程命令 首先讲讲需求吧, 遥远的一天 刚好zabbix动作中有个远程命令功能,那么就通过它来解决问题。。 -> Actions 条件选择触发器值为PROBLEM、触发器为上面的mongodb触发器 执行次数为5次,每次间隔60秒 操作类型为:远程命令 类型为:自定义脚本 命令:具体的指令。 至此整个过程都配完了,,但是现在mongodb挂了,actions会执行启动mongodb命令么。? 肯定不会。 远程命令前提条件,需要在配置文件开启远程命令参数,并启动agentd。 bash /usr/local/mongodb/mongod -f /usr/local/mongodb/mongod.conf >> /tmp/start.log #注意,zabbix启动用户,需要能执行上述命令
import paramiko def sshclient_execmd(hostname, port, username, password, execmd): paramiko.util.log_to_file("paramiko.log") s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname=hostname, port=p
ssh执行远程操作 命令格式 ssh -p $port $user@$p 'cmd' $port : ssh连接端口号 $user: ssh连接用户名 $ip:ssh连接的ip地址 cmd:远程服务器需要执行的操作 准备工作 基于公私钥认证或者用户名密码认证能确保登录到远程local2服务器(有点基本运维知识的人做这个事情都不是问题) cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑) 不足 这个命令可以满足我们大多数的需求 ,但是通常运维部署很多东西的时候需要root权限,但是有几处限制: 远程服务器local2禁止root用户登录 在远程服务器脚本里转换身份用expect需要send密码,这样不够安全 执行远程服务器需要 中文翻译一下:就是可以提供一个远程服务器的虚拟tty终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全 命令格式 ssh -t -p $port $user@$ip ' ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3") user="test1" remote_cmd="/home/test/1.sh" #本地通过ssh执行远程服务器的脚本
命令执行机制的实现与原生套接字通信一致,仅仅只是在调用时采用了Boost通用接口,在服务端中我们通过封装实现一个run_command函数,该函数用于发送一个字符串命令,并循环等待接收客户端返回的字符串 服务端代码如下所示,我们通过调用run_command函数执行dir C:\\Users\\命令,获取到对端主机目录下的文件列表。 #include <iostream>#include <string>#include <boost/asio.hpp>using namespace boost::asio;// 让客户端执行特定命令 ,自动执行远程命令,并将返回结果传输给服务端,如下所示;#include <iostream>#include <string>#include <boost/asio.hpp>using namespace boost::asio;// 实现命令执行,并发送到服务端bool exec_command(ip::tcp::socket *socket){ char command[1024] = { 0 }
攻击者通过注册用户,并使用 Mock 功能实现远程命令执行。 命令执行的原理是 Node.js 通过 require('vm') 来构建沙箱环境,而攻击者可以通过原型链改变沙箱环境运行的上下文,从而达到沙箱逃逸的效果。 设置命令为反弹 shell 到远程服务器。 ? POC如下: ? 随后添加接口,访问提供的 mock 地址。 ? 随后即可在远程服务器上收到来自命令执行反弹的 shell。 ? Do not use it to run untrusted code. vm 模块并不是一个完全安全的动态脚本执行模块。先来看看 vm 有哪些执行命令的函数。 ? 函数执行结束后会调用 context.mockJson = sandbox.mockJson 并将 mockJson 作为 req.body 返回用户,于是就可以在页面中看到命令执行的反馈。
@(Linux 命令脚本) 方便自动化运维部署,在多台机器上自动执行命令。 ssh 需要输入密码, 所以使用 expect 进行交互,从执行文本读取远程主机 IP, 登录名和密码后执行远程登录,执行命令。 脚本 remote_cmd.sh #! END done < host.list 主机列表 host.list 192.168.67.236 lcd jklfds 192.168.67.236 lcd jklfds ---- 通过 ssh 远程登录执行命令 ,启动远程终端, 通过参数 -t 实现 : ssh -t -p 36000 -l lcd 192.168.67.236 "mkdir -p ~/work/lcd" ---- expect 需要安装 :
批量远程执行命令 exe.expect 内容 #!
命令执行机制的实现与原生套接字通信一致,仅仅只是在调用时采用了Boost通用接口,在服务端中我们通过封装实现一个run_command函数,该函数用于发送一个字符串命令,并循环等待接收客户端返回的字符串 服务端代码如下所示,我们通过调用run_command函数执行dir C:\\Users\\命令,获取到对端主机目录下的文件列表。 include <iostream> #include <string> #include <boost/asio.hpp> using namespace boost::asio; // 让客户端执行特定命令 ,自动执行远程命令,并将返回结果传输给服务端,如下所示; #include <iostream> #include <string> #include <boost/asio.hpp> using namespace boost::asio; // 实现命令执行,并发送到服务端 bool exec_command(ip::tcp::socket *socket) { char command[1024] =
Saltstack的一个比较突出的优势是具备执行远程命令的功能,可以帮助运维人员完成集中化的操作平台(批量执行服务器命令) 命令格式:salt '<操作目标>' <方法>[参数] 实例:查看minion 主机的IP或者IP子网进行匹配 示例:根据IP及子网进行匹配 salt -S 192.168.0.0/16 test.ping salt -S 192.168.1.10 test.ping 批量修改远程
mooon_ssh --h=192.168.4.1,192.168.4.2 -P=password -c='cat /etc/hosts' #include "mooon/net/libssh2.h" // 提供远程执行命令接口 print_color.h" #include "mooon/utils/string_utils.h" #include "mooon/utils/tokener.h" #include <iostream> // 被执行的命令 ,可为一条或多条命令,如:ls /&&whoami STRING_ARG_DEFINE(c, "", "command to execute remotely"); // 逗号分隔的远程主机列表 STRING_ARG_DEFINE (h, "", "remote hosts"); // 远程主机的sshd端口号 INTEGER_ARG_DEFINE(uint16_t, p, 22, 10, 65535, "remote hosts 65535, "timeout seconds to remote host"); // 结果信息 struct ResultInfo { bool success; // 为true表示执行成功
蹭个热度,复现一波:Apache Solr远程命令执行漏洞。 通过 docker exec -it 容器ID /bin/bash 进入容器后执行:./solr create -c solr_sample 创建集合如下: ? 修改完配置以后通过poc即可执行任意命令如图: ? ", "solr.resource.loader.enabled": "true", "params.resource.loader.enabled": "true" } } //远程代码执行
一、利用 Saltstack 远程执行命令 Saltstack的一个比较突出优势就是具备执行远程命令的功能。 docs.saltstack.cn/topics/targ… 命令格式:salt '<操作目标>' <方法> [参数] 1.1 查看被控制机的内存使用情况 [root@saltstack-master 比如过滤内核为Linux的主机可以写成'kernel:Linux',如果同时需要正则表达式的支持可以切成--grain-pcre参数来执行。 saltstack_web1group_1: True saltstack_web1group_2: True 复制代码 1.8 探测非 saltstack 开头的主机连通性 not语句不能作为第一个条件执行
fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。 (一)漏洞条件Fastjson 反序列化远程命令执行漏洞(影响版本:1.2.24 ~ 1.2.48)的触发需同时满足以下 3 个核心条件:版本匹配:目标 Java 项目使用的 Fastjson 版本处于 字段指定恶意类)绕过检测,触发com.sun.rowset.JdbcRowSetImpl等危险类的实例化;此类实例化过程中会读取dataSourceName属性的值并通过 JNDI 协议(如 RMI)去请求远程服务器上的恶意类 ;当目标服务器加载并执行该恶意类时,攻击者预先写入的恶意代码(如命令执行逻辑)便会在目标服务器上触发,最终实现远程命令执行。 ] J --> K[实现远程命令执行(如反弹Shell)] L[攻击机准备工作] -->|1.编译恶意Java类 2.启动RMI服务 3.启动NC监听| A二、漏洞复现!
fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。 然后借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类TouchFile.class 安装marshalsec,同时mvn也是需要安装的 安装mvn 官网下载压缩包 在任意路径下执行mvn -version验证命令是否有效 安装和使用marshalsec git clone https://github.com/mbechler/marshalsec.git cd marshalsec mvn clean package -DskipTests 装好mvn后运行 (若使用mvn时提示命令找不到,可以使用source /etc/profile 更新一下环境变量) 发送请求包后可以看到向指定ip加载远程类TouchFile.class ? 然后攻击机就能收到反弹回来的shell了 ?
远程命令执行漏洞相关函数eval()assert()preg_replace()call_user_func()$a($b)如果页面中存在这些函数并且对于用户的输入没有做严格的过滤,那么就可能造成远程命令执行漏洞 当pattern处存在一个“/e”修饰符时,$replacement的值会被当成php代码来执行。实例call_user_func()实例$a($b)远程命令执行漏洞的利用?
配置好后可一建生成nginx.conf文件, 同时可控制nginx使用此文件进行启动与重载, 完成对nginx的图形化控制闭环. 0x02 漏洞概述 nginxWebUI由于未对用户的输入进行严格过滤,导致任意命令执行漏洞 cmd=命令%26%26echo%20nginx 此时证明漏洞存在,测试下能否执行命令回显: PS:特殊字符需URL编码 利用EXP脚本实现命令行攻击 漏洞利用工具下载地址 https://github.com /crow821/crowsec 0x06 修复方式 临时缓解方案 该漏洞属于命令拼接漏洞,所以可使用WAF进行防护。 升级修复方案 官方已发布了新版本修复了权限绕过漏洞,并且在一定程度上缓解了远程命令执行的风险。 建议用户前往官网更新至最新版本 nginxWebUI - 首页 另外由于官方过滤用户输入的方式并不严格,导致后台可能依旧存在命令执行的风险,可通过使用强口令降低风险。
尊敬的腾讯云客户: 您好,近日,接国家互联网应急中心报告,XXL-JOB存在远程命令执行漏洞。 攻击者通过此漏洞可以向XXL-JOB的执行器下发系统命令,进而可导致服务器被入侵控制,构成信息泄漏和运行安全风险。 为避免您的业务受影响,腾讯云安全中心建议您及时修复。 1、【漏洞名称】 XXL-JOB远程命令执行漏洞 2、【漏洞描述】 攻击者通过此漏洞可以向XXL-JOB的执行器下发系统命令,进而可导致服务器被入侵控制,构成信息泄漏和运行安全风险。