vulnhub靶场之momentum-2

前言

靶机采用virtual box虚拟机,桥接网卡

攻击采用VMware虚拟机,桥接网卡

靶机:momentum-2 192.168.1.40

攻击:kali 192.168.1.16

主机发现

使用arp-scan -l扫描

信息收集

使用namp扫描

这里的命令对目标进行vulner中的漏洞数据库进行对比,有的话,会给出漏洞编号及链接,和危害等级

shell 复制代码
nmap -sV 192.168.1.40 -O --script=vulners --script-args mincvss=5.0

不过这里只进行简单的扫描即可

网站探测

访问网站

momentum-1差不多,都是图片,不过这里页面源代码中并没有调用js函数等,不过图片放在/img目录,至少确定是目录型网站。

尝试指纹识别

网站目录扫描

使用dirsearch、gobuster、ffuf、dirb、dirbuster都可以

看到几个目录,尝试访问查看,首先访问js,可以看到是一个文件上传的js函数,并且调用ajax.php文件,采用post

访问ajax.php文件,全是后端php语言

访问css,是网站的样式,无其他内容

访问dashboard.html页面,有文件上传页面,并且查看页面源代码后,发现与之前js中的获取file的id对应上了,并且点击提交,调用了js的函数。并且上传后的文件也给出提示,在owls

OK,到这里网站的信息基本上了解了,下面就是进行总结一下,首先在80端口网站中,有js目录,其中有一个函数,该函数与dashboard.html联合在一起,并且涉及到ajax.php文件以及POST提交方式。

文件上传--->JS函数---->ajax.php

漏洞寻找

上传php中的反弹shell脚本文件进行测试,直接上传发现不行

这里建议了解一下XMLHttpRequest,参考链接https://blog.csdn.net/abraham_ly/article/details/113526496

js 复制代码
function uploadFile() {
    var files = document.getElementById("file").files;
    if(files.length > 0 ){
       var formData = new FormData();
       formData.append("file", files[0]);
       var xhttp = new XMLHttpRequest();
       // Set POST method and ajax file path
       xhttp.open("POST", "ajax.php", true);
       // call on request changes state
       xhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
 
            var response = this.responseText;
            if(response == 1){
               alert("Upload successfully.");
            }else{
               alert("File not uploaded.");
            }
          }
       };
       // Send request with data
       xhttp.send(formData);
    }else{
       alert("Please select a file");
    }
 }

根据上面上传后的提示,以及代码来看,主要是在response==1这个条件出错

测试上传图片,还是出错

使用burp抓包分析,对请求修改也没有效果,返回都是0,无法进入上传成功,怀疑可能是网站目录没有扫全,再检测一遍,这次多加后缀名测试,结果还真出来一些东西,不能太依赖dirsearch的默认扫描,毕竟有的后缀名还是挺重要的。

使用gobustrt扫描,-x表示扩展名,-d表示对备份进行检测,也就是自己加上常见的扩展备份名,-b过滤包含状态码400-404的结果

这里对于dirsearch不太清楚了,加上备份文件的格式,也无法扫描出来

或者使用ffuf也是能够扫描出来的

漏洞利用

这里知道有备份,下载备份文件审计代码

直接测试,先直接上传txt文件看看,是否有该逻辑性.上传成功,说明正确

上传php反弹sehll的脚本。使用burp抓包进行修改,然后注意,在代码审计时,有一个注释说,在cookie的末尾添加一个大写字母,所以,这就需要构造好准备的数据,然后进行爆破

把该数据包发送到intruder模块,先在末尾加入一个A,用于知道爆破位置

构造payload然后攻击测试

得出Cookie的最后一位为R

反弹shell

此时在kali中开启监听,这里我在php脚本设置的是1234端口

在浏览器访问

点击脚本文件后,kali获取反弹shell

登录成功,查看/home目录,获取到一个密码,不知道是否可用

ssh登录

测试该内容myvulnerableapp[Asterisk]是否是ssh的密码,测试发现并不是,寻找其他可用

找了一圈,没有可用,就网上查了一下,说[Asterisk]*,我真服了,这在英语词典中确实有*的含义

所以上面文本应该是myvulnerableapp*,再次登录测试,登录成功

因为之前不知道密码的时候,我把其他方法都看了一下,这里直接find寻找具有SUID的文件

提权

然后使用sudo -l列出

首先查看该py文件,发现无写权限,查看导入的包有哪些

导入三个包,查看这三个包的权限

看了都无写权限,我就再看看代码。

首先用户输入seed,然后生成cookie,然后就是执行写入内容到log.txt,传参是输入的seed,然后子进程打开这个cmd。运行py脚本,然后输入可执行命令

这里通过nc执行/bin/bash然后给kali,但是这里不行,没有提权成功

查看发现,其他人也有执行的权限,所以不能直接变为root

但是吧,突然想到,我是用sudo获取该文件的,怎么就没有使用sudo执行呢。

啧啧啧啧啧啧啧啧啧啧啧

重新使用sudo执行

提权成功

清除痕迹

总结

  1. 代码审计,知道满足哪些条件才能执行
  2. 对于网站目录,可以多测几遍,不要错过关键信息
  3. 多了解点英语单词吧
  4. python代码要有一定基础
  5. nc命令的一些参数了解
相关推荐
hbwhmama8 分钟前
python高级变量XIII
python
慕y27417 分钟前
Java学习第十六部分——JUnit框架
java·开发语言·学习
liulilittle34 分钟前
SNIProxy 轻量级匿名CDN代理架构与实现
开发语言·网络·c++·网关·架构·cdn·通信
费弗里39 分钟前
Python全栈应用开发利器Dash 3.x新版本介绍(3)
python·dash
peace..1 小时前
温湿度变送器与电脑进行485通讯连接并显示在触摸屏中(mcgs)
经验分享·学习·其他
dme.1 小时前
Javascript之DOM操作
开发语言·javascript·爬虫·python·ecmascript
加油吧zkf1 小时前
AI大模型如何重塑软件开发流程?——结合目标检测的深度实践与代码示例
开发语言·图像处理·人工智能·python·yolo
t_hj1 小时前
python规划
python
tan77º1 小时前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
czhc11400756631 小时前
Linux 76 rsync
linux·运维·python