命令执行_代码执行漏洞

远程代码注入漏洞

原理

攻击者可利用代码注入漏洞执行任意代码,来操作服务器

危害

执行任意代码,来操作服务器

操作数据库,插入恶意数据,可能获取 系统权限

攻击修改系统配置,修改网络配置,可能对 服务器及网络造成影响

可以进一步对网络渗透,由于代码注入攻击多半可获取系统权限,对网络的进一步渗透难度大大降低

代码执行、文件读取、命令执行的函数:

文件执行:eval、call_user_func、call_user_func_array 、assert()等

文件读取:fopen()、readfile()、fread()、file()、show_source()等

命令执行:system()、exec()、shell_exec()、passthru()、pcntl_exec() 等;“反引号()

反引号()

实际调用的shell_exec()函数

防御

敏感函数禁用

变量过滤或固定

WAF产品

修复方法

不需要执行远程代码时,可以修改php.ini配置:allow_url_fopen = Off allow_url_include = Off

不要直接导入用户输入的内容

执行代码的参数,或文件名,禁止和用户输入相关,只能由开发人员定义代码内容,用户只能提交“1、2、3”等参数,代表相应代码。

命令执行漏洞

原理:

攻击者通过web应用执行系统命令,获得敏感信息,进而控制服务器攻击内网。

产生条件

应用调用执行命令的函数

将用户输入的内容作为系统参数拼接到命令中

没有对用户输入的内容过滤或过滤不严格

产生原理

应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

防御方法

少用执行命令的函数或者禁用

参数值使用引号包括,并在拼接前调用addslashes函数进行转义

在使用动态函数前,确保使用的函数是指定的函数之一

在进入执行命令的函数方法之前,对参数进行过滤,对敏感字符进行转义

对于可控点是程序参数的情况下,使用escapeshellcmd函数进行过滤

严格控制文件名参数值,先判断文件名或文件路径是否合法

危害

继承Web服务程序的权限去执行系统命令或读写文件。

反弹shell(就是控制端监听在某个端口,被控制发起请求到该端口,并将其命令行的输入输出转到控制端)

控制整个网站甚至控制服务器。

为什么需要反弹shell

反弹shell通常用于被控端因防火墙受限、权限不足、端口被占用等情形。在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入。

进一步内网渗透

命令执行漏洞怎么发现?

通过nessus扫描器的Sitemap模块,发现了可疑目录

根据sitemap的目录信息,打开URL:http://x.x.x.x:28076/file/,发现存在未授权访问漏洞,逐个查看里面的文件,蒙了一下dirFiles.jsp的 参数,使用"path"作为参数名可列出目录、文件信息,URL,同样的方法,发现show.jsp存在任意文件读取漏洞

修复方法:

严格控制文件名参数值,先判断文件名或文件路径是否合法可修复漏洞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值