Kioptrix level 3靶场练习

发布时间 2023-10-11 19:51:49作者: Wav3W1nd50r

1.主机发现

nmap -sn 192.168.142.0/24

2.扫描

nmap -sC -A 192.168.142.139

仅开放了22、80端口

3. 访问http://192.168.142.139

点击now,跳转至http://192.168.142.139/gallery/

点击blog,跳转至博客页面,存在两篇博客

注意到网址:http://kioptrix3.com/gallery

该网址与now中的http://192.168.142.139/gallery/ 相似

点击login,跳转至登录界面

4.修改hosts文件

将域名kioptrix3.com指向靶机192.168.142.139

5.访问站点

http://kioptrix3.com

http://kioptrix3.com/gallery/

疑似是彼此独立的两个web站点

Ⅰ. 对主页进行目录扫描:dirsearch -u http://kioptrix3.com/

 发现存在phpmyadmin目录,尝试用帐号admin无密码进行访问

无密码进入phpmyadmin系统

admin不是具有最高权限的帐号(No privileges没有权限创建数据库,也没有权限查看数据库,只能显示虚拟数据库information_schema)

ps:information_schema数据库是Mysql5.0版本之后引入的一种虚拟数据库的概念,它并不是实际存在的,而是一种视图,有点类似于”数据字典“,提供了访问数据库元数据的方式。元数据即数据的数据,所以information_schema数据库中记录的是真实存在的其他数据库的信息,如果不存在其他数据库,该虚拟数据库也就没有什么可用的信息了

尝试root帐号的弱密码,没有登录成功,若后续没有其他可用的入手点,可进行密码爆破(万不得已)

Ⅱ. 对疑似独立站点进行目录扫描

dirsearch -u http://kioptrix3.com/gallery/

发现version.txt,可以获得当前网页的版本

ps:建站后应即时删除/install安装目录以及类似version.txt、changelog.txt这样的文件。这些文件会暴露当前web应用系统的相关信息,攻击者可以通过检索这些特征文件来快速确认当前站点是否存在漏洞可以利用,从而实现批量快速入侵。

通过exploit database搜索得知,gallarific的gallery.php页面存在sql注入漏洞

复现sql注入漏洞

结论:存在sql注入

6.通过cms版本寻找历史漏洞

搜索lotus cms历史漏洞(exploit database或searchsploit)

发现3.0版本存在命令执行漏洞

ps:exploit database提供的是依赖于Metasploit框架运行的自动化版本,

通过搜索引擎可以找到另一个无须依赖Metasploit框架的exploit,地址为:https://github.com/Hood3dRob1n/LotusCMS-Exploit

开启nc对8888端口监听

(非Metasploit框架)下载完后,输入./xx/xx/lotusRCE.sh http://kioptrix3.com 执行

选择反弹shell的执行方式,选择NetCat -e

成功获得一个来自目标主机系统的反弹shell连接,shell的权限为www-data

进入拥有写权限的目录(/tmp 或 /dev/shm),下载LinEnum,并执行

得知版本为Ubuntu 8.04.3,内核版本2.6.24

使用经典linux内核提权exploit——脏牛(Dirty Cow)

ps:脏牛,cve-2016-5195,linux内核v2.6.22—v3.9几乎所有发行版都受该漏洞的影响。内核提权为高危操作,而脏牛又是一个具有普适性的exploit,因此使用该漏洞时有概率导致系统奔溃。

在exploit database搜索脏牛并上传到目标

使用方式:

等待片刻后,exploit执行成功,会在/etc/passwd文件中新建一个root权限的用户,用户名为firefart,密码123456

查看/etc/passwd

使用ssh连接靶机,用户名firefart

提权成功

7.通过sql注入拖库,获得用户名和密码

获取数据库:sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 -p id --level 4 --risk 3 --dbs --batch

获得gallery数据库下的表名:sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 -p id --level 4 --risk 3 -D gallery --tables --batch

获取dev_accounts表的数据:sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 -p id --level 4 --risk 3 -D gallery -T dev_accounts --dump --batch

ps:在实际渗透测试中,发现用户在多个系统使用相同的用户名和密码的情况时有发送,说明用户没有做好账户安全管理。对于在渗透测试过程中获得的登录凭证,尽可能多地尝试其可能有效登录的系统范围,往往会有意想不到的收获

因为在之前的方法中,能看到/etc/passwd文件内容

存在dreg和loneferret用户,但dreg用户登录后默认使用功能受限的rbash shell,所以loneferred用户权限更高。

ps:rbash是一种功能受限的bash shell,即它可以执行的命令被人为限制了,rbash是一种白名单限制shell,使用rbash登录的用户只允许使用管理员预先设定好的命令,可见rbash的权限很低。如果rbash中限定的命令种类设置存在疏忽,就可能导致恶意攻击者可以利用某些被错误允许执行的命令运行出一个不受限制的bash shell,该操作被称为rbash逃逸

使用ssl登录loneferret用户

查看家目录下文件,发现两个疑似存在价值的文件

checksec.sh: loneferret用户对其有可读和可执行权限,该文件属于root用户,若该文件可以被root用户定期执行,则可以在修改checksec.sh文件内容后等待root执行该文件,从而获得root权限。这是一种比较常用的间接篡改运行命令从而获得root权限的方式,阅读checksec.sh文件的内容,发现此方法在目标主机中并不受用。

CompanyPolicy.README: 价值在于内容,可以通过cat命令查看它的内容

ht是一个很古老的文本编辑器,操作指南:HT 编辑器 (sourceforge.net)

执行:sudo -l 查看当前用户可以使用的命令

当前用户可以执行sudo ht

注意:如果之前使用了脏牛进行提前,这里会显示sudo: no passwd entry for root!

未使用脏牛提权的文件

ps:普通用户可以通过sudo命令以root权限执行管理员设定的几个或全部程序。设定不同,每个用户被允许使用sudo执行的命令种类和数量也不同。用户可以通过sudo -l命令查看当前用户被允许使用的程序列表。此外,有些用户在使用sudo -l命令的时候也需要提供当前用户的密码,这里因为管理员对用户的设置不同。如果需要密码,那么对于使用反弹shell获得的用户身份而言,可能就无法直接查看和使用sudo命令了。

使用ht文本编辑器

如果报错,使用export TERM=xterm,更改终端类型为xterm(原类型256色)

TERM为当前终端类型

sudo ht启动

拥有root权限的编辑器可以修改目标系统的所有敏感文件

举例:

①编辑/etc/sudoers(该文件包含了每个用户可以在不输入密码的情况下使用sudo命令的范围)

即执行sudo -l命令时获得的输出结果

sudo ht 使用ht编辑器,按f3打开文件

在结尾写上loneferret用户后 /bin/bash

按f2保存f10退出后,sudo -l查看当前用户权限

权限增加/bin/bash,无需密码,输入sudo bash获得root权限

总结:使用拥有root权限的ht编辑器编辑/etc/sudoers文件,该文件包含了每个用户可以在不输入密码的情况下使用sudo命令的范围,即执行sudo -l命令时获得的输出结果。可以直接修改该文件给当前的loneferret用户添加无需使用密码执行sudo /bash命令的权限。

首先使用ht编辑器打开/etc/sudoers文件

之后再当前用户(这里是loneferret)的权限设定位置的末尾添加/bin/bash

最后保存退出

执行sudo -l命令,会发现loneferret用户增加了新的可以执行root权限的文件内容,即/bin/bash

执行sudo bash,即可获得root权限

②编辑/etc/shadow文件,该文件以加密形式保存了各系统用户的登录密码

将root密码置空

但之后使用su root切换到root用户时会出现认证错误的问题

ps: 虽然将'/etc/shadow文件中root用户的密码字段清空了,但实际上是将root用户的密码设为空 。尽管密码字段为空,但su命令依然会尝试使用空密码进行认证,但默认情况下,Linux系统通常会禁止使用空密码进行认证

(重点):为了允许su命令使用空密码认证root用户,需要进行以下配置 编辑PAM (Pluggable Authentication Module) 配置文件: 打开开PAM配置文件,常位于 /etc/pam.d/su

找到auth sufficient pam_rootok.sc 将其修改为auth sufficient pam_permit.so

这将允许su命令允许认证过程并且不要求密码保存并关闭文件。

再次使用su命令切换到root用户,而无需输入密码

成功!

③编辑/etc/passwd,插入新用户

/etc/passwd(6个分号分隔7个信息)

用户名:密码(加密后的密码,如果该位置为x表示密码在/etc/shadow中):UID:GID:用户全名或本地帐号:登录后的初始目录:登录时默认使用的shell(如/bin/sh、/bin/bash、/bin/rbash)

创建用户ww,密码wavewindsor

密文获取方式:openssl passwd wavewindsor

$1$oML9u2eM$plkg6wRFBuOMhBORi8GJv0

在/etc/passwd文件中增加该行:ww:$1$oML9u2eM$plkg6wRFBuOMhBORi8GJv0:0:0:ww:/root:/bin/bash

修改完后使用su ww登录,密码wavewindsor

提权成功