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

时间:2016-04-06 04:53:24

标签: php apache ubuntu-14.04 directory-traversal

作为系统管理员角色,我必须使用PHP构建安全的网站。漏洞扫描程序提供目录遍历攻击警告。我谷歌很多网站,但没有找到适当的解决方案。我已经禁用索引,并在/上放置目录拒绝。

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

请指导一下。

非常感谢帮助。

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

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

这里更详细。

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

Directory Traversal是一个漏洞,允许攻击者访问受限制的目录并在Web服务器的根目录之外执行命令。
此漏洞影响了 发现者:脚本(Directory_Traversal.script)。
攻击细节
URL编码的GET输入ofile设置为../../../../../../../../../../etc/passwd
找到的文件内容:
根:X:0:0:根:/根:/斌/庆典

查看HTTP标头

  

请求已取消GET   ofile = .. / .. / .. / .. / .. / .. / .. / .. / .. / .. / etc / passwd HTTP / 1.1
推荐人:   删除
Cookie:PHPSESSID = 7lnb7v198ul8691398urchg833;   
ccity = 6cd5165e7bce89782ed37abe9401604a01cb6056s%3A3%3A%22AGR%22%3B;   
LANG = 13d4e1ed1ec441aca81746dd05751ce248f3fff5s%3A2%3A%22毫安%22%3B;   
YII_CSRF_TOKEN = f5e14954e37e2975baa3eec9007f1d89ee8b0302s%3A40%3A%2234cb9e79ba1cafe5dbc69403f245dbcf708adb9b%22%3B
  主持人:已删除
连接:保持活动
接受编码:   gzip,deflate
用户代理:Mozilla / 5.0(Windows NT 6.1; WOW64)   AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 28.0.1500.63   Safari / 537.36
接受: /

响应

  

HTTP / 1.1 200 OK
日期:星期四,2016年3月10日08:32:38 GMT
服务器:   Apache
X-Powered-By:PHP / 5.5.9-1ubuntu4.5
到期:周四,19   1981年11月08:52:00 GMT
缓存控制:无存储,无缓存,   must-revalidate,post-check = 0,pre-check = 0
Pragma:no-cache
  内容传输编码:二进制
内容长度:1348
  内容处理:内联;   filename = .. / .. / .. / .. / .. / .. / .. / .. / .. / .. / etc / passwd
Keep-Alive:   超时= 60,最大= 781
连接:保持活动
内容类型:   应用/ PDF

文件内容

  

根:X:0:0:根:/根:/斌/庆典   守护程序:X:1:1:守护程序:/ usr / sbin目录:/ usr / sbin目录/ nologin的   仓:X:2:2:仓:/ bin中:/ usr / sbin目录/ nologin的   SYS:X:3:3:SYS是:/ dev:/ usr / sbin目录/ nologin的   同步:X:4:65534:同步:/ bin中:/ bin中/同步   游戏:X:5:60:游戏:在/ usr /游戏:/ usr / sbin目录/ nologin的   人:X:6:12:人:在/ var /缓存/人:/ usr / sbin目录/ nologin的   LP:X:7:7:LP:在/ var /线轴/ LPD:/ usr / sbin目录/ nologin的   邮件:X:8:8:邮件:在/ var /邮件:/ usr / sbin目录/ NOLOGIN   消息:X:9:9:消息:在/ var /线轴/消息:/ usr / sbin目录/ nologin的   UUCP:X:10:10:UUCP:在/ var /线轴/ UUCP:/ usr / sbin目录/ nologin的   代理:X:13:13:代理:/ bin中:/ usr / sbin目录/ nologin的   WWW的数据:X:33:33:WWW的数据:/无功/网络:/ usr / sbin目录/ nologin的   备份:X:34:34:备份:在/ var /备份:/ usr / sbin目录/ nologin的   list:x:38:38:邮件列表管理器:/ var / list:/ usr / sbin / nologin   irc:x:39:39:ircd:/ var / run / ircd:/ usr / sbin / nologin gnats:x:41:41:Gnats   错误报告系统(admin):/ var / lib / gnats:/ usr / sbin / nologin   没有人:X:65534:65534:没人:/不存在的:/ usr / sbin目录/ NOLOGIN   libuuid:X:100:101 :: /变种/ LIB / libuuid:   syslog:x:101:104 :: / home / syslog:/ bin / false mysql:x:102:106:MySQL   服务器,,,:/不存在:/斌/假   messagebus:X:103:107 :: /变种/运行/ DBUS:/ bin中/假   景观:X:104:110 :: /变种/ LIB /风景:/ bin中/假   的sshd:X:105:65534 ::的/ var /运行/ sshd的:/ usr / sbin目录/ nologin的   NTP:X:106:114 :: /家/ NTP:/ bin中/假   TPL-NAG:X:1001:1002 :: /家/ tpl-

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

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

1 个答案:

答案 0 :(得分:0)

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

2)重现漏洞。根据1)以及您对组织所做工作的了解,或者询问发现它的第三方,自行查找。如果他们无法提供至少一个漏洞的具体示例(例如:一个URI)请求退款:)不止一个例子会有所帮助。

3)您现在应该有足够的信息来修复您的服务器。它可能在Apache和/或PHP和/或其他地方,但没有办法告诉问题中提供的信息。如果您仍然无法在该阶段修复它,请随时在此处提出其他问题。

4)测试服务器更改后,您在2)中发现的任何内容都不再发生。

编辑(提供更多信息)

第三方实际上非常友好地回答了您的问题:"如何修复此漏洞您的脚本应该从用户输入过滤元字符。"请他们在这里发布他们的答案,你可以接受:)