Kioptrix Level 1.3(#4)

Kioptrix Level 1.3(#4)

MADISUN Lv2

Kioptrix Level 1.3(#4)

渗透思路

信息搜集

  • IP为192.168.89.141
  • nmap扫描端口以及端口服务
1
2
3
4
5
6
7
8
9
10
11
12
13
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-04 22:04 EST
Nmap scan report for 192.168.89.141
Host is up (0.00057s 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)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 32.68 seconds

开放了ssh、http、samba

  • 开放了80,那就先dirsearch扫扫看:dirsearch --url http://192.168.89.141 ,同时浏览器访问 http://192.168.89.141
image-20240305204216081
  • 看到了smb服务且80端口需要用户信息,那么就用enum4linux扫扫

enum4linux的介绍:【网安神器篇】——enum4linux枚举工具-CSDN博客

比较全的扫描方法:enum4linux -a -o <ip>,这里主要看他的用户信息:enum4linux -U 192.168.89.141(主要是因为http里面涉及到用户登录)

image-20240305203732012

能看到一些用户信息,主要有loneferret、john、robert、root、nobody

  • 80端口是个登录界面,先试试能不能简单sql注入,随便在Username里输入admin,在Password里输入'or'1'='1',发现还真能注入:laughing:

image-20240305204504698

  • 回显了一个User信息,但估计这个admin用户不在members里面,简单探索到这里,看看dirsearch什么结果

image-20240305204622062

  • dirsearch其实也没什么特别的,/checklogin就是一个页面没什么信息,/database.sql是个sql文件,但是我们能在里面看到有一个john在members表里面密码是1234

image-20240305204912967

  • 但是拿这个密码登录失败了,看来是修改过,无所谓,我会注入,输入上面一样的注入密码'or'1'='1,轻松登录,拿到了john的真实密码MyNameIsJohn

image-20240305205101931

  • 同样的方式,看看能不能拿到root、nobody、loneferret、robert的密码,最后只拿到了robert的密码ADGAdsafdfwt4gadfga==

image-20240305205720214

  • ssh 连接用户,但是发现两个用户都在受限的shell里面(以john为例),根据提示Type '?' or 'help' to get the list of allowed commands,输入一个?发现能执行的命令很有限:cd clear echo exit help ll lpath ls

image-20240305210854321

信息搜集总结

  • 发现了登录界面的sql注入,通过简单注入,拿到了john和robert两个用户的密码
  • 利用拿到的密码,通过ssh,远程登录了主机,但在受限的shell环境里,==下一步需要绕过限制,如果只是普通用户权限,还需要考虑提权==

漏洞利用

echo绕过受限的shell

  • 这种受限的shell称为lshell(limited shell),执行的命令优有限,但是lshell关于echo存在一个漏洞,我们可以通过echo os.system("/bin/bash"),绕过限制。

lshell绕过限制:Lshell - 醛 (aldeid.com)

文章中还提到了通过vim命令绕过的方法

  • 输入命令,成功绕过,可以执行很多命令,但我们还是普通用户权限

image-20240305212141847

查看网站源代码

  • 回到80端口的思路,看看网站源码,试试看login的校验,于是查看checklogin.php,发现了mysql用户root,没有密码,好家伙😄

image-20240305212754868

权限提升

MySQLUDF提权

  • 先用root登录mysql:mysql -u root,发现mysql的版本是5.0.51a

image-20240305213255453

==接下来的思路就是看看能不能利用mysql提权==

如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。由于MySQL这里正好<5.1,我们可以直接尝试UDF提权

MySQL 漏洞利用与提权 | 国光 (sqlsec.com)

Mysql提权-基于Mysql的UDF提权(Linux系统) - 码小农的幸福生活 - 博客园 (cnblogs.com)

  • 在mysql数据库下输入命令create function sys_eval returns string soname 'lib_mysqludf_sys.so';sys_eval可以执行系统命令并在屏幕上显示select * from mysql.func查看是否创建成功

image-20240305214900539

成功创建

  • 利用sys_eval实现系统命令,我们直接来修改root密码,select sys_eval("sudo passwd root"),然后直接设置root的新密码,再登录,成功拿到root

后来发现sys_exec也可以执行系统命令,但是他无法打印在屏幕上,也无法交互,所以可以用来修改一些权限,比如chmod u+x /bin/bash或者用usermod修改用户所在的组,提权

Kioptrix Level 1.3 (#4) - Vulnhub | @shifty0g

【Vulnhub通关】Kioptrix: Level 1.3 (#4) - 掘金 (juejin.cn)

image-20240305220016944

学习总结与参考链接

  • enum4linux的使用场景

enum4linux的介绍:【网安神器篇】——enum4linux枚举工具-CSDN博客

  • 涉及到80端口,可以先扫起来,然后去搜集信息,拿到shell之后,要先查看源代码,看看有没有漏掉的信息

  • 受限shell绕过方法:echo

lshell绕过限制:Lshell - 醛 (aldeid.com)

  • mysql中的udf提权,mysql还有很多种提权方式有待学习

MySQL 漏洞利用与提权 | 国光 (sqlsec.com)

  • 参考walkthrough

Kioptrix Level 1.3 (#4) - Vulnhub | @shifty0g

【Vulnhub通关】Kioptrix: Level 1.3 (#4) - 掘金 (juejin.cn)

  • Title: Kioptrix Level 1.3(#4)
  • Author: MADISUN
  • Created at : 2024-03-05 10:57:49
  • Updated at : 2024-03-09 20:07:17
  • Link: https://redefine.ohevan.com/2024/03/05/Kioptrix-Level-1-3/
  • License: This work is licensed under CC BY-NC-SA 4.0.