网络安全之——漏洞挖掘
一.为何挖不到漏洞?
信息收集不够多,或者做了信息收集但是分析的不够彻底和仔细。有几点要求需要大家注意:首先是要熟读刑法,了解那些是经过授权的渗透;其次,收集的信息要多,越多越好,包括子域名、端口以及IP段落等,利用搜索引擎或者GitHub上的现成工具;再次,提前了解一些常见的漏洞示例,熟悉漏洞可能存在的地方,可以多看看漏洞平台或者社区上的一些经验。然后,大厂的主站漏洞不是很多,挖掘的难度较大,新手应该绕过,换到子站看一下;最后,不耻下问,多学习,不要仅仅限制于TOP10。
1.什么是src?
SRC,( Security Response Center) ,安全应急响应中心,是企业用来对外接收来自用户发现并报告产品安全漏洞的站点。简单说就是白帽子用于提交随机发现的漏洞的一个平台,提交者可以获取一定的赏金。是企业用于对外接收来自用户发现并报告的产品缺陷的站点。目前主要包含有两种实现方式,第一种是漏洞报告平台,另一种是XSRC模式。
(1)漏洞报告平台
漏洞报告平台是指由独立的第三方公司或机构成立综合性的“安全应急响应中心”。国内补天平台、漏洞盒子平台,以及据此衍生的Sobug众测平台等均属于该模式。外部报告者注册对应漏洞报告平台选择对应的厂商进行报送,接着第三方机构会发送邮件提示相关厂商确认处理。这种模式的缺陷十分明显。厂商的历史漏洞信息会完全暴露给第三方机构,报告中涉及的企业内部大量敏感信息因此外泄,丧失私密性。
(2)xSRC模式
xSRC模式是指企业自己分配工程师开发属于自身的安全应急响应中心,制定自己的漏洞收集和披露计划。目前包括Google、Microsoft、腾讯、阿里巴巴和百度等,均成立了自己的安全应急响应中心,对外收集并处理安全研究员报送的漏洞报告。使用这种模式,企业在漏洞的收集和披露过程中完全掌控了主动性,拥有良好的私密性和可定制性。
2.法律常识,挖洞前要注意不违法。
中华人民共和国网络安全法第二十七条规定,任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
二. 漏洞挖掘的几个关键技术
1.JS在漏洞挖掘重要地位
(1)JS是什么?
JS即javascrip 是一种Web页面的脚本语言,主要用来向HTML页面添加交互行为,主要作用是:
- 在HTML页面中嵌入动态文本
- 对浏览器的时间做出响应
- 读写HTML的元素
- 在数据被提交到服务器之前校验数据
- 检测访客的浏览器信息
CSS :(Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言,CSS 文件扩展名为 .css。
HTML:超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。我们可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。
HTML和CSS以及JS三种前端语言的区别:HTML只包含页面中的文字,就好比是一个毛坯房。CSS包含了图片,颜色以及排版,从而将页面渲染的更加美观就好比一个装修好的房子。JS就是加入一些动作,就好比给装修好的房子加入了智能家居。
HTML
<form name="myForm" action="demo_form.php"
onsubmit="return validateForm()" method="post">
名字: <input type="text" name="fname">
<input type="submit" value="提交">
JS
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
if (x == null || x == "") {
alert("需要输入名字。");
return false;
css
<style>
p
{
color:red;
text-align:center;
}
</style>
(2)JS在实战漏洞挖掘中的作用:
- 1.JS中存在插件名字,根据插件找到相应的漏洞可以直接进行利用
https://rencaiceping.guazi.com/login.asp?c=1
可以搜索第三方公司代码的漏洞进行利用。
-
2.JS中存在一些URL链接。根据URL链接可以找到相应的页面进行经一步测试和利用。
-
3. JS中存在一些子域名,可以直接访问子域名
-
4. JS中的一些注释可能泄露一些账号密码或者其他信息
黑客有可能向该人员发送钓鱼邮件进行漏洞利用。
(3)Jsfind工具
可以使用JSfind工具来查找JS中所有泄露的一些URL和子域名。
包含关键信息的URL。
2.浏览器控制台使用技巧和方式
控制台中调试器主要对JS代码进行动态调试并且保存加载的JS代码
3.JS 的断点技巧以及Hook注入
JS的断点调试,打到断点处就不运行了,选择单步步入。
在关键代码中打断点(点击代码中的行号),通过关键信息找到代码执行的关键步骤,然后一步一步进行调试。
4.Python和JS 相结合解决加密问题
1.js文件样例函数如下:
通过Python去调用1.js代码中的函数encryptByDES
首先导入execjs库,定义一个结果唤醒1.js中函数encryptByDES然后传入传参,**相当于一个用Python去调用js中的函数并输出对应的结果。**
在终端中进行执行后输出结果。
5. MD5加密与逆向加密参数还原
(1) 打开Burp suite
Burp suite 是用于攻击 web 应用程序的集成平台。它包含了许多 Burp 工具,这些不同的 Burp 工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示 HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。它主要用来做安全性渗透测试。其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描 web 应用程序漏洞,以暴力破解登陆表单,执行会话令牌等多种的随机性检查。
下载地址
https://portswigger.net/burp/releases
安装教程
https://zhuanlan.zhihu.com/p/605035559
注册机
https://link.zhihu.com/?target=https%3A//github.com/h3110w0r1d-y/BurpLoaderKeygen/releases
java sdk:
https://link.zhihu.com/?target=https%3A//download.java.net/openjdk/jdk11/ri/openjdk-11%2B28_windows-x64_bin.zip
Burp suite包括以下几个模块:
proxy:代理,默认地址是127.0.0.1,端口是8080
target:站点目标,地图
spider:爬虫
scanner:漏洞扫描
repeater:http请求消息与响应消息修改重放
intruder:暴力破解
sequencer:随机数分析
decoder:各种编码格式和散列转换
comparer:可视化差异对比功能
(2)打开Burp suite后在浏览器中配置好代理
在浏览器中打开要破解的URL并输入用户名和密码点击登录,同时在Burp suite中查看拦截请求中所抓到的包。
(3)这个时候回到浏览器控制台中查找到JS中相应的所有密码加密处理函数
在Burp suite所显示的最后值是由如下函数进行md5的3层混合加密后得到的。
第一层传入的值会先进行md51进行加密。
第二层的md51加密进行了多层函数的嵌套。
在控制台中逐个进行查找,找到所有的MD5加密处理函数。
(4)将在控制台中找到的所有的MD5加密处理函数都复制到1.js文件中。
一步步进行调试,找到所有加密过程中所缺失的函数。
记得对python脚本中的函数名进行更改。
(5)对所有需要调用的加密函数进行查找复制,直到可以对我们的输入参数进行成功加密并输出。
(6)代入最开始时的密码加密的公式。
在控制台中得出随机值,10分钟内会变一次,所有要在10分钟内将加密过程破解完成。
将加密参数复制到python脚本中运行后得到与Burp suite中相同的数值。自此相当于完成了将网页中加密过程的破解。
(7)将自己的密码破解字典使用该加密函数进行输出转换然后输入Burp suite中进行破解
随机值字典如下所示:
然后将随机值按照加密过程进行转换。
执行结果如下:
然后输入Burp suite的载荷中进行破解。使用该密码可以成功进行系统登录。
运行后状态码显示登陆成功,从而得出密码破解成功。
### 备注:
学习笔记取自万里老师教学视频,有需要可以观看原片进行学习:
[1] https://www.bilibili.com/video/BV1824y157K6?p=4&vd_source=789e3cc0e1c08d2d20d3c0ccbc92fda8