具体的例子我就不给你找了,
创新互联2013年开创至今,先为阜宁等服务建站,阜宁等地企业,进行企业商务咨询服务。为阜宁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
0,开源软件常常是基于社区的力量发展的.开源安全是用漏洞堆起来的,用社区的力量,一点一点的完善.
1,首先所有软件都可能包含漏洞,越是复杂的软件包含的漏洞可能越多.
2,相对于闭源软件,并不是说开源软件漏洞多,而是开源软件是可以被大家看到全部代码的.所以自然发现的问题就多.而闭源软件,就算漏洞摆在你面前,你也不一定能发现他.像看病一样,不给医生把脉,不给检查,不给化验,他怎么能知道你身体的具体情况!
3,漏洞多,可以从侧面说明使用Java的人数众多.假如有一个没有人使用的软件,那能被发现什么漏洞呢?
举个例子,微软的windows有打不完的补丁,经常爆出各种高危漏洞,这并不是说微软技术不行,而是windows用户量太大了,其漏洞有较大的利用价值,所以会更努力的去发现漏洞.
4,Java的漏洞不一定就全是Oracle留下的.Java有很多第三方软件,这些第三方软件技术上不一定过关,数量又庞大,综合上面的几条,带来的漏洞可不会少.比如广受诟病的struts2
5,还是那个,Java的使用者众多,良莠不齐.有些经验不足的或者粗心大意的程序员写出来的代码往往就带有一点你给的漏洞.
6,Oracle到底还算是专业的.社区的程序猿不一定就有Sun或者Oracle的人厉害.
以上是我暂时能想到的,希望能帮到你.
struts2会将http的每个参数名解析为ongl语句执行(可理解为Java代码)。 ongl表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制。
web安全
Java代码审计——文件操作漏洞

jinyouxin
原创
关注
0点赞·152人阅读

目录
(一)、 文件操作漏洞简介
(二) 、漏洞发现与修复案例
2.1 文件包含漏洞
2.2 文件上传漏洞
(三) 文件下载/读取漏洞
(四).文件写入漏洞
(五).文件解压漏洞
小结
(一)、 文件操作漏洞简介
文件操作是 Java Web 的核心功能之一,其中常用的操作就是将服务器上的文件以流的形式在本地读写,或上传到网络上,Java 中的 File 类就是对这些存储于磁盘上文件的虚拟映射。与我们在本地计算机上操作文件类似,Java 对文件的操作同样包括上传、删除、读取、写入等。Java Web 本身去实现这些功能是没有漏洞的,但是由于开发人员忽略了一些细节,导致攻击者可以利用这些细节通过文件操作 JavaWeb 本身的这一个功能,从而实现形如任意文件上传、任意文件下载/读取、任意文件删除等漏洞,有的场景下甚至可以利用文件解压实现目录穿越或拒绝服务攻击等,对服务器造成巨大的危害。
(二) 、漏洞发现与修复案例
2.1 文件包含漏洞
文件包含漏洞通常出现在由 PHP 编写的 Web 应用中。我们知道在 PHP 中,攻击者可以通过 PHP 中的某些包含函数,去包含一个含有攻击代码的恶意文件,在包含这个文件后,由于 PHP 包含函数的特性,无论包含的是什么类型的文件,都会将所包含的文件当作 PHP 代码去解析执行。也就是说,攻击者可能上传一个木马后缀是 txt 或者 jpg 的一句话文件,上传后利用文件包含漏洞去包含这个一句话木马文件就可以成功拿到 Shell 了。
那么 Java 中有没有类似的包含漏洞呢?回答这个问题前,我们首先来看一看Java 中包含其他文件的方式
JSP 的文件包含分为静态包含和动态包含两种:
静态包含:%@include file="test.jsp"%。
动态包含:jsp:include page="%=file%"/jsp:include、c:import url="%=url%"/c:import
由于静态包含中 file 的参数不能动态赋值,因此我目前了解的静态包含不存在包含漏洞。相反,动态包含中的 file 的参数是
反序列化顾名思义就是用二进制的形式来生成文件,由于common-collections.jar几乎在所有项目里都会被用到,所以当这个漏洞被发现并在这个jar包内实现攻击时,几乎影响了一大批的项目,weblogic的中枪立刻提升了这个漏洞的等级(对weblogic不熟悉的可以百度)。
至于如何使用这个漏洞对系统发起攻击,举一个简单的例子,我通过本地java程序将一个带有后门漏洞的jsp(一般来说这个jsp里的代码会是文件上传和网页版的SHELL)序列化,将序列化后的二进制流发送给有这个漏洞的服务器,服务器会自动根据流反序列化的结果生成文件,然后就可以大摇大摆的直接访问这个生成的JSP文件把服务器当后花园了。
如果Java应用对用户输入,即不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。
所以这个问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制;假若反序列化可以设置Java类型的白名单,那么问题的影响就小了很多。
java是语言,它的漏洞好像没有听说过,我觉得你说的是java开发的应用,java开发的web等,这些是无法避免的,因素除人为之外也有很多,不仅仅是java,其它语言也一样,应该不在语言本身,而在程序员的逻辑、硬件、平台等诸多因素