pWnOS: 1.0
项目地址:https://download.vulnhub.com/pwnos/pWnOS_v1.0.zip
是一个打包好的镜像文件
注意:导入 vmx 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本
1 | nmap -sS -sV -sC -p- 192.168.41.202 |

XSS
name&level(两个反射)
80 端口发现两个 XSS 漏洞,对应的参数是 name 以及 level
1 | <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

脚本源码解析如下
1 | class MetasploitModule < Msf::Auxiliary |
深入解析 ..%01:
..(点点): 正常的上级目录跳转指令%01(空字节 / Null Byte): 这是 ASCII 字符0x01的 URL 编码形式。- 在早期版本的 Webmin 中,这个字符在路径清理阶段(第一步)不会被移除,因为它不是一个常规的路径分隔符
- 但在最终的文件系统调用之前,Webmin 或底层的系统库可能会将这个不可见的
%01字符剥离或忽略掉,从而只留下一个有效的路径分隔符,如/
弱口令
SSH 登录
使用工具 john 成功爆破出一个密码

SSH 连接时注意切换加密算法,对方是老版的只支持 RSA
1 | ssh -o HostKeyAlgorithms=+ssh-rsa vmware@192.168.41.202 |

提权
Webmin 反弹 Shell
接下来去看有没有别的提权方法,查看 /var 发现 webmin 是以 root 运行
同时网站采用 .cgi 通用网关接口的形式,其是支持 Perl 语言的
所以我们可以编写一个 Perl 的反弹 Shell,只需要找到一个可以写的位置并使用文件包含来调用该文件

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

