最近在网站上线时,安全检查发现了一些网站的漏洞,这里写篇文章把常见的漏洞记录一下,这个是第二篇。
web应用架构中的目录都采用常见的目录名。如图片目录images,javascript目录js,不同的目录潜在的危险是不同的。攻击者一般利用常见目录中可能包含的敏感文件获取敏感信息。
本漏洞属于Web应用安全常见漏洞。
如果不需要这些目录,可以删除此类目录;
或者严格限制目录的访问权限。
对于go web服务。
//判断网址,若是目录访问 则返回404页面
func dirToZero(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if strings.HasSuffix(r.URL.Path, "/") {
http.NotFound(w, r)
return
}
next.ServeHTTP(w, r)
})
}
func main() {
fs := http.FileServer(http.Dir("./web"))
http.Handle("/", http.StripPrefix("/", dirToZero(fs)))
http.HandleFunc("/test", web.Test)
http.ListenAndServe(":80", nil)
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt, os.Kill)
}
点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。
HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持。
修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:
1、DENY:不能被嵌入到任何iframe或者frame中。
2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
3、ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
例如:
apache可配置http.conf如下:
Header always append X-Frame-Options “DENY”
IIS可配置相关网站的Web.config如下:
<system.webServer>
…
…
</system.webServer>
检测到目标网站存在上传下载相关的目录和文件。上传目录一般具有可写权限。攻击者可以预测文件上传的路径,便于和目标站点的其他漏洞攻击结合攻击目标服务器。
检查此类目录的访问权限。如果不需要这些目录,建议删除。
检测到在服务器的响应内容中可能存在系统目录路径信息,如/home,/var或者c:\等信息,这一般是由于目标web应用没有处理好应用错误信息导致的目录路径信息泄露。
如果攻击者获取到这些信息,可以了解目标服务器目录结构,给攻击者带来便利,如上传文件到服务器的其他目录。
如果是正常页面中包含路径信息,如果不需要该路径信息,删除该信息。
如果是错误信息中包含路径信息,需要屏蔽应用程序错误信息。
发现目标网站存在测试应用程序。这种类型的文件通常是由开发人员或者网站管理员用于测试web应用程序的某个功能时留在服务器上的。这些文件可能包含有敏感信息,包括已验证的会话ID,用户名/密码等。如果攻击者获取到这些敏感信息,攻击者可以进一步获取其他敏感数据。
删除此类文件或限制此类文件的访问权限。