oscp备战系列-Kioptrix-level4

发布于:2024-12-21 ⋅ 阅读:(17) ⋅ 点赞:(0)

环境准备

攻击机:kali(192.168.30.176)

目标靶机:Kioptrx4 (NAT模式/192.168.30.198)

考察点:

1. sql注入
1. ssh登录
1. mysql提权

信息收集

一、主机探测

nmap 192.168.30.0/24 -sP

在这里插入图片描述

发现目标主机192.168.30.198

二、端口及版本探测

nmap 192.168.30.198 -sV

在这里插入图片描述

开放了22,80,139,445端口,使用apache2.2.8,php5.2.4,及操作系统ubuntu

三、指纹探测

whatweb 192.168.30.198 -v

收集到的信息与上述差不多

四、目录扫描

dirb http://192.168.30.198
sudo dirsearch -u 192.168.30.198

在这里插入图片描述

在这里插入图片描述

有一个database.sql,查看一下

在这里插入图片描述

信息泄露了一个账户 john:1234

Web渗透

访问80端口web页面

在这里插入图片描述

可以看到仅是一个登录页面,目录扫描的结果也没有什么别的特别的页面,看来只能考虑从登录框突破,尝试使用泄露的账户登录

在这里插入图片描述

结果是失败,密码错误,尝试一下万能密码

a'or'1'='1'#

在这里插入图片描述

成功登录,仅显示用户名密码,然后就是 一个登出,没有别的可利用点

不会无缘无故显示一个账密,猜测是密码复用

ssh登录

尝试ssh登录

在这里插入图片描述

出现报错,显示没有匹配的host key,需要额外添加参数

ssh -o HostKeyAlgorithms=+ssh-rsa john@192.168.30.198

在这里插入图片描述

成功登录,有提示说LiGoat shell已就位,所以不会搞砸,然后让我们输入?查看可以执行的命令

在这里插入图片描述

好家伙,很明显就是一个restricted shell

shell逃逸

整体思路就是当前的shell限制太多,比较严格,称为restricted shell,这时候我们需要绕过这种restricted shell,也可以叫shell逃逸

分析一下可以执行的几个命令,先执行一下看看

在这里插入图片描述
思考一下,能利用的命令好像也只有echo了,查询一下有关shell逃逸以及echo的资料,最终得到下面命令

echo os.system('/bin/bash')

这会尝试启动一个新的bash shell,在Python中,os.system() 是用来执行一个shell命令的函数,echo作为一个输出用于执行启动
在这里插入图片描述

在这里插入图片描述

shell逃逸成功,执行whoami查看用户名,以及id查看用户信息

  • uid=1001(john):这表示用户john的用户ID(UID)是1001。
  • gid=1001(john):这表示用户john的主要组ID(GID)是1001,这个组通常与用户名相同,也是john。
  • groups=1001(john):这表示用户john属于组(john)

后渗透

收集信息

查看用户账户信息

cat /etc/passwd             //查看用户账户信息

在这里插入图片描述

可以看到John用户的信息,对应的shell是/bin/kshell,刚才我们也知道John的shell是一种restricted shell

除了John用户还有一个robert用户对应的也是restricted shell,还有一个用户名为loneferret的,拥有bash shell,这时候可以尝试去爆破这个用户,这是一种思路,但我们先收集更多的信息

查看组信息

cat /etc/group              //查看组信息

在这里插入图片描述

在最后几行,可以发现loneferrt对应的用户组是lpadmin和admin

这时候有另外一种思路就是将我们的john添加到组admin或者lpadmin,获取bash权限,但是添加组需要sudo

查看sudoers文件

cat /etc/suoders

在这里插入图片描述

没有该文件

查看进程

ps aux

在这里插入图片描述

发现root用户有运行mysql进程

搜集相关配置文件,最终在/var/www/john/john.php发现有信息泄露。mysql用户为root 空密码

在这里插入图片描述

登录mysql,这个时候mysql用户为root,权限还是很高的

在这里插入图片描述

查看全局配置

show global variables;

在这里插入图片描述

可以看到secure_file_priv为空

在这里插入图片描述

可以写文件,可以打一个udf提权,查阅资料,发现有些mysql的函数可以执行系统命令,也就是说我们可以通过这些函数来添加用户到admin组

在MySQL中,可以执行系统命令的函数主要有以下几个:

  1. sys_exec():这是MySQL提供的内置函数,允许用户在数据库中执行系统命令。这个函数会返回一个整数值,表示命令的执行结果。使用这个函数执行系统命令需要具有相应的权限。
  2. system():这是MySQL中的一个特殊函数,允许在数据库查询中执行外部系统命令。当这个函数被调用时,MySQL会执行指定的系统命令,并将命令的输出返回。
  3. !:在MySQL命令行界面中,可以直接使用反斜杠(!)符号来执行系统命令。例如,!ls 会列出当前目录下的文件。
  4. sys_eval():这是一个用户自定义函数(UDF),可以通过加载动态链接库(DLL)到MySQL中来实现执行系统命令的功能。
  5. load_file():这个函数可以读取文件系统中的文件内容,虽然它不是直接执行系统命令,但它可以被用来读取由系统命令生成的文件内容。

要查看是否有这些函数,我们要查看mysql数据库

use mysql;
show tables;

在这里插入图片描述

有一个 func表,应该有函数说明

select * from func

在这里插入图片描述

可以看到一个sys_exec函数,可以用来执行系统命令,添加john到admin组

select sys_exec('sudo usermod -a -G admin john');
  • sudo:以超级用户(root)的权限执行后面的命令。
  • usermod:用于修改已存在的用户账户的命令。
  • -a:这个选项用于追加组,即把用户添加到一个附加的组,而不是将其从所有其他组中移除。
  • -G:这个选项后面跟的是要修改的用户组信息。在这里,它用于指定用户要被添加的附加组。
  • admin:这是用户 john 要被添加到的组名。
  • john:这是要修改的用户账户名。

在这里插入图片描述

我们退出mysql命令行检验一下

在这里插入图片描述

发现还是没有添加成功,查询资料发现需要重新登录或者重启才能更新配置,我们这里选择切换用户重新登录

首先我们的ssh登录账密都是网站得来的,相当于有存储数据库,所以我们查询数据库获取另外一个用户robert的密码,或者去到web页面采用该robert用户使用万能密码应该也可以

我这里选择查询数据库

在这里插入图片描述

切换用户

在这里插入图片描述

最后可以看到john已经添加到admin组了,这时候我们可以sudo su输入用户John的密码进入root的bash shell

sudo su

在这里插入图片描述

成功提权


近期泷羽推出oscp培训,价格实惠,只需要4000,学生还可以优惠500,可以分期,培训六个月,提供官方教材,以及带着刷众多靶机(大约200多台),每天都有直播教学,以及录播,有想考oscp证书意向的师傅可以私信我,也可以扫描海报上的二维码咨询详情
在这里插入图片描述

文章原创,欢迎转载,请注明文章出处