tomcat 弱口令【tomcat8】

文章目录

  • tomcat 弱口令
  • 攻击条件
  • 攻击准备
  • 攻击过程
  • intruder模块:
    • positions
    • payload
    • Resource pool
    • 设置完毕之后点击start attack开始攻击
    • 尝试登录
  • 拿取shell
    • 上传war包
    • 冰蝎连接
  • 可以进入容器验证

tomcat 弱口令

Tomcat支持后台部署War文件,默认情况下管理页面仅允许本地访问。

攻击条件

如果网站运维/开发人员手动修改配置文件中的信息允许远程IP进行访问(需求),且恶意攻击者拿到管理界面账户密码情况下,则可上传木马文件,控制系统。

攻击准备

  1. 先要配置好环境,我这里是用的云服务器搭建的docker环境,配置好可以直接访问,默认端口:8080
  2. 我这里的文件目录是/home/vulhub/tomcat/tomcat8。然后输入docker-compose up -d开启docker环境。
  3. 准备好bp,我这里用的是新版bp,也要准备好字典。

攻击过程

  1. 先进入网址:
    tomcat 弱口令【tomcat8】_第1张图片

  2. 点击右侧manager app,会提示输入用户名和密码:
    tomcat 弱口令【tomcat8】_第2张图片

  3. 这里我们输入123,123并打开bp抓包:
    tomcat 弱口令【tomcat8】_第3张图片

  4. 并没有发现发送信息,但是在第4行发现basic ,典型base64加密,解密查看一下:
    tomcat 弱口令【tomcat8】_第4张图片

  5. 到这里我们有理由怀疑这是承载用户名和密码的地方,两者用‘:’拼凑后再用base64加密。

  6. 我们发送到intruder
    tomcat 弱口令【tomcat8】_第5张图片

intruder模块:

positions

  • 攻击类型
    在这里插入图片描述
    这里用的是狙击手,顾名思义,只能打一个目标。
    由于这里是采用的:“用户名:密码”再用base64加密的格式,所以就只有一个目标,而我们的目的就是拼凑出来这样的模式再利用base64加密完成。

  • 攻击对象
    tomcat 弱口令【tomcat8】_第6张图片
    两个$符中间就是我们要爆破的地方。(只有一处)
    base64解码查看

payload

  • 设置爆破位置和字典方式:
    tomcat 弱口令【tomcat8】_第7张图片
    这里需要拼接,因此我们选custom iterator

附:
Simple list:简单字典
Runtime file:运行文件
Custom iterator:自定义迭代器
Character substitution:字符替换
Recursive grep:递归查找
Illegal unicode:非法字符
Character blocks:字符块
Numbers:数字组合
Dates:日期组合
Brute forcer:暴力破解
Null payloads:空 payload
Username generator:用户名生成
copy other payload:复制其他 payload

  • 设置字典:
    tomcat 弱口令【tomcat8】_第8张图片
    有一个好的字典就显得尤为重要,这里需要注意两处:
    第一:由于我们需要拼接用户名和密码,因此我们需要用到两个字典,图中position 1是指第一个字段用什么字典,position 2就是指第二个字段用什么字典,以此类推。
    第二:两者中间由“:”拼凑,因此我们需要在第一个位置后,增加分隔符。图中separator for position 1提供了这一功能,他的意思是,在第一个字典后增加符号。我们在此处填入“:”
  • 选择加密方式
    tomcat 弱口令【tomcat8】_第9张图片
    点击add增添规则:
    tomcat 弱口令【tomcat8】_第10张图片
    这里我们选加密,然后找到base64加密:
    tomcat 弱口令【tomcat8】_第11张图片
  • 选择编码方式
    在刚开始捕获到的报文中可以看到,base64加密后,其末尾的“=”并没有转化程%3d,因此我们并不需要进行url-encode
    tomcat 弱口令【tomcat8】_第12张图片

附:
Add Prefix:添加一个文字前缀
Add suffix:添加一个文字后缀
Match/replace:将替换匹配的正则表达式
Substring:截取字符串的长度0开始
Reverse substring:倒着匹配字符串
Modify case:切换字母的大小写
Encode:通过URL,HTML,Base64的,ASCII码或十六进制字符串对payload进行编码
Hash: 取payload的hash值,MD5、SHA-512等
Add raw payload:在编码后的payload上再加上原来的payload
Skip if matches regex:如果匹配到正则表达式就跳过去
Invoke Burp Extension:调用扩展

Resource pool

  • 线程数:
    tomcat 弱口令【tomcat8】_第13张图片
    设置爆破的线程数及请求间隔。

设置完毕之后点击start attack开始攻击

在这里插入图片描述
等待少许,破解成功。
将其解码发现:
tomcat 弱口令【tomcat8】_第14张图片
tomcat 弱口令【tomcat8】_第15张图片
得到用户名密码。

尝试登录

登陆成功!
tomcat 弱口令【tomcat8】_第16张图片

拿取shell

上传war包

  1. 查看冰蝎v4自带的jsp脚本:
    在这里插入图片描述
    密码为rebyond。
  2. 利用jar命令生成war包:
    jar cvf shell.war shell.jsp
    在这里插入图片描述
  3. 上传:
    tomcat 弱口令【tomcat8】_第17张图片
    发现上传成功!

这里解释一个概念:上传war包的目的是什么?
war包是使用java进行开发一个网站下所有代码(前端+后端),开发完毕后会将源码打包给测试人员测试,测试完毕会使用war包进行发布,war包可以放在tomcat的webapps下,tomcat服务器启动后war包中的源代码会自动进行部署。也就是说,在上传后,网站会执行war包里面的代码,来进行部署。这里war包内容就是创建一个shell文件夹,在此文件夹下创建一个shell.jsp(payload)

冰蝎连接

  1. 输入网址:
    url:port/shell/shell.jsp
    进行连接。
  2. 拿到shell:
    tomcat 弱口令【tomcat8】_第18张图片

可以进入容器验证

  1. tomcat默认存放地址在webapps下。
  2. ROOT和webapps都是将应用部署于tomcat下的初始目录,区别在于ROOT相比webapps服务器优先去webapps目录下找项目,如果有则显示,没有则去ROOT找,ROOT可以去除访问路径中的项目名,如果请求路径当前不想要目录名,那么可以通过在webapps下面创建ROOT目录,然后手动将war包解压到ROOT目录,然后删除原有的war包,这样tomcat启动的时候就不会自动解压war包,同时也不会生成对应war包名称的文件。
    自定义目录的方式,则是彻底改变tomcat应用的初始目录,改到自己指定的目录(比如工程的输出目录)。

你可能感兴趣的:(打vulhub!,tomcat,服务器,web安全)