0x01 NBNS和WDAP

NBNS:

在 Windows 系统中的另外一种名称就是 NetBIOS 名称,准确的说 NetBIOS 名称并非是一种名字系统,而是 Windows 操作系统网络的一个编程接口,允许主机之间使用 NetBIOS 名称进行通信,通信过程是建立在 NetBIOS 协议之上的。在安装完 Windows 系统后系统会默认使用计算机的名字做为当前主机的 NetBIOS 名称。它的最大长度为 16 个字符,其中最后一位是不可配置的,用于指定 NetBIOS 的服务类型。如果计算机名称不足 15 位则使用空格补全到 15 位,反之,如果计算机名称超过 15 位 则会截取前 15 位。常见的 NetBIOS 后缀有 0x20(文件和打印服务)、0x00(工作站服务)、0x03(报信者服务)等。

使用nbtstat -n命令查看本机的 NetBIOS 名称。

使用nbtstat -A ipaddress命令查看指定 IP 主机的 NetBIOS 名称。

Windows做DNS解析时有如下步骤:

1.local hosts file - C:\Windows\System32\drivers\etc\hosts

2.DNS

3.NBNS

那么当访问者输入一个不存在的域名,而LOCAL HOST FILE、DNS服务器均无法给出解析时,我们可爱又人性化的Windows就会发送NBNS请求进行查询。

如图所示,我们可以看到NBNS请求的地址是172.16.0.255,是一个广播包。

即任何人可以回复并重定向流量。

WPAD:

WPAD(Web Proxy Auto-Discovery Protocol) 是 Web 代理自动发现协议的简称,该协议的功能是可以使局域网中用户的浏览器可以自动发现内网中的代理服务器,并使用已发现的代理服务器连接互联网或者企业内网。WPAD 支持所有主流的浏览器,从 IE 5.0 开始就已经支持了代理服务器自动发现/切换的功能,不过苹果公司考虑到 WPAD 的安全风险,在包括 OSX 10.10 及之后版本的操作系统中的 Safari 浏览器将不再支持 PAC 文件的解析。

WPAD 工作原理

当系统开启了代理自动发现功能后,用户使用浏览器上网时,浏览器就会在当前局域网中自动查找代理服务器,如果找到了代理服务器,则会从代理服务器中下载一个名为 PAC(Proxy Auto-Config) 的配置文件。该文件中定义了用户在访问一个 URL 时所应该使用的代理服务器。浏览器会下载并解析该文件,并将相应的代理服务器设置到用户的浏览器中。

讲到现在大家一定思路清晰了:当下我们的目的是回复NBNS响应,从而转移流量进行欺骗。

0x02 攻击准备

凭借欺骗NBNS响应的能力,我们可以针对我们的NBNS欺骗攻击的127.0.0.1。我们淹没在目标机器(我们自己的机器)与NBNS响应数据包的主机”WPAD”,或”WPAD.DOMAIN.TLD”间,我们设定WPAD主机的IP地址为127.0.0.1。默认配置如下

同时,我们在127.0.0.1上运行一个HTTP服务器本地。当它接收到一个请求”HTTP://wpad/wpad.dat“,它类似如下回应:

这将导致目标上的所有HTTP流量将通过我们的服务器上运行127.0.0.1重定向。 
有趣的是,当即使是低权限的用户进行这种攻击也会影响到所有用户。这包括管理员和系统帐户。

0x03 HTTP – > SMB NTLM中继

与所有的HTTP流量,现在流经我们控制的服务器上,我们可以用来要求NTLM身份验证! 
在Potato的exploit中,所有的请求都以302重定向到的”http://localhost/GETHASHESxxxxx“,其中xxxxx是一些独特的标识符。请求”http://localhost/GETHASHESxxxxx“会401响应要求NTLM身份验证。 
在NTLM凭据传递到本地的SMB监听器,会创建一个新的系统服务,运行你定义的命令,此命令将以”NT AUTHORITY \ SYSTEM”权限运行。

0x04 使用漏洞

1.Windows 7

https://www.youtube.com/watch?v=Nd6f5P3LSNM

Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true

这将执行NBNS欺骗攻击,欺骗”WPAD”解析到127.0.0.1,然后检查Windows Defender更新。

2.Windows Server 2008

https://www.youtube.com/watch?v=z_IGPWgL5SY

Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true -disable_defender true --spoof_host WPAD.EMC.LOCAL

比较好使

3.Windows 8/10, Server 201

https://www.youtube.com/watch?v=Kan58VeYpb8

Potato.exe -ip <local ip> -cmd <cmd to run> -disable_exhaust true -disable_defender true

当然msf中也内置了nbns攻击的模块

Nbns应答模块:

设置相关参数,运行 这里的ip为你响应恶意nbns请求的ip,这里为我的kali的ip。

SMB中继模块:

HTTP模块:

此时目标访问一个不存在域名或者一个不存在的smb通信主机名时,会向NBNS请求解析名称

我们就可以捕获到hash凭据, 此演示中密码为空。

相关拓展地址

https://github.com/foxglovesec/Potato

https://github.com/foxglovesec/RottenPotato

https://github.com/breenmachine/RottenPotatoNG

Potato土豆win综合提权的更多相关文章

  1. Potato(邪恶土豆)–windows全版本猥琐提权

    工作原理: Potato利用已知的Windows中的问题,以获得本地权限提升,即NTLM中继(特别是基于HTTP > SMB中继)和NBNS欺骗.使用下面介绍的技术,它有可能为一个非特权用户获得 ...

  2. Potato家族本地提权分析

    原文来自SecIN社区-作者:Zeva 0x00 前言 在实际渗透中,我们用到最多的就是Potato家族的提权.本文着重研究Potato家族的提权原理以及本地提权细节 0x01 原理讲解 1.利用Po ...

  3. win环境下使用sqlmap写shell + MYSQL提权(默认就是system权限)

    今天在来一个mysql提权 (也可以说是默认system权限提的) 在被黑站点找到一个站   先教拿shell是有注入漏洞的 有可能是root权限的注入点 可以确定是有注入漏洞的 也得到了 物理路径 ...

  4. Win提权思路,方法,工具(小总结)[转]

    Win提权思路,方法,工具(小总结)[转] 看到这个文章,感觉整理的不错,就收藏下了. 介绍 windows提权总是被归结为适当的枚举.但要完成适当的枚举,你需要知道要检查和查找的内容.这通常需要伴随 ...

  5. 记一次WindowsServer2012提权 - 烂土豆

    此次主题:烂土豆 shell咋拿的 我也忘了 好像是添加友情链接那里还是啥 不重要了 直接获取shell后 先用systeminfo > 1.txt了一下 然后放到了 windows-explo ...

  6. WIN DLL劫持提权

    WIN DLL劫持提权 原理: Windows程序启动的时候需要DLL.如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权.通常,Windows应用程序有其预定义好的搜索DL ...

  7. win内核漏洞提权

    WIN系统溢出漏洞提权 漏洞筛选 在整个提权项目中,前提是拿到webshell. 关于系统的溢出漏洞,我推荐两个项目: https://github.com/chroblert/WindowsVuln ...

  8. WIN提权总结【本地存档-转载】

    [ web提权 ] 1.能不能执行cmd就看这个命令:net user,net不行就用net1,再不行就上传一个net到可写可读目录,执行/c c:\windows\temp\cookies\net1 ...

  9. Meterpreter提权详解

      0x01 Meterpreter自动提权 1.生成后门程序 我们在kali的命令行下直接执行以下命令获得一个针对windows的反弹型木马: msfvenom -p windows/meterpr ...

随机推荐

  1. 解决android splash 启动白屏问题

    有时我们会发现 ,在splash 页面启动之前会有那么零点几秒的白屏, 真的很让人抓狂 解决办法其实也很简单 . 1.在style.xml中定义一个样式, 这里引入 splash页面的 图片, 注意不 ...

  2. 《剑指offer》:[62]序列化二叉树

    题目:请实现两个函数,分别来序列化和反序列化二叉树. 方案分析:我们知道通过二叉树的中序和任何一个前或者后续遍历都可以反序列化一棵二叉树,但是这样做有一个缺点就是,序列化的数据不能有重复的数据,否则会 ...

  3. 一次误用CSRedisCore引发的redis故障排除经历

    前导 上次Redis MQ分布式改造完成之后, 编排的容器稳定运行了一个多月,昨天突然收到ETL端同事通知,没有采集到解析日志了. 赶紧进服务器看了一下,用于数据接收的receiver容器挂掉了, 尝 ...

  4. Day 24 定时任务

    1.什么是crond crond 就是计划任务,类似于我们平时生活中的闹钟,定点执行. 2.计划任务时间管理 1.Crontab配置文件记录了时间周期的含义 vim /etc/crontab * 表示 ...

  5. 记录工作中linux相关操作

    在项目部署之后,查看日志能查看部署结果是否正确部署. 最开始查看日志我会使用cat service.log tail -f service.log vim service.log 打开日志之后 /+查 ...

  6. 关于WebApi的跨域问题

    前端调用我后端接口时出现200,跨域问题 解决方案: 在webconfig中加入以下配置就OK了 <configuration> <system.webServer> < ...

  7. Kubernetes学习之Kubernetes架构

    架构 Kubernetes历史

  8. HashMap浅析

    一.概述 HashMap,基于哈希结构的Map接口的一个实现,无序,允许null键值对,线程不安全的.可以使用集合工具类Collections中的synchronizedMap方法,去创建一个线程安全 ...

  9. 品Spring:详细解说bean后处理器

    一个小小的里程碑 首先感谢能看到本文的朋友,感谢你的一路陪伴. 如果每篇都认真看的话,会发现本系列以bean定义作为切入点,先是详细解说了什么是bean定义,接着又强调了bean定义为什么如此重要. ...

  10. electron教程(三): 使用ffi-napi引入C++的dll

    我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(二): http服务器, ws服务器, 进程管理 electron教程(三): 使 ...