昨天突然看到cisp-pte的考核内容,其中的中间件安全考查仿佛就是最近在写的中间件安全配置系列,,无论如何,新手当学习,老师傅就当复习~
同样开篇会抛出几个tomcat的安全配置问题
问题1.Tomcat管理账号密码修改办法
问题2.Tomcat通过后台获取权限的方法
问题3.Tomcat服务器启动权限方法
问题4.Tomcat日志审计方法
下面将针对上述问题进行一个探讨!
问题1.Tomcat管理账号密码修改办法
这是登录管理员时跳出的错误信息,其实从这个401信息我们就可以知道管理员账号和密码如何进行修改
配置文件在Apache Software FoundationTomcat 7.0conf目录下的tomcat-users.xml中(windows环境下)
1
2
3
4
5
6
7
|
<!—
<role rolename=“tomcat”/>
<role rolename=“role1”/>
<user username=“tomcat” password=“<must-be-changed>” roles=“tomcat”/>
<user username=“both” password=“<must-be-changed>” roles=“tomcat,role1”/>
<user username=“role1” password=“<must-be-changed>” roles=“role1”/>
—>
|
可以看到这里配置文件都被注释了,因此在tomcat第一次登录时,需要先写入管理员账号和密码,另外根据经验,在挖洞时时常会出现中间件弱密码的漏洞,这里tomcat在6版本以前账号密码均是默认的,在版本7之后才改为需要管理员自行添加设置,这里我们自定义添加一个账号密码为例
1
2
3
4
5
6
7
8
9
|
<!—
<role rolename=“tomcat”/>
<role rolename=“role1”/>
<user username=“tomcat” password=“<must-be-changed>” roles=“tomcat”/>
<user username=“both” password=“<must-be-changed>” roles=“tomcat,role1”/>
<user username=“role1” password=“<must-be-changed>” roles=“role1”/>
—>
<user username=“tomcat” password=“tomcat” roles=“manager-gui”/>
</tomcat–users>
|
这里我们添加了一个管理员,账号为tomcat,密码为tomcat,角色为manager
Tomcat提供了两个管理程序:admin和manager。其中admin用于管理和配置Tomcat服务器,manager用于管理部署到Tomcat服务器中的Web应用程序。
问题2.Tomcat通过后台获取权限的方法
其实这个问题就等同于:如何通过后台获得shell~这里不是很难!
登录进后台中,可以看到可以上传war包,这就好像asp或者php中上传一句话马、图片马一样的,不过文件类型可能有所不同!
这里首先将jsp大马压缩成zip文件,然后将zip后缀修改为war后就可以上传了
这里可以看到war包已经部署上去了,下面我们来访问我们的jsp大马
然后有了shell,接下来可能就是提权相关的了,这里不再赘述~
问题3.Tomcat服务器启动权限方法
这里指的是tomcat的启动权限,由于是在windows下做的测试,windows登录上去即为管理员,因此也就没有权限一说,只有在linux下权限配置才有意义。
这里再多说两句,为什么要给tomcat配一个启动权限,假如这里的tomcat上部署了web项目,但是web项目漏洞百出,黑客通过web漏洞获得了linux的shell,这时候由于tomcat是root权限,因此黑客可以通过tomcat中间件执行任意命令~
这也就是tomcat启动权限的考虑所在~
下面我们转战kali,这里的tomcat部署就不说了,很简单,自行百度~
这里权限配置的文件是apache-tomcat-7.0.82/bin目录下的daemon.sh
1
|
test “.$TOMCAT_USER” = . && TOMCAT_USER=tomcat
|
这里可以看到初始启动,以tomcat用户来运行Tomcat中间件,这里就不得不说前面tomcat对用户角色有多种分配,最低的为用户权限,其次是管理员权限
这里在修改成admin权限后,发现几乎什么都做不了。。这里的admin即为普通用户权限,与常识有点不一样~
问题4.Tomcat日志审计方法
在tomcat目录下即有log文件夹,下面将对这些log文件进行分析
localhost.2017-11-11.txt //经常用到的文件之一 ,程序异常没有被捕获的时候抛出的地方
catalina.2017-11-11.txt //经常用到的文件之一,程序的输出,tomcat的日志输出等等
manager.2017-11-11.txt //估计是manager项目专有的
host-manager.2017-11-11.txt//估计是manager项目专有的
localhost_access_log.2017-11-11.txt //tomcat访问日志记录,需要配置
那么这里只对一类日志文件进行分析,那就是access_log,因为这记录了所有的GET、POST包,能够极大地帮助我们审计Tomcat服务器的安全性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
127.0.0.1 – – [11/Nov/2017:17:25:29 +0800] “GET / HTTP/1.1” 200 11418
127.0.0.1 – tomcat [11/Nov/2017:17:27:02 +0800] “GET /manager/html HTTP/1.1” 200 17543
127.0.0.1 – tomcat [11/Nov/2017:17:27:07 +0800] “GET /manager/html HTTP/1.1” 200 17543
127.0.0.1 – tomcat [11/Nov/2017:17:27:11 +0800] “POST /manager/html/undeploy?path=/123&org.apache.catalina.filters.CSRF_NONCE=CEB505179A8B0FA1821DBE6DB49E74B7 HTTP/1.1” 200 15915
127.0.0.1 – tomcat [11/Nov/2017:17:27:25 +0800] “POST /manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=87F88C61419663AF0FF6863019F95C67 HTTP/1.1” 200 15921
127.0.0.1 – tomcat [11/Nov/2017:17:27:31 +0800] “GET /manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=87F88C61419663AF0FF6863019F95C67 HTTP/1.1” 200 15939
127.0.0.1 – tomcat [11/Nov/2017:17:28:06 +0800] “POST /manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=4A393C4A0579A8968BCC81E4F4E196A4 HTTP/1.1” 200 17550
127.0.0.1 – – [11/Nov/2017:17:28:08 +0800] “GET /adog/ HTTP/1.1” 404 961
127.0.0.1 – – [11/Nov/2017:17:29:17 +0800] “GET /adog/adog.jsp HTTP/1.1” 200 9534
127.0.0.1 – – [11/Nov/2017:17:29:31 +0800] “GET /adog/adog.jsp HTTP/1.1” 200 9534
127.0.0.1 – – [11/Nov/2017:17:30:10 +0800] “GET / HTTP/1.1” 200 11418
127.0.0.1 – tomcat [11/Nov/2017:17:30:12 +0800] “GET /manager/html HTTP/1.1” 200 17550
127.0.0.1 – – [11/Nov/2017:17:31:05 +0800] “GET /adog/ HTTP/1.1” 404 961
127.0.0.1 – – [11/Nov/2017:17:31:08 +0800] “GET /adog/adog.jsp HTTP/1.1” 200 9534
127.0.0.1 – – [11/Nov/2017:17:31:44 +0800] “POST /adog/adog.jsp HTTP/1.1” 200 11448
|
这里截取了上传jsp大马的包参数
127.0.0.1 — 访问者ip
[11/Nov/2017:17:31:44 +0800] — 操作时间
“POST /adog/adog.jsp HTTP/1.1” — 访问者的操作
200 — 网页状态码
11448 — 发送信息字节数
从这里我们可以判断这个攻击者进入到了我们tomcat服务器的管理界面,然后通过上传文件获得了shell,那么在意识到服务器已经沦陷后,我们就应该审计下服务器的漏洞,进而打补丁,接着就该对系统的一些后门文件进行删除,达到保障服务器安全的要求!
上述如有不当之处,敬请指出~
1 前言 基于先前所做的研究工作,需要构建web应用的内路径图谱,本意是想构建精确的渗透路径,目前市面上看到大多数扫描器如果能够扫出来漏洞,好一点的可能会将攻击url和攻击参数展示出来,但是局限性就在于如果这个链接需要层层跳转,当用户不能直接访问这个攻击链接的…
请登录后发表评论
注册