渗透测试信息安全网络与信息安全

Poc编写

2017-03-14  本文已影响372人  Hell0_C

0x01 PoC

PoC(全称: Proof of Concept), 又叫概念验证。作为我们的漏洞验证程序,他可能是一段不完整的程序,仅仅是为了证明我们提出漏洞的观点。
推荐使用Python编写PoC,因为安全界用 Python 的人居多,写的东西能被更多人看懂,并且 Python 这门语言的灵活,类库强大等特性,给编写的人提供了很大便利。
Exp(全称: Exploit),又叫漏洞利用程序。比如目标存在一个 SQL 注入漏洞,我们分析到了该漏洞,然后我们编写一个程序,通过这个sql注入漏洞,最终拿到目标的权限,那么这个程序就是Exp。
编写一个 PoC 相对简单,而编写一个 Exp 是相当有挑战性的。

0x02 PoC与PoC框架

PoC 框架就是一个批量管理,调度 PoC 的程序。因为是框架,要批量调度,那就要求 PoC 在编写的时候要遵守一些规范,这些规范常见的有:

入口规范
考虑到批量使用 PoC 的调度情况,统一入口框架调用该 PoC 的时候会非常之方便。这个就需要根据具体的框架的调度要求来看了,都有文档的,看一下就会了。

API规范
API 是该框架对一些基础类库的封装,比如说框架提供了一些网络请求工具。这些封装有什么好处呢?我还是举例子来说明,比如某次扫描,调用了 1000 个 PoC 去扫描目标主机了,假设这个扫描任务中有一部分是需要登录的,而有一些的作者在编写的时候忘记在 PoC 中接收用户自定义的 Cookie 了,那么此时就会因为接收不到 Cookie 而导致请求不成功。那么在使用了框架的情况下,即使在忘记了添加这些字段的情况下,框架也会自动将 Cookie 添加进请求中,为 PoC 开发者提供了极大的便利。

常见PoC框架

Beebeeto
Seebug
Bugscan
Tangscan

0x03 PoC编写

网络基础:
请求响应配对
域名系统
IP 地址
TCP/IP协议
HTTP 协议(重点)
编码基础:
HTML(更重要了解浏览器)
Javascript(XSS、CSRF必备技能)
Python(了解常用语法和功能库)
SQL(sql注入的基础知识,增删改查必须掌握)
正则表达式(自动化过程中经常用于匹配,能够起到事半功倍的效果)

常用Python库编写##

urllib、urllib2、requests   # 发送 HTTP 请求的
urlparse                    # 处理 url 
re                          # 正则表达式
random                      # 生成随机数的
hashlib                     # 集成md5算法
base64                      # base64编码
socket                      # 套接字
os/sys                      ......

PoC编写 - 复现漏洞环境,将漏洞复现流程代码化的过程
漏洞检测 - 使用编写好的 PoC 去验证测试目标是否存在着漏洞,需要注意的是在这个过程(或者说是在编写 PoC 的时候)需要做到安全、有效和无害,尽可能或者避免扫描过程对目标主机产生不可恢复的影响

遵循三个标准:
随机性、确定性、通用性
随机性:涉及的关键变量或数据应该具有随机性,不要使用固定的变量值生成Payload
确定性:通过测试内容找到唯一确定的标识来说明该漏洞是否存在,并且这个标识要具有针对性
通用性:Poc中所使用的Payload或包含的检测代码应该兼顾各个测试环境或平台

漏洞检测方法
直接判断、间接判断
直接判断:通过发送具有Payload的请求,从返回的内容匹配相应状态进行判断
间接判断:借助其他工具间接反应漏洞是否触发

上一篇下一篇

猜你喜欢

热点阅读