可利用的 Java 函数 [已关闭]
2022-09-01 18:36:01
以下是我个人对客户端Java安全性的研究的列表,并使用Eclipse IDE查看SecurityManager检查哪些方法。
类加载器定义类(=任意 java 代码执行):
java.lang.ClassLoader.defineClass
java.net.URLClassLoader
= 代码执行
Java Beans Introspection 可能会将 ClassLoaders 转移到从不受信任的源加载类中(示例 vuln - cve-2010-1622)
java.beans.Instrospector.getBeanInfo
= 代码执行
文件访问
java.io.File (constructor)
java.io.File.delete
java.io.File.renameTo
java.io.File.listFiles
java.io.File.list
=删除/重命名文件,目录列表
文件流/读取器类
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter
java.io.RandomAccessFile
=文件读/写访问
Java 系统属性
System.setProperty
System.getProperties
System.getProperty
=某些系统属性可能包含一些几乎敏感的信息,并且某些系统属性可能会改变关键内容的执行,但是我没有示例
加载本机库
System.load
System.loadLibrary
= 任意代码执行
执行操作系统可执行文件
Runtime.exec
ProcessBuilder (constructor)
生成本机系统输入事件
java.awt.Robot.keyPress/keyRelease
java.awt.Robot.mouseMove/mousePress/mouseRelease
(也许是牵强附会的,因为服务器甚至可能没有图形环境)
Java 反射 - 访问任意(甚至是私有)字段和方法
java.lang.Class.getDeclaredMethod
java.lang.Class.getDeclaredField
java.lang.reflection.Method.invoke
java.lang.reflection.Field.set
java.lang.reflection.Field.get
= 从披露敏感信息到最终执行代码,具体取决于具体情况
Java 脚本引擎
javax.script.ScriptEngine.eval
=任意代码执行
代码执行漏洞:
(这是关于.net的,但我预计Java非常相似)
数据注入
然后是注入函数系列,通常可以通过不对字符串进行操作而是使用专用库函数来防止。这些通常不会导致任意代码注入。