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. 使用Hypothesis生成测试数据

    Hypothesis是Python的一个高级测试库.它允许编写测试用例时参数化,然后生成使测试失败的简单易懂的测试数据.可以用更少的工作在代码中发现更多的bug. 安装 pip install hyp ...

  2. .Net基础篇_学习笔记_第六天_类型转换和方法(函数)简介

    类型转换:Convert.ToInt32();  int.Parse();  int.TryParse(); Convert.ToInt32(); 的本质就是在使用 int.Parse(); int. ...

  3. Termux 高级终端安装使用配置教程

    Termux 高级终端安装使用配置教程,这篇文章拖了有小半年.因为网上相关的文章相对来说还是比较少的,恰好今天又刷了机,所以就特意来总结一下,希望本文可以帮助到其他的小伙伴.发挥Android平台更大 ...

  4. Java web 修改默认web部署路径

    转载自:https://blog.csdn.net/lcczpp/article/details/79968070 在eclipse上面部署web项目后,它没有将你的项目文件放到tomcat 的目录下 ...

  5. java8中字符串常量以及GC相应处理机制

    目录 1,常量池 1.1, class文件常量池 1.2, 运行时常量池 1.3,字符串常量池 String.intern() -XX:StringTableSize 2,使用new关键字和使用字符串 ...

  6. TestNG(六) 忽略测试

    package com.course.testng.suite; import org.testng.annotations.Test; public class IgnoreTest { @Test ...

  7. 《Java7并发编程实战手册》读书笔记

    一.线程管理 1.线程的创建和运行 创建线程的2种方式: 继承Thread类,并覆盖run()方法 创建一个实现Runnable接口的类.使用带参数的Thread构造器来创建Thread对象 每个Ja ...

  8. JAVA自学笔记 - 从零开始

    文中记录的内容都是博主从自己的学习笔记中总结的. 如果遇到问题,或者有不一样的看法,欢迎提出! 1安装JDK 从Oracle官网下载JDK,我使用的版本是1.7.0.80. 操作系统是win7 64位 ...

  9. 单线程Redis性能为何如此之高?

    文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 实际项目开发中现在无法逃避的一个问题就是缓存问题,而缓存问题也是面试必问知识点之一,如果面试官好一点可能会简单 ...

  10. thinkphp将上传的临时文件移动到指定目录

    thinkphp将上传的临时文件移动到指定目录 新建common.php文件 <?phpuse think\facade\Env; /** 移动上传的临时文件 * * @img_dir stri ...