靶机渗透测试实战(五)——Node渗透实战

目录

一. 实验环境

二. 实验流程

三. 实验步骤

(1)信息收集——主机发现

1. 查看Kali的IP信息;(IP:192.168.37.131)

2. 扫描主机(netdiscover)

(2)信息收集——端口扫描

1. 扫描端口(masscan)

2. 详细扫描端口信息(nmap)

(3)渗透测试

        3000端口(http服务)

   1. 访问目标靶机的3000端口

   2. 网站目录扫描(dirb)

   3. 查看前端页面代码

   4. 解密数据;

       22端口(ssh服务)

  1. 尝试ssh远程连接

  2. 提权

  3. 留后门清痕迹;

四. 实验总结


一. 实验环境

  • 靶机:Node,IP地址暂时未知;
  • 测试机:Kali,IP地址:192.168.37.131;
  • 测试机:物理机win7;

二. 实验流程

  • 信息收集——主机发现
  • 信息收集——端口扫描
  • 渗透测试

三. 实验步骤

(1)信息收集——主机发现

1. 查看Kali的IP信息;(IP:192.168.37.131)

靶机渗透测试实战(五)——Node渗透实战_第1张图片

2. 扫描主机(netdiscover)

netdiscover -i eth0 -r 192.168.37.0/24

Netdiscover: -i 指定网卡 -r 指定网段

靶机渗透测试实战(五)——Node渗透实战_第2张图片

(2)信息收集——端口扫描

1. 扫描端口(masscan)

masscan --rate=10000 --ports 0-65535 192.168.37.144

靶机渗透测试实战(五)——Node渗透实战_第3张图片

扫描发现目标只开放了3000,22端口;

2. 详细扫描端口信息(nmap)

nmap 192.168.37.144 -sV -T4 -O -p 22,3000

靶机渗透测试实战(五)——Node渗透实战_第4张图片

  • 22端口对应的服务为ssh;
  • 3000端口(node.js的默认端口)对应的服务为http;

(3)渗透测试

3000端口(http服务)

1. 访问目标靶机的3000端口

1.1> 查看http服务首页信息;

http://192.168.37.144:3000/

靶机渗透测试实战(五)——Node渗透实战_第5张图片

1.2> 查看可以点击的页面,寻找有价值的信息;

http://192.168.37.144:3000/profiles/tom

靶机渗透测试实战(五)——Node渗透实战_第6张图片

http://192.168.37.144:3000/profiles/mark

靶机渗透测试实战(五)——Node渗透实战_第7张图片

http://192.168.37.144:3000/profiles/rastating

靶机渗透测试实战(五)——Node渗透实战_第8张图片

http://192.168.37.144:3000/login

靶机渗透测试实战(五)——Node渗透实战_第9张图片

  • Login页面是一个登录页面,尝试用弱口令不能成功;
  • 并且给出提示:登录失败!指定了不正确的凭据(没有明确说明用户名错误还是密码错误),可以有效防止用户名枚举;
  • 没有找到可用的网站目录,就可以尝试对网站进行目录扫描;

2. 网站目录扫描(dirb)

dirb http://192.168.37.144:3000

靶机渗透测试实战(五)——Node渗透实战_第10张图片

尝试用大字典进行目录扫描;

dpkg -L dirb;

dirb http://192.168.37.144:3000 /usr/share/dirb/wordlists/big.txt

靶机渗透测试实战(五)——Node渗透实战_第11张图片

靶机渗透测试实战(五)——Node渗透实战_第12张图片

  • 没有扫描到网站的其他目录;
  • 一般情况下,如果没有发现什么可利用的目录,就可以尝试查看js页面,一般会有突破口;

3. 查看前端页面代码

3.1> 查看前端页面代码,发现了很多js页面,尝试进行访问;发现了一些可疑的路径,查看该路径;

靶机渗透测试实战(五)——Node渗透实战_第13张图片

3.2> admin.js;

靶机渗透测试实战(五)——Node渗透实战_第14张图片

http://192.168.37.144:3000/api/admin/backup

靶机渗透测试实战(五)——Node渗透实战_第15张图片

  • 猜想:这个页面内容原本就是这样;
  • 或者是因为没有登录才会这样显示;

http://192.168.37.144:3000/api/session

靶机渗透测试实战(五)——Node渗透实战_第16张图片

猜想如上;

3.3> Home.js

靶机渗透测试实战(五)——Node渗透实战_第17张图片

http://192.168.37.144:3000/api/users/latest

靶机渗透测试实战(五)——Node渗透实战_第18张图片

  • Users在目录中是个敏感词,账户信息可能会存在该目录下;
  • 神奇的发现了三个用户名和密码,只不过密码是经过加密的,一般密码是经过MD5进行加密的;
  • 参数is_admin:false,根据字面意思猜想可能这几个账户不是管理员账户;
  • 一般情况下,针对于多级目录,可以尝试逐级进行访问;

3.4> 尝试用MD5进行解密;

靶机渗透测试实战(五)——Node渗透实战_第19张图片

靶机渗透测试实战(五)——Node渗透实战_第20张图片

靶机渗透测试实战(五)——Node渗透实战_第21张图片

  • 成功破解出两个账户的密码,分别为:

          用户名:tom     密码:spongebob

          用户名:mark    密码:snowflake

3.5> 尝试用得到的账户和密码进行登录;

靶机渗透测试实战(五)——Node渗透实战_第22张图片

靶机渗透测试实战(五)——Node渗透实战_第23张图片

  • 根据页面显示:目前只有管理员用户可以访问控制面板,但请尽快检查以测试标准用户功能!
  • 如上两个账户都是普通用户;

3.6> 尝试访问http://192.168.37.144:3000/api/users;

靶机渗透测试实战(五)——Node渗透实战_第24张图片

发现了一个疑似管理员的账户;is_admin:true

3.7> 解密该账户密码进行查看;

靶机渗透测试实战(五)——Node渗透实战_第25张图片

成功破解出该账户的密码:

用户名:myP14ceAdm1nAcc0uNT    密码:manchester

3.8> 尝试进行登录;

靶机渗透测试实战(五)——Node渗透实战_第26张图片

3.9> 进行页面内容下载;

靶机渗透测试实战(五)——Node渗透实战_第27张图片

靶机渗透测试实战(五)——Node渗透实战_第28张图片

打开下载的内容,看到一堆密文,通过最后的“=”可以猜测是经过base64加密的;

4. 解密数据;

4.1> 将myplace.backup文件拷贝到Kali上;并进行解密;

靶机渗透测试实战(五)——Node渗透实战_第29张图片

  • 可以看到已经解密出了一些目录,但是很多信息还是不能显示;
  • 此时,我们可以尝试将base64解密的内容以压缩包zip的形式打开;

4.2> 尝试以压缩包形式打开;

靶机渗透测试实战(五)——Node渗透实战_第30张图片

  • 尝试以base64解码后压缩包打开 提示需要密码;
  • 用Kali自带的工具fcrackzip进行密码的破解;

4.3> 使用工具fcrackzip进行密码的破解

fcrackzip -v -b -u -c a -p magicaaaa myplace

靶机渗透测试实战(五)——Node渗透实战_第31张图片

fcrackzip命令:-v(详细信息)、-b(爆破)、-u(使用解压缩来清除密码错误)、-c(使用字符串)、-p(密码)

成功获取unzip myplace的密码:magicword

4.4> 尝试进行登录;

靶机渗透测试实战(五)——Node渗透实战_第32张图片

可以发现很多的目录;

4.5> 查看目录

对于node.js而言我们首先要基本熟悉他的构架,其中 app.js:项目入口及程序启动文件。先查看app.js文件;

靶机渗透测试实战(五)——Node渗透实战_第33张图片

  • 我们发现了一个Node.js 连接 MongoDB 的操作;用户名为mark,密码为5AYRft73VtFpc84k;
  • 得到的用户名和密码很可能适用于ssh,可以进行尝试;

22端口(ssh服务)

1. 尝试ssh远程连接

ssh [email protected]

靶机渗透测试实战(五)——Node渗透实战_第34张图片

靶机渗透测试实战(五)——Node渗透实战_第35张图片

2. 提权

2.1> 查看操作系统的版本;

2.2> 通过searchsploit命令查找漏洞

searchsploit Ubuntu 16.04

靶机渗透测试实战(五)——Node渗透实战_第36张图片

选择倒数第三个对目标系统进行提权;

2.3> 将该漏洞对应的44298.c文件拷贝到目标系统;

scp /usr/share/exploitdb/exploits/linux/local/44298.c [email protected]:/tmp/

靶机渗透测试实战(五)——Node渗透实战_第37张图片

由于 /tmp文件的限制小,所以将文件上传到靶机的tmp文件下。

2.4> 利用该漏洞进行本地提权

gcc -pthread 44298.c -o exp -lcrypt

靶机渗透测试实战(五)——Node渗透实战_第38张图片

已经提升成为root权限;

3. 留后门清痕迹;

四. 实验总结

  1. 前端页面中的js页面很重要,尤其是类似目录的信息;
  2. 密文最后如果是“=”或者“==”,可能该密文是经过base64加密的;
  3. 如果经过base64解密后不能查看信息,可以尝试将解密后的信息输出到文件,并以解压zip压缩包的形式打开;
  4. 了解搭建网站的框架,目录结构;对于node.js而言我们首先要基本熟悉他的构架,其中 app.js:项目入口及程序启动文件。一般先查看app.js文件;

你可能感兴趣的:(kali,Linux,渗透测试,靶机渗透测试实战)