- 上传漏洞
- 解析漏洞
- 常见的Web容器有IIS、Nginx、Apache、Tomcat等,下面将以IIS、Apache 容器为例讲解。
- IIS解析漏洞
- 当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当作 asp文件来解析
- 当文件为*.asp;1.jpg 时,IIS 6.0同样会以ASP脚本来执行
- Apache解析漏洞
- PHP CGI解析漏洞
- Nginx是一款高性能的Web服务器,通常用来作为PHP的解析容器,Nginx也曾经被曝过两个“解析漏洞”,比如,访问 htp://www.xxser.com/1.jpg/1.php,此时的1.jpg 会被当作PHP脚本来解析,如图6-6所示。
- 此时的1.php是不存在的,却可以看到1.jpg已经按照PHP脚本来解析了,问题就出现在这个“1.php”上( 1.php并不是特定的,可以随意命名).这就意味着攻击者可以上传合法的“图片”(图片木马),然后在URL后面加上“/xxx.php”,就可以获得网站的 WebShell.
- PHP CGI解析漏洞
- 绕过上传漏洞
- 程序员在防止上传漏洞时可以分为以下两种。
- 客户端检测:客户端使用JavaScript检测,在文件未上传时,就对文件进行验证;
- 服务器端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,甚至有些程序员检测文件中是否嵌入恶意代码。
- 一句话木马
- 中间人攻击
- 首先把木马文件扩展名改为一张正常图片的扩展名,比如JPG扩展名,在上传时使用BurpSuite拦截上传数据,再将其中的扩展名JPG修改为PHP,就可以绕过客户端验证。
- 服务器端检测
- 白名单与黑名单
- 黑名单过滤
- 攻击者可以使用很多的方法绕过黑名单检测
- 白名单过滤
- 黑名单过滤
- MIME验证
- MIME类型用来设定某种扩展名文件的打开方式,当具有该扩展名的文件被访问时,浏览器会自动使用指定的应用程序来打开。如 GIF图片MIME为image/gif,CSS文件 MIME类型为text/css。
- 目录验证
- 这段代码是引发漏洞的关键点,因为在HTML代码中有一个隐藏标签<input type="hidden"name = "Extension"value="up"/>,这是文件上传时默认的文件夹,而我们对此参数是可控的,比如:使用FireBug 将 Value值改为 pentest.asp,并提交上传一句话图片木马文件。
- 程序在接收到文件后,对目录判断,如果服务器不存在 pentest.asp目录,将会建立此目录,然后再将图片一句话密码文件写入pentest.asp目录,如果Web容器为IIS 6.0,那么网页木马会被解析。
- 截断上传攻击
- 白名单与黑名单
- 程序员在防止上传漏洞时可以分为以下两种。
- 修复上传漏洞
- 上传漏洞最终的形成原因主要有以下两点
- 目录过滤不严,攻击者可能建立畸形目录;
- 文件未重命名,攻击者可能利用Web容器解析漏洞。
- 防御手段
- 接收文件及其文件临时路径。
- 获取扩展名与白名单做对比,如果没有命令,程序退出。
- 对文件进行重命名。
- 上传漏洞最终的形成原因主要有以下两点
- 解析漏洞
文件上传漏洞
最新推荐文章于 2024-09-14 21:10:44 发布