如何防止Apache2 Ubuntu 14中的目录遍历攻击


How to prevent directory traversal attack in Apache2 Ubuntu 14?

作为一名系统管理员,我必须用PHP构建安全的网站。漏洞扫描程序发出目录遍历攻击警告。我搜索了很多网站,但没有找到合适的解决方案。我已经禁用了索引,并将目录拒绝设置为/。

目录遍历可以通过Aapache配置或PHP阻止吗??

请对此提供指导。

非常感谢您的帮助。

根据需要提供更多问题细节。

第三方已经发现漏洞,并通过GET方法下载/etc/passwd文件。

这里有更多详细信息。

漏洞描述此脚本可能容易受到目录遍历攻击。

Directory Traversal是一个漏洞,允许攻击者访问
受限目录并在web服务器的根目录之外执行命令
此漏洞影响
发现者:Scripting(Directory_Traversal.script)。
攻击详细信息
文件的URL编码GET输入设置为../../../../..../../..//etc/passwd
找到的文件内容:
root:x:0:0:root:/root:/bin/bash

查看HTTP标头

请求
GET已删除
ofile=../../../..//etc/passwd HTTP/1.1
引用人:已删除
Cookie:PHPSSID=7lnb7v198ul8691398urchg833;
ccity=6cd5165e7bce89782d37abe9401604a01CB6056s%3A%22AGR%22%3B;
lang=13d4e1ed1ec441aca81746dd05751ce248f3ff5s%3A2%3A%22ma%22%3B;
YI_CSRF_TOKEN=f5e14954e37e2975baa3eec9007f1d89ee8b0302s%3A40%3A%22234cb9e79ba1cafe5dbc69403f245dbcf708adb9%22%3B
主机:已删除
连接:保持活动
接受编码:gzip,deflate
用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/28.0.1500.63Safari/553.36
接受:/

响应

HTTP/1.1 200正常
日期:2016年3月10日星期四08:32:38 GMT
服务器:Apache
X-Powered-Bby:PHP/5.5.9-1ubuntu4.5
过期时间:周四,191981年11月08:52:00 GMT
缓存控制:无存储,无缓存,必须重新验证,后检查=0,预检查=0
Pragma:无缓存
内容传输编码:二进制
内容长度:1348
内容处置:内联;filename=../../../../..../../..//etc/passwd
保持活动状态:timeout=60,max=781
连接:保持活动
内容类型:application/pdf

文件内容

root:x:0:0:root:/root:/bin/bash守护程序:x:1:1:守护程序:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:同步:/bin:/bin/sync游戏:x:5:60:游戏:/usr/games:/usr/sbin/nologinman:x:6:12:man:/var/cache/man:/usr/sbin/nologinlp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin邮件:x:8:8:mail:/var/mail:/usr/sbin/nologinnews:x:9:9:news:/var/spool/news:/usr/sbin/nologinuucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologinproxy:x:13:13:proxy:/bin:/usr/sbin/nologinwww数据:x:33:www数据:/var/www:/usr/sbin/nologinbackup:x:34:34:backup://backups:/usr/sbin/nologinlist:x:38:38:邮件列表管理器:/var/list:/usr/sbin/nologinirc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:gnatsBug报告系统(admin):/var/lib/gnats:/usr/sbin/nologinnobody:x:65534:65534:nobody:/inversion:/usr/sbin/nologinlibuuid:x:100:101::/var/lib/libuuid:syslog:x:101:104::/home/syslog:/bin/false-mysql:x:102:106:mysql服务器,,,:/不存在:/bin/falsemessagebus:x:103:107::/var/run/dbus:/bin/false横向:x:104:110::/var/lib/l横向:/bin/falsesshd:x:105:65534::/var/run/shd:/usr/sbin/nologinntp:x:106:114::/home/ntp:/bin/falsetpl nag:x:10011:1002::/home/tpl-

此漏洞的影响攻击者利用目录遍历漏洞,从根目录中退出并访问其他目录中的文件。因此,攻击者可能会查看受限制的文件或执行命令,从而完全破坏Web服务器。

如何修复此漏洞您的脚本应该从用户输入中筛选元字符。

1)了解漏洞(https://en.wikipedia.org/wiki/Directory_traversal_attack)。我相信你已经做到了。

2) 再现漏洞。根据1)和你对组织的了解,自己找到它,或者询问发现它的第三方。如果他们不能提供至少一个漏洞的具体示例(例如:URI),请要求退款:)多个示例会有所帮助。

3) 您现在应该有足够的信息来修复服务器。它可能在Apache和/或PHP和/或其他地方,但无法通过问题中提供的信息来判断。如果你在那个阶段仍然无法解决,可以在这里再问一个问题。

4) 测试你在2)中发现的任何事情在服务器更改后都不会再发生。

编辑(提供更多信息)

事实上,第三方已经很友善地回答了你的问题:"如何修复这个漏洞你的脚本应该从用户输入中过滤元字符。"让他们在这里发布他们的答案,你可以接受:)