本文是 JavaWeb 工程源代码安全审计实战的第 3 部分,根据 WebGoat 工程,解说四种高危缝隙:文件途径操作、体系日志诈骗、线程安全和资源未开释问题。要点评论的是源码审计思路和攻防演练实战。
当进犯者能够指定文件名、文件途径等文件操作的参数,就有或许越权拜访正常情况下无法抵达的体系资源。
源代码审计发现 PathBasedAccessControl.java 第 129 行 File() 办法。进犯者有或许操控文件途径越权拜访或许修正被维护的其他文件。该文件内容被作为页面元素显现。
在已布置的 WebGoat 工程,发动出产环境。模仿进犯者登录,在左边导航目录下点选“Access Control Flaws - Bypass a Path Based Access Control Scheme”, 任选一个 combox 中的 xx.html 文件,点击“View Profile”提交。
进犯场景
快速修正
处理 WebGoat 工程的示例的文件途径操作问题,能够在 PathBasedAccessControl.java 第 97 行办法,增加对文件途径的校验。代码片段如下:
布置整改后的代码,从头运转进犯场景,不行再现进犯。
一般的,为避免文件途径操作问题,开发者首先要运用正确的体系函数,其次能够自定义根据需求对文件操作参数进行过滤, 还能够运用服务器安全拜访结构。供给以下五种思路:
1. 运用标准途径 getCanonicalPath()
进犯者能够用包括 ../序列的参数来指定坐落特定目录之外的文件,然后违背程序安全战略,引发途径遍历缝隙,进犯者或许向恣意目录上传文件。
Java 言语对途径的操作有 getAbsolutePath() 获取肯定途径和 getCannonicalPath() 获取标准途径。getCannonicalPath() 首先将途径名转换成肯定途径名,这与调用 getAbsolutePath() 办法的作用相同。然后用与体系相关的 *** 将它映射到其专一途径名。这一般涉及到从途径名中移除剩余的称号(比方 "." 和 "..")、剖析符号衔接(关于 UNIX 渠道),以及将驱动器名转换成标准大小写 *** (关于 Microsoft Windows 渠道)。所以应该尽量运用标准途径,躲避进犯者或许运用的剩余的剖析符号。
2. 开发者为运用到的文件操作参数进行输入验证,过滤字符(如“.”和“..”)
3. 针对运用场景,约束文件类型。比方运用的图片文件只能是后缀.png, .jpg 而不或许是.bat, .sh。 主张加强对文件的判别,要经过文件头而不仅仅是文件后缀来判别。
4.Java 安全管理器 permission Java.io.FilePermission
5. 服务器安全装备战略文件。能将所能读取的文件限定在特定的目录下。怎么装备安全战略文件,和详细运用的服务器类型相关
回页首
当进犯者有或许写 Log 信息的时分,就有或许结构虚伪信息,利诱 Log 读者,利诱体系运维调试人员调试体系故障。Log 诈骗能够帮忙进犯者展开大型可继续进犯 (APT)。
源代码审计发现 HammerHead.java 第 271 行记载未经校验的 message,代码片段如下:
在已布置的 WebGoat 工程,发动出产环境。
模仿进犯者登录,在左边导航目录下点选“Injection Flaws - Log Spoofing”, 在文本框输入“Smith%0d%0aLogin Succeeded for username: admin”, 提交后假定服务器 Log 这段文本,将会在 Log 文件中新的一行中写入虚伪信息“Succeeded for username: admin”。进犯的小窍门在换行符号n,也便是转码后的 %0d%0a, 换行使 Log 中的诈骗信息看起来更实在。
WebGoat 的这个示例项目仅仅描述性展现,没有真实代码履行写服务器日志。
1. 换行符”n”。Log 诈骗最要害的元素便是换行符,假如 Log 信息用黑名单过滤,”n”必定要出现在黑名单中。假如 Log 信息用白名单过滤,”n”必定不能出现在白名单中
2. 开发完结,在出产环境上线之前,要悉数删去 System.out()
3. 分级 Log 开关。软件开发版别和发布版别,翻开不同等级的 Log 开关,明晰记载的一起将损害降到最小规模
4. 操控 Log 内容。不以任何 *** 记载用户的灵敏信息,哪怕是加密过的
5. 不记载隐私信息。当用户隐私信息被写到 Log 中时,就造成了隐私走漏。尤其是暗码信息,即使是加密之后的暗码信息,也不该该被存储到 Log 中。因为任何加密算法都有被破解的或许
WebGoat 工程演示了几十个 Web 问题事例,比方上传并履行歹意文件等等。本文篇幅有限,不一一列举其他事例。
以上议论了 Web 高危缝隙的审计。下面叙述几个因为 Java 言语特性,简单引导开发者犯下的编程过错。这些代码缺点使得工程不强健,需求定点审计排查、整改。
回页首
[1] [2] 黑客接单网
3C73637269707***********3D687474703A2F2F7873732E6861636B7461736B2E6E65742F30544C73356E3F我在峰会上说是被逼的,尽...
8、/Database/#newasp.mdbfunction test_get() { BGP安全性有待进一步提高 当你阅读网页(这取决于界说的方针规模)时,经过主动扫描经过署理的恳求就能发现...
要提到装置完结JDK后为啥还要装备一下环境变量,或许许多Java的初学者或许有学过Java的朋友或许都未必能够彻底的答复的上来。 其实,所谓的环境变量,就是在操作体系中一个具有特定姓名的目标,它包含了...
第三章,勒索病毒开展趋势猜测首要,咱们在视频中看到了经久不衰的“神器”猫池。 在这一年中,咱们发现Sofacy安排好像正在结构层面上发作变化,而且或许现已割裂成了不同的安排。 经过对OlympicDe...
后台:manage/main.asp日前,国内最大的互联网安全公司360(NYSE:QIHU)发布了《2014年中国网站安全陈述》(以下简称《陈述》),《陈述》指出,2014年,网络安全问题出现网站缝...
运用准备好的预处理句子/body>MS的一些言语,例如C#、VB、F#,都是在 CLR 中运转的。 能够将CLR理解为他们的运转环境。 [1][2][3][4]黑客接单渠道1:dnsenum -...