网络安全实验-SSRF、远程代码执行漏洞、旁注漏洞、越权漏洞、暴力猜解


前言

网络安全实验:SSRF、远程代码执行漏洞、bluecms旁注漏洞、水平越权&垂直越权漏洞、暴力猜解


一、实验要求

1、SSRF(file_get_content),要求获取ssrf.php的源码;
2、远程代码执行漏洞:DVWA-Low级别,要求把命令的操作方式全部练习一遍;
3、bluecms旁注漏洞练习,并解释为什么旁站攻击可以拿下主站?跨库的意思是什么?理解基于功能挖掘漏洞的过程。
4、水平越权&垂直越权漏洞实验;
5、暴力猜解:hydra实现对ftp、ssh、rdp、mysql的暴力破解

二、实验步骤

1.SSRF

SSRF(file_get_content),要求获取ssrf.php的源码
1、漏洞简介
       SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成,由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。
2、漏洞原理
       SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
       通过控制发起请求的Web服务器来当作跳板机攻击内网中其他服务。比如,通过控制前端的请求远程地址加载的响应,来让请求数据由远程的URL域名修改为请求本地、或者内网的IP地址及服务,来造成对内网系统的攻击。
3、漏洞危害
(1)扫描内网开放服务
(2)向内部任意主机的任意端口发送payload来攻击内网服务
(3)DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
(4)攻击内网的web应用,例如直接SQL注入、XSS攻击等
(5)利用file、gopher、dict协议读取本地文件、执行命令等
4、实验过程
file_get_contents() 函数的作用是把整个文件读入一个字符串中,是用于将文件的内容读入到一个字符串中的首选方法。
php://filter:是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。
php://filter 目标使用以下的参数作为它路径的一部分,复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。
(1)选择pikachu靶场
在这里插入图片描述
(2)file_get_contents里面带有php://filter 我们用它就可以来读取php源码,所以来构造URL
在这里插入图片描述
修改后的url
在这里插入图片描述
直接使用 resource 指定 ssrf.php 文件,可以看到访问成功,并解析了
在这里插入图片描述
可是我们的实验要求是要源码,所以我们需要对代码做一层编码,不让它解析。在read参数中加入 convert.base64-encode(https://www.php.net/manual/zh/filters.convert.php)
在这里插入图片描述
然后网页出现了base64编码的代码,利用解码工具或hackbar进行解码
在这里插入图片描述
我们就得到了原码

2.远程代码执行漏洞

DVWA-Low级别,要求把命令的操作方式全部练习一遍。
1、漏洞简介
       RCE英文全称:remote command/code execute,分为 远程命令执行(比如ping) 和 远程代码执行(比如eval)。
       RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
       出现原因:因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。
比如常见的路由器、防火墙、入侵检测等设备的Web管理界面上,一般会给用户提供一个ping操作的web界面,用户从Web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。而如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而控制整个后台服务器。
2、实验过程
(1)选择靶场
我们这次选择靶场是dvwa,安全级别为low。
通过源码分析可知该处设置了一个ping功能,输入一个IP地址即可以从服务器对该地址执行ping操作。
在这里插入图片描述
在这里插入图片描述

(2)插入一个小知识点
命令行的几种操作方式:
A && B: 先执行A,如果成功,执行B;
 A || B  : 先执行A,如果失败,执行B;
  A | B  : 管道符,先执行A后,将A的结果作为B的输入,打印的是B的结果;
 A & B  : 先执行A,然后不管成功与否,执行B;
(3)命令行练习

  • A && B

在这里插入图片描述
这里是先执行了ping127.0.0.1,ping通后执行ls

  • A || B

在这里插入图片描述
这里我们选择一个不存在的ip,让它ping,ping不通后执行ls

  • A | B

在这里插入图片描述
这里是先执行了ping127.0.0.1,因为ls命令不需要依托ping的结果,所以ping通后执行ls

  • A & B

在这里插入图片描述
这里先执行ping192.168.10.4,然后执行ifconfig。

3.bluecms旁注漏洞

bluecms旁注漏洞练习,并解释为什么旁站攻击可以拿下主站?跨库的意思是什么?理解基于功能挖掘漏洞的过程。
1、漏洞简介
       要攻击的网站因为被攻击太多次,或者是大型互联网公司主站,这样的网站一般很难渗透。我们可以考虑利用旁站(一台服务器可以起多个web服务,通过不同的端口对外提供服务,这些站点彼此之间互为旁站的关系),进行旁站入侵(针对旁站的注入就是旁注,属于旁站入侵的一种)。通过旁注拿下服务器,进而拿下目标站点。
2、实验环境
漏洞环境搭建:
bluecms v1.6 sp1源码
windows 7
phpstudy2018(php 5.4.45)
我们在win7的虚拟机进行bluecms的靶场搭建,首先安装phpstudy,这个用来搭建网站。
在这里插入图片描述
一路默认安装
在这里插入图片描述
创建网站
在这里插入图片描述
域名可以用主机ip;端口选择;php版本选择
ps:注意如果是自己设计的域名默认在物理机上是解析不到,所以要修改物理机的hosts。
具体可以看这个博主的教程:https://www.cnblogs.com/scfssq/p/17475471.html
在这里插入图片描述
打开根目录
在这里插入图片描述
把我们的靶场环境复制进去
在这里插入图片描述
我们启动wnmp就开启了
在这里插入图片描述
访问 bluecms/uploads/install/ 进行安装
在这里插入图片描述
一路继续直到参数配置,随意编写
在这里插入图片描述
返回空白代表安装成功

在这里插入图片描述
3、实验过程
(1)猜想
情景:假如在某次渗透测试过程中我们发现主站难以攻破,又发现存在旁站bluecms,于是通过旁站来进行攻击。
在这里插入图片描述
思考:我们可以看到bluecms中没什么功能,明显看到有用户登录的功能。我们可以猜测这个位置有可能有sql注入。我们就可以尝试寻找后台管理系统平台,常用管理员路径 console\login\admin\manage\system 在实际攻击中可以测试。
在这里插入图片描述
我们现在开始账号密码猜测,首先我们确定一个可能性最高的账号admin,然后,在密码进行随机测试,多次测试后账号没有锁定,那我们就可以考虑进行爆破。
打开抓包软件
在这里插入图片描述
在这里插入图片描述
我们可以看到数据包中没有特殊的验证方式,所以直接爆破。
在这里插入图片描述
在这里插入图片描述
加载一个密码字典,开始爆破。
在这里插入图片描述
使用账号密码(admin/123456)进行登录,获取旁站后台管理员权限:
在这里插入图片描述
我们这次研究的是添加广告模块中“获取JS” 的功能:
在这里插入图片描述
在这里插入图片描述
思考:获取js:
js是从哪获取的?服务器上的文件、数据库、远程服务器
1)内网服务器:本地文件、远程文件(内网中其他机器上的文件)SSRF
2)数据库:SQL注入
3)外网服务器:文件包含
在这里插入图片描述
通过js代码,我们猜测有可能有sql注入的可能。

在这里插入图片描述
打开js编码中的url,用hackbar开始注入测试。

在这里插入图片描述
通过反馈我们能知道这里存在sql注入
然后,我们通过order by来判断sql语句查了多少列:
在这里插入图片描述
在这里插入图片描述
对比可知,总共7列。
开始进行联合注入,爆库名:
在这里插入图片描述
注入出数据用户名为root@localhost:
在这里插入图片描述
注入出当前库所有的表名:
在这里插入图片描述
注入blue_user表中的字段名:
在这里插入图片描述
发现报错,存在过滤,单引号前面出现\证明单引号被转义。
使用16进制进行绕过:
在这里插入图片描述
注入bluecms库中blue_user表中user_name以及pwd的字段内容:
在这里插入图片描述
web管理员的账号密码
通过在线解密:发现明文密码123456
在这里插入图片描述
利用SQL注入能够跨越当前库,获取所有的数据库中的数据库名,表名,字段名:
在这里插入图片描述
这时我们攻击不下的主站就可以通过攻击的旁站数据库进行跨库攻击。
跨库:当我们攻击主站数据库攻不下的时候,我们可以换成旁站数据库,因为,它们会在一个数据库管理系统上。当我们拿下数据库管理系统,也就能入侵到主站数据库。

4.水平越权&垂直越权漏洞

1、漏洞简介
       越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第一名。
       该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。
       越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。
       在实际的代码审计中,这种漏洞往往很难通过工具进行自动化检测,因此在实际应用中危害很大。其与未授权访问有一定差别,目前存在着两种越权操作类型,横向越权操作(水平越权)和纵向越权操作(垂直越权)。
水平越权: 指相同权限下不同的用户可以互相访问
垂直越权: 指使用权限低的用户可以访问到权限较高的用户
水平越权测试方法:主要通过看看能否通过A用户操作影响到B用户
垂直越权测试方法:看看低权限用户是否能越权使用高权限用户的功能,比如普通用户可以使用管理员的功能。
2、水平越权实验
靶场我们选择pikachu
我们要在两个浏览器上分别登录不同账号
在这里插入图片描述
在这里插入图片描述
开启brup抓包,我们看看它怎么校验的身份:
在这里插入图片描述
我们可以推测有可能是通过cookie校验或者username校验。
我们在url里直接修改username我们就可以验证cookie参与没参与校验:
在这里插入图片描述
在这里插入图片描述
3、垂直越权实验
靶场我们选择pikachu
我们要在两个浏览器上分别登录高低等级不同账号:
高级账号:admin
在这里插入图片描述
低级账号:pikachu
在这里插入图片描述
我们发现超级用户admin能添加用户。我们来抓包看下:
在这里插入图片描述
我们尝试把接口拼接,让低级账号访问,看看能不能有权限:
在这里插入图片描述
能访问,我们尝试看看能不能把数据添加上:
在这里插入图片描述
低权限的账号pikachu通过访问admin账户的接口,能够使用到admin账号添加用户的功能,造成越权:
在这里插入图片描述
确认造成垂直越权

5.暴力猜解

暴力破解是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。
C/S架构暴力破解:
       常用网络协议、系统、数据库、第三方应用密码破解
B/S架构暴力破解(浏览器/服务器结构暴力破解):
       暴力破解产生是由于服务器没有对接收的参数进行限制,导致攻击者可以通过暴力手段进行破解所需要的信息(如账号,密码,验证码等),暴力破解的原理就是穷举法,其基本思想是根据部分条件确定已知条件的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。
实验要求:hydra实现对ftp、ssh、rdp、mysql的暴力破解
1、hydra的安装与使用
hydra 是一个网络帐号破解工具,支持多种协议。其作者是van Hauser,David Maciejak与其共同维护。hydra在所有支持GCC的平台能很好的编译,包括Linux,所有版本的BSD,Mac OS,Solaris等。
(1)hydra的安装
kali linux下自带hydra
在这里插入图片描述
(2)hydra的使用
hydra常用参数:
-l    指定一个用户名
-P   指定一个密码字典
-s   指定端口
-L   指定一个用户名字典
-vV 显示每次的尝试信息
-f    遇到正确的密码,停止爆破
-o   将结果输出到文件中
-M  指定一个服务器列表
-t Tasks同时运行的线程数,默认为16
-e nsr n:尝试空密码 s:将用户名作为密码 r:将用户名反向
2、实验过程
(1)FTP
使用phpstudy开启ftp
设置用户名和密码:
在这里插入图片描述
在这里插入图片描述

打开kali 创建一个密码字典:
在这里插入图片描述
我们先确定win7的ip:
在这里插入图片描述
使用hydra暴力破解ftp服务:
在这里插入图片描述
成功破解出密码为: ftp/magedu678
利用该密码成功登录ftp服务器:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)SSH
首先在Windows系统中安装openssh,以Win7为例:
在这里插入图片描述
安装完成后,看到C盘目录下已经存在OpenSSH文件夹,接下来配置环境变量:
在这里插入图片描述
在这里插入图片描述
配置完成后,在命令行输入ssh,出现下图即代表安装成功:
在这里插入图片描述
在win7下默认安装openssh,账号密码默认是当前系统用户的微软账号和密码。
在这里插入图片描述
(3)RDP
我们要把win7开启远程桌面
具体看这篇文章:https://jingyan.baidu.com/article/63f23628177e6d0209ab3d60.html
在这里插入图片描述
在连接的过程中出现了报错:
在这里插入图片描述
解决方法可以看这篇文章:https://blog.csdn.net/weixin_44657888/article/details/124673258

在这里插入图片描述在这里插入图片描述
(4)Mysql
win7系统中启动MySQL服务,查看账号密码:
在这里插入图片描述
在这里插入图片描述

安装数据库管理工具:
在这里插入图片描述
在这里插入图片描述
设置MySQL允许远程连接:
选中 grant all privileges on . to root@‘%’ identified by ‘root’; 语句,点击右键 选择运行
在这里插入图片描述
在这里插入图片描述
hydra ip mysql -l root -P pwd.txt -o mysql.log -f -vV -e nsr
在这里插入图片描述
查看mysql.log也可以看出:
在这里插入图片描述

总结

这次实验任务量比较重,可以加强对基本渗透测试中部分漏洞的理解!

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值