Web应用随处可见,贴吧、论坛、博客、App后端、小程序等都是由Web作为底层架构。Web(World Wide Web)也称万维网,是基于超文本传输协议(HTTP)传输信息的载体。
当用户通过浏览器对网站进行访问时,服务器的Web容器(Apache、Nginx、IIS等)首先会进行路由解析、并判断后缀,如果后缀是PHP、JSP、ASP等动态语言代码文件,那么服务器会通过相应的CGI执行代码,如果是静态页面则不会执行。当然执行的前提是服务器已经配置好了相关的语言运行环境,一般来说动态语言开发的网站,网站数据都会存放在数据库中,当需要读取数据时,服务器会通过CGI在数据库里执行SQL语句,从而查询到数据,如图3-1所示。
图3-1 Web基础
Web应用漏洞并不是指HTTP这类底层协议的漏洞,而是指在开发Web应用产品时出现的漏洞。例如:SQL注入漏洞、XSS漏洞、文件上传漏洞等。Web应用漏洞的存在不会影响Web应用正常运行,但如果测试者利用漏洞进行破坏或发起Fuzz测试,则可能会影响到业务正常运行。
Web应用漏洞产生的最主要原因是开发人员对外部传入的值没有进行过滤或转义,导致传入的字符串产生特殊意义,例如SQL注入、XSS、命令执行等漏洞产生的根本原因皆是如此。