JBOSS:是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
JBOSS 端口号:8080
默认密码 :admin :admin
1.弱口令
(1).对方开启服务
(2).没有修改默认路径(方便找到后台)
案例:
访问对方网站。点击Administration Console,弹出登陆界面,输入用户名“admin”、密码“admin”,点击“Login”登录。(注意:第一次登陆控制台,需要等待程序响应)
如果能够登录成功,说明管理员没有修改JBoss的默认密码,黑客可以通过这个漏洞上传木马WAR包,对WEB服务器进行入侵。
接下来进行war包的部署:
接下来上传成功。访问自己的木马的页面就可以随便弄了。
2.JBoss invoke接口未授权访问
invoke接口 的功能:外部通过这个函数用于访问 对象提供的属性和成员方法。
案例:
个人感觉不需要探测对方系统版本等一些信息。如有需要:Nmap 等一些可以探测。
直接访问目标网站:
发现目标为默认网站,点击上图箭头位置进入:
继续点击上图箭头进入可以上传war包的部署。
接下来需要搭建一个远程服务器,apache,JBOSS等等一些可以访问的web页面。
为啥要这样?
因为JBOSS的上传war部署时,只可以使用url进行部署。
部署成功时,在目标主机上上传 远程服务器上的war包即可,出现下面页面表名上传成功。
只需要访问自己上传的大马或者菜刀连接的小马即可。
路径在哪????
一般在根目录下,然后看自己的war包下的路径。然后访问即可。
3.JBoss HEAD绕过漏洞
产生原因:在做防护的时候,只过滤了POST与GET两种方法。此时可以使用HEAD报文头部进行绕过。
案例:
(1)当你访问一个目标主机时,尝试了弱口令及爆破等方法,还是没有办法进去对方后台。此时,需要尝试一下HEAD绕过,看看对方是否防护完全,全部过滤。
因为登录不上对方管理后台,所有要找到一个可能登录并且可以上传war包的一个JBOSS网站,或者自己创建一个即可。
然后在自己可以上传war那个的网站进行上传(不懂往上看),在上传war包的同时,使用burp进行数据包的抓取。把HOST换成目标IP即可
上传过程war时,抓取数据包。为了方便可以把它发送到 Repeater 。截图应该是一个POST方法 (忘了截图,各位可以验证),然后使用下图方法先转化成GET方法
使用上图方式,把POST的方法转换成GET方法。
(2)为啥POST转成成GET 。内容转上去了呢????
科普: POST 与 GET 是最常用的HTTP方法。
什么是 HTTP?
超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。
HTTP 的工作方式是客户机与服务器之间的请求-应答协议。
web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。
两种 HTTP 请求方法:GET 和 POST
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
-
-
-
- GET - 从指定的资源请求数据。 (就是url上传输的)
- POST - 向指定的资源提交要被处理的数据。(大多数就是有文本框输出的参数个人理解())
-
-
所有post转化成get时就是把上传的war包转化成url上的参数传递了(个人理解)
(3).可以尝试发送到目标网站,接下来一定是失败的,以为对方已经把GET与POST做了过滤
(4).因为没有过滤HEAD。
HEAD:获得报文首部。(也是HTTP一种方法)
这里接着上一步把GET转换成HEAD 方法进行传输。 (别忘把HOST换成目标IP)
可以看到出现500错误。就是内部错误产生、程序出错,配置出错。但是只要不是400就应该可以说明这个文件存在也就是上传成功了。
然后使用菜刀连接即可。
路径是啥??? 请往上文看。
本文接触太多HTTP协议,推荐《HTTP图解》一书,个人感觉不错,带图了解HTTP。
补:测试的时候可能会发现自己的网站都找不到路径去显示,怎么去上传呢?往下看,反序列化漏洞教你找路径
4.JBOSS反序列化漏洞
Java反序列化漏洞简介
Java序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,Java中的ObjectOutputStream类的writeObject()方法可以实现序列化。
Java反序列化即逆过程,由字节流还原成对象。ObjectInputStream类的readObject()方法用于反序列化。
因此要利用Java反序列化漏洞,需要在进行反序列化的地方传入攻击者的序列化代码。能符合以上条件的地方即存在漏洞。
以下实验均用针对Java反序列化测试工具去实验。 (多谢老师的提供) 环境自己搭建。
JBOSS 默认只能本地访问 run.bat -b 0.0.0.0 开启任意ip访问 (cmd 进入bin目录下执行)
此实验因为个人原因,端口改成8000 方法如下:
(1).访问目标网站,出现下面图片说明对方是JBOSS。
(2).接下来使用 专用 反序列化工具去检测.,发现存在反序列化漏洞。
(3).可以执行命令
(4).接下来要上传webshell,最重要的是找到路径
(5).这里就需要开拓自己的思维了,怎么能找到目标机器可以访问的物理路径呢?这里介绍根据图片去找到物理路径。虽然我们后台不能登录上去,但是可以进去后台页。可以看到有图片,然后查看元素找到物理路径。
个人方法:点击图片右键复制图像连接,然后打开另一个网页去访问这个图像,也可以看到这个物理路径:
(6).因为上传webshell时,需要绝对路径,而我们进不去对方服务器。所以需要我们自己安装一个JBOSS服务去寻找刚刚根据图片找的那个物理路径。看看那个图片在绝对路径哪里。
小方法:进去自己的搭建的JBOSS目录中,按住CTRL+E进行搜索(搜索上文中的那个照片名字,默认都是一样的)。
然后查看照片属性中的路径,这里附上每一个照片属性,然后自己去访问测试,哪一个可以访问到,哪一个就是可以传webshell 的绝对路径
这里上图第三个可以访问,可以自己写一个文件去测试。
可以看到是可以访问的到,而且我们测试的logo.gif也在。
接下来使用工具上传webshell,发现也可上传成功。
(7.)然后访问页面,是否能访问。发现500错误:
应该是木马的问题,换一个继续上传测试。
(8).换一个木马上传,发现访问成功。
(9).然后登陆进去,进去管理页面。
(10).实验结束,亲测可行。
修复:
1.jboss invoke接口修复:修改以下文件
(1)
(2)
修改之后,再次访问需要使用用户名与密码才可以。
关注网络安全丶避免肆意破环