Web安全——命令注入漏洞详解

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
应用实时监控服务-应用监控,每月50GB免费额度
可观测监控 Prometheus 版,每月50GB免费额度
简介: Web安全——命令注入漏洞详解
点赞后看,养成习惯
喜欢的话 可以点个关注哟
你们的点赞支持对博主们来说很重要哦 !!!

本文将针对以下问题逐条进行解答:

01 命令执行漏洞是什么?

02 为什么会有命令执行漏洞?

03 命令执行漏洞可以用来做什么?

04 我们该如何使用命令执行漏洞?

05 修复方案是什么?

06 什么情况下考虑命令执行漏洞?


image.png



01 命令执行漏洞概念

简单来说, 命令执行漏洞就是黑客能够通过控制外部参数可以达到执行系统命令的效果。

image.png

相较于代码执行漏洞来说,代码执行漏洞是 靠执行脚本代码调用操作系统命令,而命令执行漏洞是直接调用系统命令的漏洞,也叫做os命令执行漏洞。



02 命令执行漏洞产生的原因

原因主要有二:

1.外部参数可控

应用程序调用了执行系统命令的函数,比如服务器程序通过 system、eval、exec等函数直接或者间接地调用 cmd.exe

image.png

黑客能控制这些函数中的参数,比如可以通过浏览器或者其他客户端软件提交一些cmd命令(或者bash命令)至服务器程序。

2.内部拼接命令

服务器将 输入的恶意参数拼接到正常命令中 ,从而执行命令造成攻击



03 命令执行漏洞的危害

黑客如果能够利用命令执行漏洞,那么黑客就可以像电脑用户控制自己电脑一样, 自由地对电脑进行操作,比如开启防火墙、添加路由、开启远程服务等等操作

image.png




04 命令执行漏洞的利用方式
这里以一道CTF题举栗子

1.找到一个可以自己输入参数的页面

如攻防世界中的一道Web题目

image.png

页面场景如下:

image.png


尝试输入本地地址127.0.0.1,观察回显内容

image.png


发现返回内容相似命令行下ping命令返回结果,初步判断可能存在命令执行漏洞

2.利用管道符辅助测试

在场景利用前,我先岔开话题分享一下有关于管道符的一些知识

在操作系统中,“&、|、||”都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。

下面列举
windows系统 linux系统**支持的管道符命令:


windows系统支持的管道符:
示例 用法
a \ b 直接执行命令b
a \ \ b a为假 ,才执行b
a & b a可真可假,若为假则直接执行b
a &&b a为真,b才能执行
linux系统支持的管道符:
示例 用法
a;b 执行完再执行b
a \ b 直接显示b的执行结果
a \ \ b a错,b才执行
a & b a可真可假,若为假则直接执行b
a && b a为真才能执行b

很多时候,我老是忘记符号之间的区别,于是我花心思想了个小技巧记忆,在这里也分享给大家:

|是棍子,单打独斗:
a | b : b是主角,一根棍子的时候不在意a的死活,执行自己的就完事
a || b :b是主角,两根棍子的时候,戾气很重,非要打死a,只有a死了才能执行自己的

image.png


&是拉手,和谐共处:
a & b : b是主角,一次拉手是表面朋友,不管你a是死是活,我都会执行
a & b : b是主角,两次拉手是死党,只有a过得好好的,我才会也执行的好好的

image.png

好,回到这个web场景。我们在第一步的时候判断此处存在系统命令执行漏洞,于是我们使用管道符|进行测试,发现果然可以执行系统命令。

image.png

经过了后续的命令执行,我们很容易的获得了本题的flag

image.png

image.png

总结一下,这道题就是简单考察我们对命令注入漏洞中管道符的使用,较为简单。


05 修复命令执行漏洞漏洞的方案

1.设计者尽可能少设计使用一些命令执行函数,

2.若有必要使用,那么必须对特殊函数做过滤,对用户输入的命令做检查,对客户端提交的变量在进入执行命令前做好过滤和检查等



06 什么情况下考虑命令执行漏洞?

作为一个安全老司机,当我们看到一个可输入参数的位置,心里就要有点痒痒

这时候我们可以尝试使用SQL注入、命令注入试试手,然后查看返回结果,如果返回的内容是命令执行返回的内容,那我们尝试使用管道符辅助测试,比如 127.0.0.1 | whoami

目录
相关文章
|
1月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
89 1
|
13天前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
33 1
|
16天前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
50 4
|
15天前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
43 2
|
17天前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
50 3
|
19天前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
32 1
|
23天前
|
Kubernetes 安全 应用服务中间件
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
44 3
|
1月前
|
缓存 安全 JavaScript
掌握JAMstack:构建更快、更安全的Web应用
JAMstack 是一种现代 Web 开发架构,结合 JavaScript、APIs 和 Markup,创建更快、更安全的 Web 应用。其核心优势包括高性能、安全性、可扩展性和易维护性。JAMstack 通过预构建静态页面和 API 实现高效渲染,利用静态站点生成器如 Gatsby 和 Next.js,并借助 CDN 和缓存策略提升全球访问速度。尽管面临复杂交互、SEO 和数据更新等挑战,但通过 Serverless Functions、预渲染和实时 API 更新等方案,这些挑战正逐步得到解决。
|
2月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
149 8
|
2月前
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
130 3