vulnhub——webmachine靶机

一、概要

由于ova文件vmware打开异常,懒得改了也,所以这里攻击机用的vmware,靶机用的virtualbox

两台机子的网络都是用的桥接模式

靶机:192.168.1.101
攻击机:192.168.1.109
难度:中级
靶机下载地址:https://download.vulnhub.com/webmachine/Web-Machine-N7.ova

二、主机发现

netdiscover扫描网段内主机

arp-scan指定网卡扫描

三、信息收集 

nmap简单扫一下端口情况

只有一个80端口是开着的

四、目录扫描 

dirb扫描

没扫出来什么东西

dirsearch扫描

使用方法

-u    指定扫描的url地址
-e    包含的文件后缀(逗号分隔)
-X    排除的文件后缀名
-w    自定义字典
-i    保留的状态码
-x    排除的状态码
-s    每次请求间隔的时间
-m    HTTP请求方法
-d    HTTP请求数据
-t    线程数
-r    递归爆破
-H    请求头
-F    跟随HTTP跳转
--user-agent    设置user-agent字段
--cookie        设置cookie

dirbuster扫描

直接在终端输入dirbuster就会弹出来了

它是一个可视化窗口的工具,但是速度着实有点慢,不过它的字典很好,结果也很直观

这里直接就爆破出来了目标文件 

gobuster扫描 

使用方法

dir      经典的目录暴力破解模式
dns      DNS 子域暴力破解模式
s3       枚举打开的 S3 存储桶并查找存在和存储桶列表
vhost    虚拟主机暴力破解模式

    -u    指定爆破地址
    -w    指定爆破使用的字典
    -t    指定超时时间
    -x    指定爆破的后缀
gobuster dir -u http://192.168.1.101 -w '字典' -x php,txt,html

本来是可以用-s筛选指定的状态码的,但是我这里这个版本问题应该是,没有这个参数

这里发现了exploit.html文件,用的是御剑的字典,不得不说,御剑yyds

 查看一下exploit.html页面

看上去是一个上传页面

漏洞利用——文件上传

随便上传一个文件,会跳转到本地

上传的地址在前端页面写着,前端页面修改一下上传的地址为靶机地址

 上传成功后会返回flag的前半段,这里没有路径,所以不能用一句话木马连后台

参考网上大佬的WP,有位大佬扫到了一个enter_network目录

简单用dirb扫一下

 两个目录

index.php

 admin.php

五、完整flag

1、利用cookie

查看数据包发现

role的值解码一下

最后的应该是md5加密

 根据上面页面的提示,这个页面应该是仅限管理员查看,但是这里命名role的值就是admin

修改role的值为明文的admin

访问成功,得到后半截的flag

不太靠谱,不确定中间是否还有没有其他的内容

2、利用sql注入

index.php的页面是一个登陆框,那么这里就可以尝试sql注入

将数据包保存到一个txt文件中,用于sqlmap爆破

sqlmap -r 1.txt --random-agent --current-db --batch

 爆破出来当前数据库为Machine

爆破一下表名

sqlmap -r 1.txt --random-agent -D Machine --tables --batch

爆破出来当前数据库中的表只有一个login表

爆破一下字段内容

sqlmap -r 1.txt --random-agent -D Machine -T login --dump --batch

 

 得到字段内容

密码部分就是flag

这样就得到了完整的flag,对比之下发现前面根据cookie得到的flag并不是完整的

总结

整体考察的几乎都是web知识,并没有涉及到反弹shell和提权之类的知识,关键就是看字典的利用和字典的强大性,字典没有的话,根本扫不出来

感觉之所以归为中等难度并非考察的知识点有多难,而是思维扩散性,如果像前面利用cookie的方式得到前后flag后就直接提交的话,这个分就没了,它并不完整

渗透涉及的知识都是常用的知识,容易忽略一些东西,尤其是像做题这种还是得保持严谨的思维

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下命令来查看RabbitMQ的版本: rabbitmqctl status | grep RabbitMQ 其中,rabbitmqctl是RabbitMQ的控制命令,status表示查看RabbitMQ的状态,grep RabbitMQ是用来过滤出包含RabbitMQ关键字的信息。执行该命令后,会输出类似以下的信息: Status of node 'rabbit@localhost' ... [{pid,1234}, {running_applications,[{rabbit,"RabbitMQ","3.8.9"}, {rabbit_common,[],"3.8.9"}, {rabbitmq_management,"RabbitMQ Management","3.8.9"}, {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.8.9"}, {webmachine,"webmachine","1.10.3"}, {mochiweb,"MochiMedia Web Server","2.20.1"}]}, {os,{unix,linux}}, {erlang_version,"22.3.4.16"}, {memory,[{total,123456789}, {connection_readers,}, {connection_writers,}, {connection_channels,}, {connection_other,}, {queue_procs,}, {queue_slave_procs,}, {plugins,}, {other_proc,123456789}, {mnesia,}, {mgmt_db,}, {msg_index,}, {other_ets,}]}, {alarms,[]}, {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]}, {vm_memory_high_watermark,.4}, {vm_memory_limit,1073741824}, {disk_free_limit,50000000}, {disk_free,123456789}, {file_descriptors,[{total_limit,924}, {total_used,4}, {sockets_limit,829}, {sockets_used,2}]}, {processes,[{limit,1048576},{used,123}]}, {run_queue,}, {uptime,123456789}, {kernel,{net_ticktime,60}}] 其中,RabbitMQ的版本号为3.8.9。 ### 回答2: RabbitMQ是一种开源的消息中间件,它支持多个协议,包括AMQP(高级消息队列协议)和STOMP(可简单传输消息协议),可以用于构建分布式应用程序。在Linux系统上,使用以下命令可以查看RabbitMQ版本: 1. 使用rabbitmqctl命令 先使用sudo命令切换到root用户,然后输入以下命令: rabbitmqctl status 该命令将返回RabbitMQ服务器的状态信息,其中包括RabbitMQ服务器的本地版本信息。有时候,rabbitmqctl这个命令可能由于环境变量问题而无法找到。这种情况下,可以在命令前面加上sudo,以root用户的身份运行。 2. 使用rabbitmq-server命令 另一种查看RabbitMQ版本的方法是使用rabbitmq-server这个命令: sudo rabbitmq-server -version 该命令将返回RabbitMQ服务器的版本信息。 无论是使用rabbitmqctl还是rabbitmq-server命令,都可以方便地查看RabbitMQ版本信息。在开发和测试过程中,需要不断了解所采用的技术栈中各种软件和工具的版本信息,以便进行问题排查和性能优化。 ### 回答3: 在Linux系统中,我们可以通过多种方式来查看已安装的 RabbitMQ 版本。 1. 使用 rabbitmqctl 命令 rabbitmqctl 是 RabbitMQ 自带的命令行工具,我们可以通过执行以下命令来查看版本信息: ``` sudo rabbitmqctl status ``` 执行完命令后,会输出 RabbitMQ 的版本信息,如下所示: ``` Status of node rabbit@localhost ... [{pid,xxxx}, {running_applications, [{rabbitmq_management,"RabbitMQ Management Console","3.9.7"}, {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.9.7"}, {rabbitmq_management_agent,"RabbitMQ Management Agent","3.9.7"}, {rabbitmq_auth_backend_ldap,"LDAP Authentication Backend","3.9.7"}, {rabbitmq_auth_mechanism_ssl,"SSL Authentication Mechanism","3.9.7"}, {rabbitmq_shovel_management,"Shovel Management Plugin","3.9.7"}, {rabbitmq_auth_backend_cache,"Caching Authentication Backend","3.9.7"}, {rabbitmq_mqtt,"RabbitMQ MQTT Adapter","3.9.7"}, {rabbitmq_recent_history_exchange,"RabbitMQ Recent History Exchange","3.9.7"}, {rabbitmq_consistent_hash_exchange,"RabbitMQ Consistent Hash Exchange","3.9.7"}, {rabbitmq_federation_management,"Federation Management Plugin","3.9.7"}, {rabbitmq_event_exchange,"RabbitMQ Event Exchange","3.9.7"}, {rabbitmq_federation,"RabbitMQ Federation","3.9.7"}, {rabbitmq_random_exchange,"RabbitMQ Random Exchange","3.9.7"}, {rabbitmq_amqp1_0,"AMQP 1.0 support plugin","3.9.7"}, {rabbitmq_management_visualiser,"RabbitMQ Management Visualiser","3.9.7"}, {rabbit,"RabbitMQ","3.9.7"}, {rabbit_common,[],"3.9.7"}, {amqp_client,"RabbitMQ AMQP Client","5.6.0"}, {rabbitmq_prometheus,"RabbitMQ Prometheus Adapter","3.9.7"}]}, {os,{unix,linux}}, {erlang_version,"24.0.5"}, {memory,[{connection_readers,0}, {connection_writers,0}, {connection_channels,0}, {connection_other,13776}, {queue_procs,27512}, {queue_slave_procs,0}, {plugins,0}, {other_proc,106791992}, {mnesia,117776}, {mgmt_db,0}, {msg_index,0}, {other_ets,3172904}, {binary,68324}, {code,27758417}, {atom,235669}, {other_system,12130443}]}, {disk_free_limit,50000000}, {disk_free,192183007232}, {file_descriptors,[{total_limit,1048576}, {total_used,604}, {sockets_limit,943626}, {sockets_used,588}]}, {processes,[{limit,1048576},{used,296}]}, {run_queue,0}, {uptime,576}, {kernel,{net_ticktime,60}}] ``` 在上述输出结果中,我们可以看到 RabbitMQ 的版本号是 “{rabbit,"RabbitMQ","3.9.7"}” . 2. 查看 RabbitMQ 安装目录下的版本文件 在 Linux 中,RabbitMQ 的版本文件位于 /usr/lib/rabbitmq/erlang/lib/rabbitmq_server-x.x.x/ebin/ 目录下,我们可以通过 cd 命令切换到该目录下,执行 ls 命令查看可以看到版本文件名类似 rabbit_common-3.9.7.ez,其中 3.9.7 即为 RabbitMQ 当前的版本。 3. 查看 erlang 包依赖版本 RabbitMQ 是基于 Erlang 编写的,我们可以通过执行以下命令来查看 erlang 依赖的 RabbitMQ 版本: ``` sudo erl -eval '{ok, A} = file:read_file(filename:join([code:root_dir(), "lib", "rabbitmq_server-3.9.7", "ebin", "rabbit.app"])), {ok, [{version, V}]} = re:run(A, ".*{version, \"(\\d+\\.\\d+\\.\\d+)\"}.*", [{capture, [1]}]), io:format("~s~n", [V]), halt().' -noshell ``` 执行完命令后,会输出 RabbitMQ 的版本信息,如下所示: ``` "3.9.7" ``` 以上是 Linux 查看 RabbitMQ 版本的三种方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值