靶机地址:https://www.vulnhub.com/entry/lord-of-the-root-101,129/
靶机难度:中等(CTF)
靶机描述:这是KoocSec为黑客练习准备的另一个Boot2Root挑战。他通过OSCP考试的启发准备了这一过程。它基于伟大的小说改制电影《指环王》的概念。
目标:得到root权限&找到flag.txt
作者:嗯嗯呐
连接22端口获得提示
knock ftiend to enter(敲门进入)
Easy as 1,2,3
应该是在提示port_knocking(端口试探)的概要。
端口试探的主要目的是防止攻击者通过对端口扫描的方式对主机进行攻击。
端口试探是一种通过尝试连接,从外部打开原先关闭端口的方法。一旦收到正确顺序的尝试连接,防火墙就会打开一些特定的端口允许尝试连接的主机访问。
根据上面提示,我们尝试连接顺序连接1,2,3端口
使用Knock命令 进行尝试连接端口
-i,–interface
指定要监听的接口。默认值为eth0。
-d,–daemon
成为守护程序。这通常是正常的类似服务器的操作所需要的。
-c,-config <文件>
指定配置文件的备用位置。默认值为/etc/knockd.conf。
-D,-调试
Ouput调试消息。
-l --lookup
查找日志条目的DNS名称。这可能会带来安全风险!请参阅“安全说明”部分。
-v,–verbose
输出详细状态消息。
-V,–version
显示版本。
-h,–help
语法帮助。
knock -v 192.168.16.137 1 2 3
就一张图,没有什么有用的信息,源代码也没有
根据图中提示,访问MORDOR目录,存在一张图
发现一个路径
/978345210/index.php
访问为一个登陆界面
通过常用账号密码(admin等)或万能密码("or “a”="a等)尝试了一下
都报Username or Password is invalid错误
看来无法通过报错返回进行注入了
通过sqlmap测试登陆框是否存在sql注入
sqlmap -o -u ‘http://192.168.16.137:1337/978345210/index.php’ --forms
-o 默认开始所有优化项
–forms 自动提交表单
–dbs 查询全部数据库
– tables 查询数据库下的表
–columns 查询表中的字段
–dump 查询内容
通过字段表单提交方式,测试是否存在sql注入
```bash
sqlmap -o -u 'http://192.168.16.137:1337/978345210/index.php' --forms
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201117153514305.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZW55dV8xMTI2,size_16,color_FFFFFF,t_70#pic_center)
扫描结果:password 参数存在基于时间的盲注
查询数据库全部的库
```bash
sqlmap -o -u 'http://192.168.16.137:1337/978345210/index.php' --forms --dbs
扫描结果:存在4个数据库
查询Webapp库的全部表
sqlmap -o -u 'http://192.168.16.137:1337/978345210/index.php' --forms -D Webapp --tables
查询结果:存在Users表
查询Users表中存在的字段
sqlmap -o -u 'http://192.168.16.137:1337/978345210/index.php' --forms -D Webapp -T Users --columns
查询结果:存在三个字段
查询表中全部数据
sqlmap -o -u 'http://192.168.16.137:1337/978345210/index.php' --forms -D Webapp -T Users --dump
查询结果:5个账号密码
frodo | iwilltakethering
smeagol | MyPreciousR00t
aragorn | AndMySword
legolas | AndMyBow
gimli | AndMyAxe
使用hydra 爆破一下ssh用户密码
获得用户密码
smeagol/MyPreciousR00t
1、内核漏洞提权
版本为Linux 3.19.0 Ubuntu14.04.1,找到一个利用overlayfs组件提权的漏洞
CVE-2015-1328
使用searchsploit查询一下,msf中是否有可利用的payload,首先第二行payload利用失败,我使用的是我标记出的payload成功
因为是c语言文件,需要编译为可执行文件,并赋执行权限
cc -o exp3 39166.c
执行编译好的文件,获得root用户,查看root目录下Flag
2、Mysql UDF提权
在上面使用sqlmap利用盲注,查询数据库表时,发现使用的是mysql数据库,
ps -ef | grep mysql
命令查询,发现mysql是root用户启动的程序
在/var/www/978345210目录下login.php文件中发现mysql的dba账号密码
看看可以不以使用UDF提权,因为mysql是root用户运行的,如果我们提权成功,将获得root权限
show global variables like 'secure%';
当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出文件,此时无法提权
当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出文件只能发生在 /tmp/ 目录下,此时也无法提权
当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出文件做限制,此时可提权
查看主机版本及数据库架构,因数据库为i6886,要使用32位udf文件
可以在msf的/usr/share/metasploit-framework/data/exploits/mysql下,找到udf文件
将文件复制出来,因为是32位架构,所以使用lib_mysqludf_sys_32.so
连接数据库,进入一个库
在/usr/lib/mysql/plugin/目录下,新建一个udf32.so文件,将表中数据存入
将udf32.so文件导入数据库,定义一个函数名称sys_eval
提权成功,给find命令赋予普通用户使用可以暂时获取root用户使用权限
通过find命令的 exec参数,获取root的shell
find 1.txt -exec '/bin/sh' \;
-exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command {} ;,注意{ }和\之间的空格 。
{} : find找到的内容 。
; 是bash的特殊意义,就用反斜杠转义。
完成!!!
此次靶机主要考察端口探测、盲注、提权等技术,过程不复杂,思路也比较明确。此靶机存在很多渗透方法,上面只是一种,仅供参考。本文章渗透思路如下图: