Sam*_*ivu 31
这是一个基于我对客户端Java安全性的个人研究的列表,并使用Eclipse IDE查看SecurityManager检查的方法.
ClassLoaders定义类(=任意java代码执行):
java.lang.ClassLoader.defineClass
java.net.URLClassLoader
Run Code Online (Sandbox Code Playgroud)
=代码执行
Java Beans Introspection可能会将ClassLoaders转移到从不受信任的来源加载类(例如,vuln-cve-2010-1622)
java.beans.Instrospector.getBeanInfo
Run Code Online (Sandbox Code Playgroud)
=代码执行
文件访问权限
java.io.File (constructor)
java.io.File.delete
java.io.File.renameTo
java.io.File.listFiles
java.io.File.list
Run Code Online (Sandbox Code Playgroud)
=删除/重命名文件,目录列表
文件流/阅读器类
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter
java.io.RandomAccessFile
Run Code Online (Sandbox Code Playgroud)
=文件读/写访问权限
Java系统属性
System.setProperty
System.getProperties
System.getProperty
Run Code Online (Sandbox Code Playgroud)
=某些系统属性可能包含一些几乎敏感的信息,而某些系统属性可能会改变关键内容的执行,我没有示例,尽管
加载本机库
System.load
System.loadLibrary
Run Code Online (Sandbox Code Playgroud)
=任意代码执行
执行操作系统可执行文件
Runtime.exec
ProcessBuilder (constructor)
Run Code Online (Sandbox Code Playgroud)
生成本机系统输入事件
java.awt.Robot.keyPress/keyRelease
java.awt.Robot.mouseMove/mousePress/mouseRelease
Run Code Online (Sandbox Code Playgroud)
(可能很牵强,因为服务器可能甚至没有图形环境)
Java反射 - 访问任意(甚至私有)字段和方法
java.lang.Class.getDeclaredMethod
java.lang.Class.getDeclaredField
java.lang.reflection.Method.invoke
java.lang.reflection.Field.set
java.lang.reflection.Field.get
Run Code Online (Sandbox Code Playgroud)
=从披露敏感信息到最终代码执行,具体取决于具体情况
Java脚本引擎
javax.script.ScriptEngine.eval
Run Code Online (Sandbox Code Playgroud)
=任意代码执行
代码执行漏洞:
(这是关于.net的,但我希望Java非常相似)
数据注入
然后是注入函数系列,通常可以通过不对字符串进行操作但使用专用库函数来防止.那些通常不会导致任意代码注入.
我确信这个列表会随着我开始寻找真正的漏洞而增长:
吞噬异常 - 正如已经指出的,吞咽异常可能不会直接导致剥削,但它可能导致不利用剥削.
String[] commands = {args[0]};
Runtime.getRuntime().exec(commands);&& del /如果在Windows或;rm -rf /*nix人们制造危险的Java代码的最大方式就是懒惰.正如您所说,在运行之前没有清理用户输入.
| 归档时间: |
|
| 查看次数: |
7134 次 |
| 最近记录: |