靶场实战(7):OSCP备考之VulnHub Potato 1

靶机官网:Potato: 1[1]

实战思路:

  1. 主机发现

  2. 端口发现(服务、组件、版本)

  3. 漏洞发现(获取权限)

    1. 2112端口/FTP服务

      1. 组件漏洞

      2. 口令漏洞

    2. 80端口/HTTP服务

      1. 组件漏洞

      2. URL漏洞1(目录、文件)

      3. URL漏洞2(目录、文件)

    3. 22端口/SSH服务

      1. 组件漏洞

      2. 口令漏洞

  4. 提升权限

      1. 01、suid

      2. 02、cron

      3. 03、sudo

一、主机发现

本次攻击指定IP,不涉及主机发现过程。

二、端口发现(服务、组件、版本)

使用命令sudo -u root nmap 172.16.33.43 -n -Pn -p- --reason -sV -sC -O,获得主机开放的端口、提供的服务、使用的组件、组件的版本。

靶场实战(7):OSCP备考之VulnHub Potato 1_第1张图片

开放的端口

提供的服务

使用的组件

组件的版本

22/tcp

ssh

OpenSSH

8.2p1

80/tcp

http

Apache httpd

2.4.41

2112/tcp

ftp

ProFTPD

?

-

os

Ubuntu Linux

三、漏洞发现(获取权限)

2112端口/FTP服务

组件漏洞

因为nmap探测出FTP服务可以匿名登录,所以优先查看。使用命令searchsploit ProFTPD,发现ProFTPD组件有不少Nday漏洞。但因为没有具体版本,每个EXP试一遍的成本较高,所以暂时先不盲打EXP。

靶场实战(7):OSCP备考之VulnHub Potato 1_第2张图片

口令漏洞

使用命令ftp 172.16.33.43连接FTP服务,使用匿名账号anonymous空口令登录,使用命令ls -la查看文件情况,发现两个文件。使用命令get index.php.bakget welcome.msg下载文件后,使用命令quit退出FTP服务。

靶场实战(7):OSCP备考之VulnHub Potato 1_第3张图片

welcome.msg文件没啥价值,使用命令vim index.php.bak查看备份文件,获得账号admin和密码potato,以及两个网站URL:登录页/index.php、登录成功后的跳转页/dashboard.php

靶场实战(7):OSCP备考之VulnHub Potato 1_第4张图片

访问两个网站URL,/index.php不是预想中的登录页面,说是还在开发中。dashboard.php更是直接就404了,而不是提示未授权访问之类。

靶场实战(7):OSCP备考之VulnHub Potato 1_第5张图片

靶场实战(7):OSCP备考之VulnHub Potato 1_第6张图片

基于index.php.bak代码构造登录请求,也无法登录,看来网站没用这套代码。

靶场实战(7):OSCP备考之VulnHub Potato 1_第7张图片

80端口/HTTP服务

组件漏洞

01、中间件组件:使用命令searchsploit Apache httpd 2.4.,未发现Apache httpd 2.4.41组件的Nday漏洞。

e89f66a0e364c3a0c8b3e009a4e0bbd1.png

02、应用组件:使用Wappalyzer、FindSomething等插件自动识别网站组件,使用BurpSuite等工具手动识别网站组件,无特别的收获。

靶场实战(7):OSCP备考之VulnHub Potato 1_第8张图片

URL漏洞1(目录、文件)

01、直接访问:使用浏览器打开http://172.16.33.43/,发现只有一张图片,还说网站正在开发中。

靶场实战(7):OSCP备考之VulnHub Potato 1_第9张图片

把图片下载下来,使用命令steghide --info potato.jpg发现图片使用了隐写技术,但需要密码才能提取隐写的内容,使用前面拿到的密码potato都无法提取。

ed22f8af460af4cd2411acbc4bd77138.png

使用命令stegcracker potato.jpg也无法爆破出隐写术的密码。

靶场实战(7):OSCP备考之VulnHub Potato 1_第10张图片

02、目录扫描:使用命令dirb http://172.16.33.43/对网站进行目录和文件扫描,发现/admin/目录、/admin/logs/目录、/admin/index.php文件。

靶场实战(7):OSCP备考之VulnHub Potato 1_第11张图片

访问发现/admin/目录其实就是/admin/index.php文件,而且是之前源代码拿到的登录页面,但是使用前面拿到的账号admin和密码potato无法登录。

靶场实战(7):OSCP备考之VulnHub Potato 1_第12张图片

访问/admin/logs/目录,发现有3个日志文件,是admin账号的密码修改日志,这是暗示我们之前拿到的密码没用,需要爆破一下?

靶场实战(7):OSCP备考之VulnHub Potato 1_第13张图片

靶场实战(7):OSCP备考之VulnHub Potato 1_第14张图片

但是使用Burp Suite爆破密码,也以失败告终。

靶场实战(7):OSCP备考之VulnHub Potato 1_第15张图片

查看大佬的Potato 1 Vulnhub Walkthrough[2],发现可以利用PHP的类型转换机制,绕过身份验证,登录任意账号。查看PHP类型转换机制的漏洞风险PHP Magic Tricks: Type Juggling[3],发现第33-36页的实战案例,和index.php.bak的登录代码一模一样,疑似靶机作者抄的这个案例。

靶场实战(7):OSCP备考之VulnHub Potato 1_第16张图片

靶场实战(7):OSCP备考之VulnHub Potato 1_第17张图片

index.php.bak中身份验证的主要代码是if (strcmp($_POST['username'], "admin") == 0 && strcmp($_POST['password'], $pass) == 0),前半段验证账号,后半段验证密码。strcmp函数[4] 是比较两个字符串,相同返回0,前面大就返回正数,后面大就返回负数。最关键的代码是strcmp结果与0的比较, 这里用的==会在比较前进行类型转换[5],使得==两边的数据类型相同以便比较,从而导致了NULL==0false==0等意料之外的情况出现,即:业务逻辑是账号和密码都是0==0才能登录,绕过逻辑是账号和密码都是NULL==0也能登录。

因此只要构造出strcmp($_POST['password'], $pass)的结果是NULL就能绕过身份验证,PHP Magic Tricks: Type Juggling[6] 第33-36页的实战案例是让($_POST['password']变成数组,即strcmp(数组,字符串)的结果是NULL,具体做法是:将登录请求中的password参数改成password[],然后单击右键选择在浏览器中打开响应结果。

靶场实战(7):OSCP备考之VulnHub Potato 1_第18张图片

你可能感兴趣的:(安全,web安全,网络)