普及内容
了解命令执行定义
了解命令执行条件
掌握命令执行成因
了解命令执行危害
掌握命令执行实例
掌握管道符号和通用命令符
了解命令执行常见场景
基础概念
命令执行定义
基本定义
命令执行漏洞是指攻击者可以随意执行系统命令,分为远程命令执行(远程代码执行)和系统
命令执行两类
原理
程序应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命
令拼接到正常命令中,从而造成命令执行攻击。
命令执行的条件
两个条件
用户能够控制的函数输入
存在可以执行代码或者系统命令的危险函数
命令执行成因
命令执行漏洞产生的原因
由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端
可以提交恶意构造语句,并提交服务端执行
命令注入攻击中,Web服务器没有过滤类似system、eval和exec等函数,是该漏洞攻击
成功的主要原因。
命令执行危害
继承Web服务程序的权限去执行系统命令(任意代码)或读写文件
反弹shell
控制整个网站甚至控制服务器
进一步内网渗透
命令执行实例
小马,动态、危险函数调用导致代码执行等
管道符号和通用命令符
>Linux
;前面的执行完执行后面的
|是管道符,显示后面的执行结果
||当前面的执行出错时执行后面的
>Windows
&前面的语句为假则直接执行后面的
&&前面的语句为假则直接出错,后面的也不执行
|直接执行后面的语句
||前面出错执行后面的
通用命令符
command1 && command2 command1执行成功才执行command2
command1 I command2 只执行command2
command1 & command2 command1和command2之间互相不影响
命令执行常见场景
Ping主机
DNS请求
Office文档
框架缺陷