漏洞名称:
命令注入
描述:
Command Injection,即命令注入攻击,是指由于Web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。 在命令注入的漏洞中,最为常见的是PHP的命令注入。PHP命令注入攻击存在的主要原因是Web应用程序员在应用PHP语言中一些具有命令执行功能的函数时,对用户提交的数据内容没有进行严格的过滤就带入函数中执行而造成的。例如,当黑客提交的数据内容为向网站目录写入PHP文件时,就可以通过该命令注入攻击漏洞写入一个PHP后门文件,进而实施进一步的渗透攻击。
检测条件:
1.Web业务运行正常
2.已知某页面URL(假设为http://www.exmaple.com/abc.jsp)接收参数,且参数中接收类似于系统命令的字符(假设为cmd=ls)
检测方法:
通过web扫描工具进行扫描,如果具有该漏洞,一般可以扫描得到,也可以通过手工去进行验证:打开网站,在地址栏中的网址后面输入“?cmd=所要执行的命令”,如下图所示的http://192.168.1.3/?cmd=net user,可以发现命令能够成功执行:
Php网站测试也使用同样的方法来进行检测
修复漏洞:
PHP中命令注入攻击漏洞带来的危害和影响很严重。防范命令注入攻击漏洞的存在可以通过以下几种方法:
1.尽量不要执行外部的应用程序或命令。
2.使用自定义函数或函数库实现外部应用程序或命令的功能。
3.在执行system、eval等命令执行功能的函数前,确定参数内容。
4.使用escapeshellarg函数处理相关参数。Escapeshellarg函数会将任何引起参数或命令结束的字符进行转义,如单引号“’”会被转义为“\’”,双引号“””会被转义为“\””,分号“;”会被转义为“\;”,这样escapeshellarg会将参数内容限制在一对单引号或双引号里面,转义参数中所包含的单引号或双引号,使其无法对当前执行进行截断,实现防范命令注入攻击的目的。
5.使用safe_mode_exec_dir执行可执行的文件路径。将php.ini文件中的safe_mode设置为On,然后将允许执行的文件放入一个目录中,并使用safe_mode_exec_dir指定这个可执行的文件路径。这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败。
其他补充:
Web应用程序介绍
一、应用程序类型
C/S类型应用程序:Client客户端/Server服务器
客户端必须安装专门的一个桌面软件才能使用。
优点:速度快,安全性高,客户端比较强大
缺点:每台客户端计算机都要下载安装升级,部署维护困难
例如:QQ,各种网络游戏
B/S类型应用程序:Browser浏览器/Server服务器
客户端不用安装特定的软件,只要通过浏览器打开就可使用。
优点:维护容易,只需要维护服务器
缺点:速度慢,安全性相对较低,客户端较弱
例如:WebQQ,各大网站,各种网页游戏
什么是Web应用程序?
Web应用程序是一种可以通过Web访问的应用程序。Web应用程序的一个最大好处就是用户很容易访问应用程序。
用户只要有浏览器即可,不需要再安装其他软件。
web应用程序举例:淘宝、天猫、新浪、搜狐
web应用程序开发,是目前软件开发领域的三大方向之一。
总之:一个web应用程序是一个能够让用户完成某些特定任务的网站。而一个普通的网站的主要目标是给用户提供信息(新闻,指导,等)。
静态网页和动态网页的区别?
命令行注入漏洞是指web应用程序中调用了系统可执行命令的函数,而且输入参数是可控的,如果黑客拼接了注入命令,就可以进行非法操作了。
以下这段PHP代码的输入参数是不可控的。
下面这段代码的输入参数是可控的,是含有命令行注入漏洞。