漏洞扫描技巧之Web漏洞扫描器研究-黑客接单平台

0×00 前语 之前咱们简略介绍了一下扫描器中爬虫的部分,接下来将持续介绍一下扫描器中一些咱们以为比较风趣的技巧。 0×01 编码/解码/协议 在很久以前有人发问 AMF 格局的恳求怎样进行检测,或...

0×00 前语 之前咱们简略介绍了一下扫描器中爬虫的部分,接下来将持续介绍一下扫描器中一些咱们以为比较风趣的技巧。 0×01 编码/解码/协议 在很久以前有人发问 AMF 格局的恳求怎样进行检测,或许有什么东西能够检测。已然咱们要解说的是 Web 缝隙扫描器,那么就先假定是 AMF over HTTP (这儿并不需求你了解 AMF,你只需求知道 AMF 是一种数据格局类型就行) 假定咱们需求测验一个 AMF 格局数据的 SQL 注入问题,那么依照一般的思路就是在 SQL 注入模块中 1.先解析 HTTP 中 AMF 格局数据 2.然后在测验参数中填写 payload 3.从头封装 AMF 格局数据 4.发送 HTTP 恳求 伪代码如下: req = {"method": "POST", "url": "http://fatezero.org", "body": "encoded data"} data = decode_amf(req["body"]) for key, value in data.items(): d = copy.deepcopy(data) d[key] = generate_payload(value) body = encode_amf(d) requests.request(method=req["method"], url=req["url"], body=body) 整个流程下来没什么问题,可是假设又来了一个 X 协议(X over HTTP),那么咱们就得持续修正 SQL 注入模块以便支撑这种 X 协议,可是扫描器中可不是只要 SQL 注入检测模块,还有其他同类模块,莫非每加一个新协议我还得把一切检测模块都改一遍?所以咱们需求把这些协议解析和封装独自抽出来放在一个模块中。 伪代码如下: # utils.py def decode(data): if is_amf(data): data = decode_amf(data) if is_X(data): data = decode_X(data) # 递归 decode for i in data: data[i] = decode(data[i]) return data # detect_module.py req = {"method": "POST", "url": "http://fatezero.org", "body": "encoded data"} data = decode(req["body"]) for key, value in data.items(): d = copy.deepcopy(data) d[key] = generate_payload(value) body = encode(d) requests.request(method=req["method"], url=req["url"], body=body) 上面的递归 decode 首要是为了解码某种格局的数据里边还有别的一种格局的数据,尽管看起来这种场景比较罕见,可是仔细想一下 multipart 带着 json,json 里的字符串是别的一个 json 字符串,是不是又觉得这种状况也并不罕见。 那 encode/decode 剥离出来就能够了吗?请注意到上面伪代码运用了 requests.request 发送恳求,那假设某天需求咱们去测验 websocket 协议,那是不是又得在检测模块中多加一套 websocket client 发送恳求?所以咱们也需求将具体的网络操作给剥离出来,具体的协议类型直接由上面来处理,检测模块只需求重视具体填写的 payload。 伪代码如下: for key, value in x.items(): data.reset() x[key] = generate_payload(value) x.do() # 担任将数据从头组装成本来的格局,并依照原始协议发送 # check 由于每个检测模块的检测依据大致就几种: 1.回来内容 2.耗费时刻 (time based) 3.别的一条信道的数据 (比方说 dnslog) 所以即便是咱们将网络操作剥离出来也不会影响检测的作用。 在编写检测模块的时分,编写者能够不必关怀根底协议是什么,怎样对数据编码解码,只用关怀依据 value 生成 payload 并填写到相对应的 key 中,假设某天呈现了这么一种盛行编码格局 http://www.a.com/key1,value1,key2,value2,那咱们一切的检测模块也无需修正,只是需求在上一层再增加一套 encode/decode 操作即可。假设某天呈现了一种比较盛行的协议,咱们也仅需求在上一层供给一套 client 即可。检测模块的作业就只是剩余生成并填写 payload。 0×02 PoC 分类 在 2014 年的时分,我做了很多的竞品剖析,包含运用逆向工程逆向商业的 Acunetix WVS, HP Webinspect, IBM AppScan, Netsparker 扫描逻辑,也包含阅览开源的 w3af, arachni 代码。假设不谈扫描质量,只重视全体项目规划以及产品中运用到的鄙陋技巧,那么其间最让我眼前一亮的当属 AWVS,接下来我将具体介绍一下我从 AWVS 中学习到的 PoC 分类。 PoC 分类: 用于检测比较常用的 Web 运用的缝隙 类型 描述 PerServer 用于检测 Web Server 等级中存在的缝隙,比方说各种中间件,Web 结构的缝隙 PerFile 用于检测某个文件中是否存在缝隙,比方对应文件的备份,Bash RCE 等 PerFolder 用于检测某个目录中是否存在缝隙,比方灵敏信息的走漏,途径中的 SQL 注入等 PerScheme 用于检测某个参数中是否存在缝隙,比方 SQL 注入,XSS 等 PostCrawl 在爬虫完毕之后发动,直接运用爬虫的资源进行检测 PostScan 在扫描完毕之后发动,img alt=”awvs.png” 用于检测二阶注入,存储 XSS等 WebApps 大致的流程图如下: [1][2]黑客接单网

  • 发表于 2021-04-17 11:41
  • 阅读 ( 275 )
  • 分类:互联网

0 条评论

请先 登录 后评论
徐晓华
徐晓华

713 篇文章

你可能感兴趣的文章

相关问题