(靶机概要:这个靶机卡了两天,但是想到方法后其实很简单。主要是特殊字符过滤的情况下实现命令注入。)
靶机的下载地址是https://hackmyvm.eu/machines/machine.php?vm=Echoed。
运行后扫描,开了三个端口。
80端口里面是空的,22端口目前无法登录。用nc连接4444 端口后,弹出提示框,随便输入字符,会显示执行了bash的echo命令。(由于靶机的设置问题,如果连接4444端口中途按Ctrl+C退出后,无法直接再次连接,需要将靶机重启一下。)
很快,发现有许多字母和符号不能输出,会弹出“非法字符”的提示。
经过一番测试,发现可以输入的字符包括:小写字母abcefhinswxyz、所有大写字母、所有数字、除"."号以外的特殊字符。接下来的任务很明确了,需要在允许输入的字符范围内,通过构造特殊字符串,形成bash命令注入,并得到敏感信息(比如密码),或者得到shell。
这里卡了一段时间,然后突然发现nc、bin、bash这几个字符串都可以输入。是不是想到了!同时,由于"."被过滤了,所以ip地址需要转换为数字。同时,字符串末尾加上"#",用于将后续的命令过滤掉。运行构造好的字符串后,成功得到反弹shell。
进入靶机后,发现已经是charlie用户了,且可以读取user.txt,得到第一个flag。
由于/home/charlie目录可写,可以建立 .ssh文件,将本机的id_rsa.pub上传至靶机,并改名了authorized_keys,用户权限为600。这样就可以用ssh登录了。
sudo -l后发现,可以无密码执行/usr/bin/xdg-open这个文件。
file命令显示这是个脚本文件,但代码较长,没有必要一行行看,直接执行一下,提示需要输入文件或URL作为参数。如果随便输入一个不存在的文件,会报错。
随便建立一个空文件,然后sudo执行xdg-open这个程序,并打开这个空文件。
这时,会进入一个类似man page的页面。试着按一个!,可以输入命令。输入/bin/bash。
执行后,成功得到root。