Skip to content

Commit 520c255

Browse files
committed
sm
1 parent a7dd4de commit 520c255

2 files changed

Lines changed: 35 additions & 3 deletions

File tree

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
## 分类
1818

19-
当前问题总数:100
19+
当前问题总数:102
2020

21-
[Java本身的安全问题 - 23个](https://github.com/4ra1n/JavaSecInterview/tree/master/java)
21+
[Java本身的安全问题 - 25个](https://github.com/4ra1n/JavaSecInterview/tree/master/java)
2222

2323
[Shiro框架相关的安全问题 - 8个](https://github.com/4ra1n/JavaSecInterview/tree/master/shiro)
2424

@@ -58,6 +58,8 @@ https://y4er.com/
5858

5959
https://paper.seebug.org/1689/
6060

61+
https://www.anquanke.com/post/id/151398
62+
6163
## Star
6264

6365
![](https://starchart.cc/4ra1n/JavaSecInterview.svg)

java/README.md

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,4 +292,34 @@ jdbc:mysql://attacker/db?queryInterceptors=com.mysql.cj.jdbc.interceptors.Server
292292

293293
### RASP如何绕过(★★)
294294

295-
使用`JNI`是比较通用的办法,具体到每一种漏洞类型,也会有其他的绕过方式(参数污染,特殊字符等等)
295+
使用`JNI`是比较通用的办法,具体到每一种漏洞类型,也会有其他的绕过方式(参数污染,特殊字符等等)
296+
297+
298+
299+
### 简单谈一谈SecurityManager是干什么的(★★★)
300+
301+
`Java Security Manager`的一个典型应用场景是`JVM`需要加载运行一段代码,但是这段代码是不可信的
302+
303+
例如来自用户的输入上传和反序列化指定的`bytecode`或者使用`URLClassLoader`在网络中远程加载等
304+
305+
这些情况下,需要防止不可信来源的恶意代码对系统造成破坏。其实这就是沙箱的应用场景
306+
307+
308+
309+
### 谈一谈SecurityManager的绕过姿势(★★★★)
310+
311+
(1)单等号`+home`目录可写导致`Java Security Manager`绕过
312+
313+
例如这样指定`policy`文件:`-Djava.security.policy=java.policy`
314+
315+
(2)通过`setSecurityManager`绕过`Java Security Manager`
316+
317+
恶意代码可以在运行时调用`setSecurityManager`方法将`SecurityManager`置为`null`以绕过
318+
319+
(3)通过反射绕过`Java Security Manager`
320+
321+
反射调用`getProtectionDomain0`方法将所有`hasAllPerm`属性设置为`true`
322+
323+
(4)自定义类加载器绕过
324+
325+
(5)通过`JNI`调用`native`方法绕过

0 commit comments

Comments
 (0)