简介
难度:简单
靶机地址:
环境
kali:192.168.194.9
靶机:192.168.194.23
扫描
nmap全端口扫描查看tcp服务
三个端口服务21的ftp服务、4200的shellinabox服务,是一个web界面的shell连接工具,12359的一个文件读取服务
ftp能够匿名登录,先看看有什么文件
一个crack.py文件,下载后查看
import os
import socket
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
port = 12359
s.bind(('', port))
s.listen(50)
c, addr = s.accept()
no = "NO"
while True:
try:
c.send('File to read:'.encode())
data = c.recv(1024)
file = (str(data, 'utf-8').strip())
filename = os.path.basename(file)
check = "/srv/ftp/upload/"+filename
if os.path.isfile(check) and os.path.isfile(file):
f = open(file,"r")
lines = f.readlines()
lines = str(lines)
lines = lines.encode()
c.send(lines)
else:
c.send(no.encode())
except ConnectionResetError:
pass
这个脚本监听的端口是12359,应该就是第三个文件读取的服务。
这个文件读取的基本逻辑是判断server运行的当前目录有无输入文件名的文件,但是读取的文件是根据整个输入的路径来读取文件的。这就存在了一个逻辑判断的错误。
上传passwd文件后,nc连接文件读服务
传入/etc/passwd
的绝对路径,能够绕过检查逻辑,获取到passwd文件。在里面发现了id为1000的cirs
用户
尝试账户密码均为cirs
,成功连接,拿下user权限。
提权
sudo查看其他没用的信息就不展示了
dirb可以对web目录进行扫描,用dirb带出root用户的私钥
python在本地开启web服务,将扫描的报错信息重定向到日志文件中
shellinabox中进行扫描带入root私钥。
执行命令,cat log.txt|grep -v code|awk 'BEGIN{OF=" "}{print $7}'|cut -c2-
对log.txt日志文件进行整理,给私钥的开头结尾补齐
ssh服务只监听在本地,上传到服务器,尝试提权
拿下root用户权限!