- Command Injection
命令行注入是利用系统弱点获取对系统的访问权限,以执行恶意代码、获取用户数据和参与其他活动。命令行注入常用的参数有&&、&、|、||、;、%0a(换行符的URL编码)
1.;
各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
2.&&
若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
3.||
||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
4.|
|是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。
5.&
&是后台任务符号。 后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。
6.%0a
因为%0a是url编码,所以一定要输在url中,否则%0a会被再次编码
命令行注入(low)任务分析:通过代码审计可得知,该段代码主要功能是实现ping命令。我们可以利用其执行其他cmd命令

解决方案:由于缺少过滤,我们可以采用连接符&&的方式来查询我们想得到的信息,如ifconfig(ifconfig命令是linux系统中的shell命令,可以帮助用户查看网络状况,可以看到你想看到的众多网络信息,比如延迟,IP,主机信息,物理地址信息等等。

命令行注入(medium)任务分析:通过代码审计可得知该级别与low级别功能相同,但是增加了过滤手段,即把&&和;过滤为空。
解决方案:虽然有了过滤的加入,但是过滤的并不全面,所以我们可采用其他手段进行绕过,如&
实施过程:127.0.0.1&ifconfig
运行结果:

命令行注入(high)任务分析:通过代码审计可以得知该级别在medium的基础上再次新增了过滤的规则

解决方案:虽然进一步更新了过滤的规则,但是从代码可以看出'| '中间存在一个空格,所以我们在绕过时不加空格即可实现
实施过程:127.0.0.1|ifconfig
运行结果:
小结:在执行cmd命令时应注意过滤连接符,如过滤不严谨,容易导致cmd命令被恶意调用执行。
本文介绍了命令行注入攻击的不同级别及其利用方式,包括利用&&、|、;等连接符执行恶意命令。针对不同防御级别,提出了绕过过滤的解决方案,强调了过滤不严可能导致的安全风险。解决方案包括使用未过滤的连接符如&来执行命令,以及利用管道符号|绕过过滤。总结指出,在执行命令时应加强连接符的过滤,防止命令行注入。
600

被折叠的 条评论
为什么被折叠?



