vulnhub Potato: 1

渗透思路:

nmap扫描端口 ---- ftp匿名登录下载网站代码 ---- gobuster扫描网站目录 ---- 利用php type juggling漏洞登录网站 ---- 利用LFI获取/etc/passwd ---- john爆破webadmin用户的密码 ---- sudo配合目录遍历提权

环境信息:

靶机:192.168.101.98

攻击机:192.168.101.34

具体步骤:

1、nmap扫描端口

sudo nmap -sV -sC -p- 192.168.101.98

vulnhub Potato: 1_第1张图片

2、ftp匿名登录下载网站代码

由于上一步中nmap扫描到ftp端口2112可以匿名登录,所以用anonymous登录靶机2112端口,并下载文件index.php.bak

ftp 192.168.101.98 2112
ftp> get index.php.bak

vulnhub Potato: 1_第2张图片

3、gobuster扫描网站目录

gobuster dir -u http://192.168.101.98 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

扫描到/admin和/potato

vulnhub Potato: 1_第3张图片

依次访问发现http://192.168.101.98/admin/是一个登录页面

vulnhub Potato: 1_第4张图片

提交登录信息的表单和index.php.bak中的表单一样一样的

vulnhub Potato: 1_第5张图片

vulnhub Potato: 1_第6张图片

4、利用php type juggling漏洞登录网站

查看index.php.bak文件的php代码部分

我一开始以为是一个密码硬编码问题,但是用用户名admin,密码potato并不能成功登录

vulnhub Potato: 1_第7张图片

后来发现判断用户名是否为admin,密码是否为$pass时用的是==(仅判断值是否相等,不判断类型是否相等),而不是===(类型相等且值相等)

if (strcmp($_POST['username'], "admin") == 0  && strcmp($_POST['password'], $pass) == 0)

在网上找到一种利用方法,最终利用的是PHP中NULL == 0的特性

https://owasp.org/www-pdf-archive/PHPMagicTricks-TypeJuggling.pdf

vulnhub Potato: 1_第8张图片

简单来说就是原本password参数应该提交一个字符串,但这里提交一个空数组,这样strcmp()的结果就是NULL,而根据下表,php中松散比较(==)时NULL等于0,因此满足条件,可以成功登录

vulnhub Potato: 1_第9张图片

具体操作如下:

1、将burp的intercept打开

vulnhub Potato: 1_第10张图片

2、在http://192.168.101.98/admin/登录

vulnhub Potato: 1_第11张图片

3、抓到上图报文之后,将请求体改为

username=admin&password[]=

vulnhub Potato: 1_第12张图片

4、关掉burp的intercept,即可登录成功

vulnhub Potato: 1_第13张图片

5、利用LFI获取/etc/passwd

点击上图中的dashboard,来到http://192.168.101.98/admin/dashboard.php

vulnhub Potato: 1_第14张图片

点Logs来到http://192.168.101.98/admin/dashboard.php?page=log,选择一个log文件,再点击Get the log按钮

vulnhub Potato: 1_第15张图片

burp中抓到的POST请求体中有个file参数,其值为log文件名

vulnhub Potato: 1_第16张图片

尝试LFI,将log文件名替换为../../../../../../etc/passwd,得到/etc/passwd文件的内容

vulnhub Potato: 1_第17张图片

6、john爆破webadmin用户的密码

上图中发现/etc/passwd中包含webadmin用户md5加密的密码,可以尝试用john破解。

先将上图中靶机/etc/passwd的内容保存为文件passwd,然后用john爆破

john passwd

得到webadmin的密码dragon

vulnhub Potato: 1_第18张图片

以用户名webadmin,密码dragon进行ssh登录

ssh [email protected]

获得第一个flag

vulnhub Potato: 1_第19张图片

7、sudo配合目录遍历提权

sudo -l发现webadmin可以以任何用户的身份执行/bin/nice /notes/*

vulnhub Potato: 1_第20张图片

查看/bin/nice和 /notes/,以及/notes/下文件的权限,都无法修改或新建文件

vulnhub Potato: 1_第21张图片

尝试能否在执行/bin/nice时跳出/notes/目录

sudo /bin/nice /notes/../bin/bash

成功提权

vulnhub Potato: 1_第22张图片

你可能感兴趣的:(vulnhub,服务器目录遍历,type,juggling,代码审计,LFI,john)