解题过程:
- nmap + nikto 扫描目标机,开放22,80,3000端口。并且找到80下的support/路径。
- 打开http://[ip]/support,发现一个叫HelpDeskZ的应用,源码:https://github.com/evolutionscript/HelpDeskZ-1.0/。该应用的submit ticket功能可以上传任意文件。虽然有file extension的检查,但是文件依然会被上传,且能被直接访问。不过文件名会用md5加密后存储。
- 找到了一个exploit:https://www.exploit-db.com/exploits/40300。开始时研究了好久的timezone offset,结果发现是浪费时间,这个exploit不用做任何修改,可以直接拿来用,只要找到正确的文件存储路径就行。
- 耐心读一下源码,找到关键信息:
- $uploaddir = UPLOAD_DIR.'tickets/';
- define('UPLOAD_DIR', ROOTPATH . 'uploads/');
- define('ROOTPATH', dirname(dirname(__FILE__)).'/')
- 文件在http://[ip]/support/uploads/tickets/ 下。
- 上传reverse_shell.php,运行nc监听,运行exploit