官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
1、靶场简介
名字:ch4inrulz: 1.0.1
难度:中等
靶场作者:askar
下载地址:https://download.vulnhub.com/ch4inrulz/CH4INRULZ_v1.0.1.ova
2、网络环境
kali攻击机 IP:192.168.68.143
靶机 IP:192.168.68.145
win7 IP:192.168.68.139
3、信息搜集
3.1 netdiscover探测IP
netdiscover -r 192.168.68.0/24
通过netdiscover探测得知,靶场的IP是192.168.68.145
3.2 nmap搜集靶机服务
nmap -sV -T4 192.168.68.145
nmap搜集到有80和8011的web站点,访问看看。
80端口的网站就是单纯的博客,没啥东西。
8011端口看页面应该是个开发平台。
3.3 目录扫描
拿dirsearch跑一下
dirsearch -u http://192.168.68.145
发现,有个401认证,访问看看。
需要账号密码才能访问,留着看看别的,
通过nikto搜集看看有什么有用的信息。
nikto -h http://192.168.68.145
注意力都放在了下面的提示,差点把中间的备份文件漏了。备份文件是个好东西。
下载保存,查看一下,发现疑似账号密码的东西,也是john可以破解的形式,准备用john破解看看。
3.4 破解密码
john --format=md5crypt-long -show crack
密码破解成功,尝试登录401认证。
3.5 401认证登录
登陆成功之后,发现是个上传文件页面。
upload、uploader试试。
找到上传文件的地方,上bp搞一搞。
4、文件上传利用
4.1 文件上传
随便上传个东西试试检测手段,
看样子只能上传图片文件,
burpsuite开起来,尝试绕过,上传一句话木马。
文件后缀名,MIME类型检测,最后发现需要添加文件头才可以绕过。
4.2 确认文件上传路径
4.2.1 继续信息搜集
前面一直在查看80端口,现在无法确认文件上传路径,转而看看8011端口的网站有什么可利用的
利用dirsearch再对8011端口的网站进行目录探测
dirsearch -u http://192.168.68.145:8011
发现有个301跳转的api接口,访问一下看看。
发现有好几个api接口,挨个访问看下情况。
只有files_api.php可以访问,根据页面的提示,提交参数应该是file,但不确定是GET还是POST,都试试看。
发现提交参数确实是file,网页请求方式为POST,尝试包含/etc/passwd文件确实可以查看信息,接下来我们通过文件包含来确认之前上传的2.png文件路径。为了获得完整的上传文件路径,我们需要知道网站的根目录,还有上传文件路径。
4.2.2 利用文件包含确定路径
一般情况下,网站的根目录都会在配置文件中定义,联想到之前nmap探测到网站的中间件为apache,经过百度查一下apache的配置文件路径,发现是/etc/apache2/sites-enabled/000-default,包含一下试试行不行。
发现网站根目录为/var/www,为了确定上传文件路径,准备尝试一下php://filter伪协议读取上传文件的源码,猜测一下源码文件名为upload.php,包含看看。
源码读出来了,base64解码看看有没有我们需要的信息,
路径找到了,那么拼接一下得到完整的上传文件的路径为/var/www/development/uploader/FRANKuploads/
4.2.3 phpinfo测试
尝试包含一下之前上传的2.png,确认一下路径对不对。
成功返回phpinfo页面,说明路径没有问题。
5、反弹shell
5.1 kali上开启nc监听
nc -lvp 4444
5.2 上传木马触发
经过前面的测试,直接上传php反弹shell木马,并通过文件包含触发,查看nc的监听结果。
反弹shell成功,获取到www-data权限。反弹shell这块,利用msfvenom生成php payload虽然获得了meterpreter权限但是不好进一步提权,生成linux可执行木马,配合一句话木马控制下载,赋予权限并执行效果并不好。最后还是选择了触发可以直接反弹shell,方便快捷。
6、提权
6.1 优化命令行
反弹shell的命令行交互方式不够优化,用Python优化一下命令行交互。
python -c 'import pty;pty.spawn("/bin/bash")'
6.2 内核漏洞提权
Linux的提权方式有很多种,比如sudo直接提权、SUID特殊权限位提权、内核漏洞提权、环境变量劫持提权等。这里先看看内核有什么漏洞可以利用。
6.2.1 查看内核版本
uname -a
发现内核版本是2.6.35,接下来准备用内核版本号查询一下可利用的漏洞信息。
6.2.2 searchsploit查询漏洞信息
searchsploit linux 2.6.35
拿15023.c这个exp利用一下试试。
6.2.3 Python开启http服务
python3 -m http.server
6.2.4 下载编译exp
编译成功之后,执行exp,即可提权成功。当然也可以使用脏牛漏洞(Dirty COW)进行提权,不过我觉得没有这个方便。