靶场(四)---小白心得全流程分析
启程:
老样子先看端口,发现这个靶场只有80端口,查看服务也发现没啥太需要关注
nmap -p80 192.168.60.219 -sV -sC -O
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.2.22 ((Debian))
| http-robots.txt: 1 disallowed entry
|_/textpattern/textpattern
|_http-title: driftingblues
|_http-server-header: Apache/2.2.22 (Debian)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.2 - 3.8
Network Distance: 2 hops
直接访问发现是个无功能点的页面
查看一下源码,发现也没有啥隐藏消息
通过https访问也没啥额外的东西,那剩下的方向只剩目录扫描了
这里通过dirsearch默认目录扫描发现了三个目录
然后我们先去看robots.txt,发现一个额外的目录
直接访问是一个登录页面,根据原先靶场的经验,如果发现有用户名可以尝试爆破,所以这里额外标注一下
然后访问他上一级目录有一段文字,但是无用户名,所以暂时放弃爆破的想法
然后访问db发现只有一张图片,还是什么都没有
通过textpattern目录底下有登录界面,猜测可能还存在其他目录,对textpattern进行爆破,爆破了个cms的历史文件,通过最后的更新消息确认了cms的版本
查看这个cms版本,发现有个文件上传的漏洞,但是需要用户名和密码,可是本次的靶场只有一个端口,每个页面的隐藏信息我也确定都看了一遍,可是没有用户名提示,这里被卡了一会儿
后续突然想起来,我一直用的都是dirsearch默认目录,可能有没枚举到的目录,这里上一个大的目录脚本进行爆破
dirsearch -u 192.168.60.219 -w directory-list-lowercase-2.3-medium.txt
果然爆破出一个新的spammer目录,这里其实也是自己信息收集的问题每次都想的太理所当然了,觉得默认字典就可以爆破出一切,必要的情况可以通过两个目录扫描器进行重复扫描,以防遗漏消息
直接去访问这个spammer发现是一个zip压缩包,但是这个zip文件有加密,所以这里我们通过zip2john.py将zip文件转成hash文件,然后再通过john进行破解
zip2john.py spammer.zip > spammer.hash
这里也是看到我们成功破解出来zip加密的密码
然后就是直接unzip解压了,我们成功读取到了creds.txt文件
这里直接访问这个creds.txt文件,发现了一组票据,这也就是我们之前一直苦求不得的东西
直接登录我们之前获得登录的页面,发现了我们可以上传文件,而且根据之前我们获得信息这个cms是存在文件上传漏洞,且保存的文件在files目录下,我们先上传一个simple-backdoor.php文件试试水,发现可以执行命令
我们要在这里上传文件,至于为啥是中文的还是因为这个cms有中文配置可以换的哟
这里也是看到我们上传的php文件并执行了id的命令
那么后续为了回弹shell,我们又上传了一个php-reverse-shell.php文件,当然这里的反弹的php文件同样可以在kali上面找到,修改反弹ip和端口即可使用
点击反弹shell的php文件,我们成功监听到一个shell文件
老样子先上传一个linpeas.sh文件,枚举一下linux主机的消息,看看可以提权的消息,这里我们看到好像存在dirtycow提权漏洞,先找出这几个漏洞脚本的提权文件,上传试一下
同时我们看到我们可以用的命令不是很多,但是有gcc命令证明可以在靶机上编译c文件,而且python3命令也没有了
然后我们在攻击机上发现我们呢有这个dirtycow提权的脚本,那就直接下载就行,然后传上去,这里40838和40839都可以提权
先保存文件到攻击机当前目录下
然后上传到目标靶机的tmp目录下,编译一下,由于是执行文件还需赋个权chmod +x dirty1
gcc -pthread 40839.c -o dirty1 -lcrypt
然后我们就可以执行这个文件,然后设置密码,静等片刻dirtycow运行完毕,就会给你一个root权限的票据
由于22端口没有开放,我们需要通过su进行转移用户登录,而且又因为我们这里的shell权限不高,还需提高一下交互shell的权限,由于上面看到python3没了,所以这里我们直接使用python开启全交互shell,然后再执行su命令,这里我们也是可以看到我们的用户权限为root,成功提权
总结:
单论整体靶场的难度其实并不大,重点是看你信息收集的能力细不细致,还有就是提权永远要从简单往难试,不要硬钻死牛角尖,dirtycow在别的地方不成功,不代表在这里不行,所以一定要都试试