一、jboss安装
二、错误记录
1.library initialization failed - unable to allocate file descriptor table - out of memoryAborted (core dumped)

图 1 启动后没有端口 图

图 2 查看容器id,查看日志 图
docker ps -a
docker logs 79c6c5f6d589
错误语句记录:
library initialization failed - unable to allocate file descriptor table - out of memoryAborted (core dumped)
错误分析:
内存不足,导致中止。这应该是docker 内存分配大小的问题。
相关原理
- 文件描述符表:每个进程在启动时,操作系统会为其分配一个文件描述符表(File Descriptor Table),用于管理打开的文件、网络套接字等资源。该表的大小受系统级(全局)和用户级(进程)限制。
- 内存分配依赖:文件描述符表本身需要内存空间存储条目。当进程尝试打开大量文件或网络连接时,文件描述符表需要动态扩展,若此时系统内存不足(或进程的虚拟内存限制被触发),会导致分配失败
解决方案:
方法一:通过Docker Compose文件配置(持久化生效)
适用场景:容器编排场景(如长期运行服务),需固化配置。
操作步骤:
编辑docker-compose.yml,添加ulimits字段进行限制:
ulimits:
nofile:
soft: 65535
hard: 65535


图 3 启动成功,方法可行 图
方法二:修改Docker守护进程默认配置(全局生效)
适用场景:所有新启动的容器均需继承此默认配置。
操作步骤:
systemctl status docker #查看配置文件路径
vim /usr/lib/systemd/system/docker.service #打开配置文件
--default-ulimit nofile=65535:65535 #在启动docker时添加限制

systemctl daemon-reload #重新加载配置
systemctl restart docker #重新启动docker
已验证,方法可行
以上都是针对docker环境,在我们主机如果运行一些java程序也会出现类似报错情况需要添加限制
cat /etc/security/limits.conf | grep nofile #检查设定
# 修改宿主机全局配置
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
# 重启宿主机或重新登录生效
解释:
hard limit ,不能超过这个设定值
soft limit ,警告值
2.需要java 8环境
ysoserial-all.jar运行报错
Error while generating or serializing payload
java.lang.reflect.InaccessibleObjectException: Unable to make field private java.lang.String javax.management.BadAttributeValueExpException.val accessible: module java.management does not "opens javax.management" to unnamed module @5a07e868
at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:388)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:364)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:312)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:177)
at ysoserial.payloads.util.Reflections.setAccessible(Reflections.java:26)
at ysoserial.payloads.CommonsCollections5.getObject(CommonsCollections5.java:83)
at ysoserial.payloads.CommonsCollections5.getObject(CommonsCollections5.java:51)
at ysoserial.GeneratePayload.main(GeneratePayload.java:34)
错误分析:
错误是由于Java 9及以上版本的模块系统(JPMS)对反射访问权限的严格限制导致的
解决方案:
个人感觉直接更换为java 8环境最好
java 8安装
#推荐从华为云镜像站下载特定版本的JDK 8(如jdk-8u202-linux-x64.tar.gz)
wget https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
#解压并移动至目标目录
sudo mkdir -p /usr/local/java
sudo mv jdk-8u202-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
sudo tar -zxvf jdk-8u202-linux-x64.tar.gz
#编辑全局配置文件/etc/profile(和windows的环境变量一样)
sudo vim /etc/profile
#在文件末尾添加以下内容:
JAVA_HOME=/usr/local/java/jdk1.8.0_202
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH
source /etc/profile # 使配置生效
使用使用update-alternatives管理java版本
注意根据自己的路径配置
sudo update-alternatives --install "/usr/bin/java" "java" "$JAVA_HOME/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "$JAVA_HOME/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "$JAVA_HOME/bin/javaws" 1
切换至Java 8
sudo update-alternatives --config java

3.缺少步骤

文件上传,添加url列表后,还需点击应用操作
三、jboss漏洞总结
1. CVE-2017-12149 反序列化代码执行漏洞
- 影响版本:JBoss 5.x / 6.x
- 访问路径:
/invoker/readonly - 漏洞原理:攻击者通过此路径上传恶意序列化数据,利用
ReadOnlyAccessFilter未进行安全检查的特性触发远程代码执行。 - 修复建议:
- 升级至JBoss 7.x版本
- 删除
http-invoker.sar组件 - 在
web.xml中添加访问控制策略,限制/invoker/readonly路径的访问
2. CVE-2015-7501 JMXInvokerServlet 反序列化漏洞
- 影响版本:
- Red Hat JBoss Enterprise Application Platform 4.3.x/5.x/6.x
- 其他相关产品如JBoss A-MQ、BPM Suite等
- 访问路径:
/invoker/JMXInvokerServlet - 漏洞原理:攻击者通过此接口上传恶意序列化数据,利用Apache Commons Collections的Gadget执行代码。
- 修复建议:
- 删除
http-invoker.sar组件 - 添加安全约束至
web.xml,限制接口访问
- 删除
3. JBoss EJBInvokerServlet 反序列化漏洞
- 影响版本:JBoss 6.x(依赖Apache Commons Collections 3.x/4.x)
- 访问路径:
/invoker/EJBInvokerServlet - 漏洞原理:通过此路径上传恶意序列化数据,触发远程代码执行。
- 修复建议:
- 移除或禁用
EJBInvokerServlet服务 - 升级Apache Commons Collections库至安全版本
- 移除或禁用
4. CVE-2017-7504 JBossMQ JMS 反序列化漏洞
- 影响版本:JBoss AS 4.x及更早版本
- 访问路径:
/jmx-console(通过JBossMQ服务) - 漏洞原理:攻击者通过JMS服务发送恶意序列化数据,触发远程代码执行。
- 修复建议:
- 升级至JBoss 5.x及以上版本
- 移除
jbossmq-httpil.sar组件
5. JBoss 未授权访问漏洞
- 影响版本:所有低版本JBoss(默认配置)
- 访问路径:
/jmx-console(JMX控制台)/web-console(Web管理控制台)
- 漏洞表现:无需认证即可访问管理控制台,部署恶意War包或执行命令。
- 修复建议:
- 为控制台配置强认证(如账号密码)
- 关闭
jmx-console和web-console服务
6. JBoss Administration Console 弱口令漏洞
- 影响版本:所有未修改默认配置的版本
- 访问路径:
/admin-console(管理控制台登录页面) - 漏洞利用:默认弱口令(admin/admin)可能导致后台被控制。
- 修复建议:
- 修改默认账号密码,启用复杂口令策略
- 限制管理后台的IP访问范围
四、具体修复操作
五、jboss相关题目
单选题
1. JBoss禁止目录浏览是通过:[ ]
A. 修改代码listings为false
B. 修改代码turn为false
C. 修改代码listings为no
D. 修改代码turn为no
答案:A
2. JBoss为什么易受攻击?
A. 具有强大的安全防护机制
B. 用户基数小
C. 默认配置非常安全
D. 广泛使用和知名度、复杂系统架构
答案:D
3. JBoss默认端口是多少?
A. 80
B. 8080
C. 7001
D. 8888
答案:B
4. JBoss有一个默认的数据源DefaultDS,它使用JBoss内置的 [ ] 数据库。
A. MSSQL
B. HSQLDB
C. MySQL
D. SQLDB
答案:B
5. JBoss是一个管理EJB的容器和服务器,下列不属于JBOSS支持的规范是:
A. EJB 1.1
B. EJB 2.0
C. EJB 3
D. JEB4
答案:D
6. JBoss漏洞利用的本质是什么?
A. SQL注入
B. 越权访问
C. 跨站脚本
D. 上传Webshell
答案:D
7. JBoss不存在哪些漏洞?
A. 未授权访问
B. 任意文件包含
C. 反序列化漏洞
D. 弱口令漏洞
答案:B
8. JBoss中间件可能存在什么漏洞?
A. JAVA反序列化
B. struts2命令执行
C. SQL注入
D. DDOS攻击
答案:A
9. 下列不属于JBoss安全要求的是:
A. JBoss4.2必须需要安装jdk5
B. 不得使用JBoss的默认配置、端口、管理员账户和密码,必须更改。
C. 必须使用JBoss 7以上版本。
D. 对于JBoss管理的用户,必须实施强密码策略,包括长度、复杂度等要求。
答案:A
10. JBoss CVE-2017-12149 漏洞是由于( )原因引起的:
A. JBoss服务器的网络通信加密算法不够安全
B. JBoss将来自客户端的未经安全检查的序列化数据流进行反序列化
C. JBoss服务器的默认安装包中包含了恶意代码
D. JBoss服务器的默认配置中开启了不安全的远程服务
答案:B
11. JBoss中jmx-console的密码配置文件为( )。
A. Jmx-console-users.properties
B. Jmx-console-users.xml
C. Jmx-console-users.conf
D. Jmx-console-users.dat
答案:A
多选题
1. JBoss易受攻击的原因可能包括:
A. 用户基数大
B. 复杂的系统架构
C. 已知的安全漏洞
D. 所有选项都是
答案:D
2. 关于JBoss常见漏洞,正确的是:
A. CVE-2017-12149
B. JBoss未授权访问
C. JMXInvokerServlet反序列化
D. JBoss溢出漏洞
答案:ABCD
3. JBoss反序列化漏洞(CVE-2017-12149)影响的版本有:
A. AS 5.x
B. AS 6.x
C. AS 7.x
D. AS 8.x
答案:AB
4. JBoss的管理域模式中有哪几种主要的角色:
A. Host
B. HostController
C. DomainController
D. ServerController
答案:ABC
5. 某个攻击者执行下列命令,执行命令后获取的Webshell地址可能是( )。命令为:
java -jar jboss_exploit_fat.jar -i http://192.168.1.2/invoker
DiffCopyInsert
A. http://192.168.1.3/demo/java.jsp
B. http://192.168.1.3/java/java.jsp
C. http://192.168.1.3/java/test.jsp
D. http://192.168.1.3/demo/test.jsp
答案:BC
6. JBoss的两个管理控制台为:
A. jmx-console
B. admin-console
C. console
D. web-console
答案:AD
7. 以下关于常见JBoss控制目录正确的是:
A. http://www.example.com/jmx-console/
B. http://www.example.com/web-console/
C. http://www.example.com/admin
D. http://www.example.com/manager
答案:AB
8.以下属于 JBOSS 漏洞的是?
A. CVE-2017-12149
B. jboss 未授权访问
C. JMXInvokerServlet 反序列化漏洞
D. Ssrf
答案:A、B、C
9.JBoss漏洞修复需删除的文件有:
A. ./common/deploy/admin-console.war
B. ./common/deploy/jmx-console.war
C. ./server/default/deploy/http-invoker.war
D. ./server/default/deploy/management/console-mgr.sar/web-console.war
答案:ABCD
840

被折叠的 条评论
为什么被折叠?



