APP下载

浅析命令执行漏洞

2020-08-23陆程程

数码设计 2020年2期
关键词:网络安全

陆程程

摘要:现在的世界经过了几次改革,逐步迈入了电子信息时代。这是一个全新的,未知的时代,是大数据时代。网络技术使得世界很多方面都发生了翻天覆地的变化,使得生活更加的便利,促进了社会的飞速的发展。随着越来越多的人使用,网络安全也随之而来。其中命令执行漏洞是当今最危险的攻击之一,为了深入了解这一问题,首先分析了其产生的原因,随之,有针对性地研究如何防范。

关键词:网络安全;命令执行漏洞;漏洞修复

中图分类号:TP393.08  文献标识码:A  文章编号:1672-9129(2020)02-0034-02

Abstract: The present world has undergone several reforms and stepped into the electronic information age. This is a new, unknown era, the era of big data. Network technology has brought about earth-shaking changes in many aspects of the world, making life more convenient and promoting the rapid development of the society. As more and more people use it, network security comes with it. Among them, command execution vulnerability is one of the most dangerous attacks today. In order to have a deep understanding of this problem, the causes of its occurrence are firstly analyzed, and then, how to prevent it is studied pertinently.

Key words: network security; Command execution vulnerability; Bug fix

引言:在现在这个高速发展的互联网时代,人们面临着越来越多的网络安全问题,他们利用各种能利用到的漏洞和资源来盗取信息,占用资源等,执行各种恶意活动,导致了互联网的不健康地发展。网络信息系统安全漏洞问题一直是一个难题,尤其是随着计算机技术以及网络技术的发展应用,信息安全更是随之而来。而对于其中的命令执行漏洞也是其中的一种。程序员在编写源代码的时候,没有对一些特殊的函数做过滤,导致客服端可以提交一些管理员的命令,这就直接令攻击者通过客服端提交一些cmd命令或者bash命令到服务器端,服务器通过一些函数直接或者间接的调用命令进行攻击。

1  命令执行漏洞的简介

1.1命令执行漏洞的原理。命令执行漏洞的实现,就是由于系统把用户输入进来的参数当成了要执行的命令,并且这些命令被执行了,这样就造成了命令执行漏洞。

命令执行漏洞产生原因有两点:web网站对于用户提交的数据没有进行有效的检测,或者是开发人员对一些特殊的函数没有进行有些的过滤,导致攻击者利用这个,提交一些恶意代码进行攻击。

1.2命令执行漏洞的危害。攻击者利用命令执行漏洞可以执行web应用程序权限,去执行系统的命令,或者去读写文件,攻击者可以利用这个漏洞,去控制我们的网站甚至是整个服务器。可以借助当前服务器,实施shell反弹攻击,或者对内网中的其他一些机器进行渗透操作。假如我们的电脑存在了命令执行漏洞,那么攻击者就可以随意执行我们系统的各种命令。

1.3命令执行漏洞的大概过程。

(1)首先找到一个执行命令的接口,判断是否存在命令执行

(2)查看系统当前消息,比如端口,用戶,或者补丁情况

(3)查看系统当前用户权限,如果是管理员权限或者是root权限我们可以添加一个新用户或者反弹shell,windows下可以直接登陆远程界面,linux直接创建用户直接登陆,控制目标服务器。

2  漏洞利用函数

2.1常见的漏洞利用函数。

System:system函数用于执行外部应用程序,并将结果显示输出。

Exec:exec函数用于执行外部的程序。

Passthru:可以用来执行一个外部的程序命令并显示原始地输出。

Shell_exec:通过执行shell命令,把完整的字符串输出出来。

`运算符:反单引号是php的执行运算符,php将尝试将反单引号中的内容来当作shell命令来执行,并将其输出的信息返回。

2.2典型漏洞代码

3  Windows、Linux下的命令执行漏洞

3.1 Windows下的命令执行漏洞

Windows命令执行漏洞,就是在Windows环境下存在的命令执行漏洞,通过相关的漏洞验证方法确认了存在命令执行漏洞后,我们可以使用Windows环境下的一些命令去对漏洞进行利用。

3.2 Windows下的命令执行漏洞利用

通过涉及到主机探测、扫描、路由、协议、远程、进程、端口、服务等常见的Windows的命令,如果我们的服务器是一台Windows操作系统,存在着命令执行漏洞。我们就可以通过上面的这些漏洞进行命令执行的操作,对Windows服务器系统进行扫描探测、进行进程和服务管理、进行内网渗透、服务器提限等。

具体的命令执行代码如下:

首先由于php是在服务器下执行的,所以ping命令也是在服务器下执行的。利用php中的system函数执行ping命令,并且正常输入? ip=127.0.0.1,会返回ping127.0.0.1的结果。$ip是可控参数,可以利用Windows下的命令连接符来执行多条命令,通过这一系列的操作,就可以达到攻击者的目的。输人?ip=127.0.0.1 whoami,成功执行,返回当前用户的信息,也可以执行netuser等其他关于用户账户管理的敏感操作。如果服务器的操作系统是windows那么它会直接调用shell_exec执行ping命令,参数是用户输入的ip地址。

3.3 Linux下的命令执行漏洞

Linux命令执行漏洞跟Windows命令执行漏洞的原理一样,不同之处在于Linux的命令连接符和Windows命令连接符不一样。Windows中两个句子用&连接,而Liunx是使用“;”连接。

3.4 Linux下的命令执行漏洞利用

具体的命令执行代码如下:

与windows大致类似,同样调用php中的system函数执行ping命令,正常输入? ip=127.0.0.1,会返回ping127.0.0.1的结果。由于 $ip是可控参数,这样就可以利用Linuxs下的命令连接符执行多条命令,这样就可以达到攻击者的目的。输人? ip=127.0.0.1;id,成功执行,返回当前用户的信息,也可以执行其他Linux的命令。如果服务器的操作系统是linux,需要明确指出ping的次数,否则会无限执行下去。[1]

4  命令执行漏洞修复

4.1服务器配置修复。服务器运用php配置文件中的disable_functions禁用敏感函数。

4.2黑名单过滤。从过滤用户输入入手,在源代码中建立一个黑名单,将所有黑名单里面的字符等都过滤掉,但这种方法安全性比较低,因为程序员考虑可能不会那么全面,会导致个别别遗漏。[2]

4.3如果不是必要情况,在web程序中尽量不要调用操作系统的函数。如果能在程序中直接固化函数的参数,就不要让用户输入参数。

4.4函数过濾。使用escapeshellarg函数或者是escapeshellcmd函数来对一些字符进行转义。

结论:通过这段时间研究命令执行漏洞,命令执行漏洞其实是直接调用系统命令的一种高危的漏洞,拿到了这个漏洞就相当于拿到了shell,其实这种漏洞也算是很难见到,不像是SQL注入,又或者是xss这种具有很强的通用性,毕竟SQL查询,留言等这些操作,基本上都是web很常见的操作,而像这种cmd的操作,让用户输入,然后把用户输入直接cmd运行的其实很少见。但是当前存在这些漏洞网络安全隐患对于用户的正常使用带来了一定的威胁,所以要明确当前普遍存在的计算机网络安全的主要隐患,并对其进行分析,来预防这些网络安全漏洞的出现。

参考文献:

[1]刘新鹏等.Web安全原理分析与实践[M].北京:清华大学出版社,2019(1):176-180.

[2]杨文虎等.网络安全技术[DB/OL].中国大学慕课.2020.

猜你喜欢

网络安全
邯郸市档案馆积极开展网络安全宣传教育
85.4%受访未成年人接受过网络安全教育
全国多地联动2020年国家网络安全宣传周启动
新量子通信线路保障网络安全
提升网络安全增进民生幸福
山西平鲁联社积极开展网络安全知识宣传活动
全省教育行业网络安全培训班在武汉举办
保护个人信息安全,还看新法
国家网络安全人才与创新基地落户武汉
安全知识网络竞赛进校园