01 什么是poc

poc(全称: proof of concept), 中文译作概念验证。在安全界,你可以理解成为漏洞验证程序。和一些应用程序相比,poc 是一段不完整的程序,仅仅是为了证明提出者的观点的一段代码。

02 什么是exp

exp(全称: exploit),中文叫**漏洞利用程序,**就是一段可以发挥漏洞价值的程序。想象一下这样的场景,目标存在一个 sql 注入漏洞,然后被你知道了,然后你编写了一个程序,通过这个 sql 注入漏洞,拿到了目标的权限,那么这个程序就是所谓的 exp 了,当然,如果你没有使用这个漏洞,它就这么放着,那么这个漏洞,对你来说可以认为是没有价值的。

03 关于 poc/exp 的两个误区

1. 写 poc 要会 python?poc 的存在,只有一个目的:证明漏洞存在。而关于 poc 的形式,或者说代码实现方式,你喜欢用什么语言,就用什么语言。推荐python语言书写,因为python书写简单,易读懂。

2. poc 就是 exp?其实严格来讲,poc 和 exp 是两个东西。poc 就是用来证明漏洞存在的,而 exp 是用来利用这个漏洞进一步进行攻击,在很多情况下,知道了漏洞存在,却不知道具体怎么利用,编写一个 poc 非常简单,而编写一个 exp 是有一定难度的。

举个栗子:

poc好比你家门锁存在问题,别人知道,但不搞破坏;而exp就是知道你家门锁有问题,通过进一步利用,进你家进行盗窃等违法行为。

04 poc 编写流程

对于一个已知公开的漏洞,编写流程大致分为以下几个步骤:

  • 查看漏洞详情,确定影响范围。获取一个漏洞的详细情况后,可以通过官网下载受影响版本,或者在github上查找已有的docker文件。

  • 搭建漏洞环境 通过虚拟机、docker、phpstudy搭建漏洞环境,有条件的同学可以在云端搭建,(这里推荐使用docker进行搭建,搭建环境中会出现一些错误,浪费不必要的时间,而已有的docker是大佬们对漏洞进行复现后写出来的docker文件)。

  • 复现漏洞 根据漏洞详情,跟着走一遍流程,检测漏洞是否存在,其中要尤其注意些参数、命令、函数及对应的提交方法,大概了解漏洞的原理、利用过程、判断漏洞是否存在的地方。

  • 书写poc 在漏洞复现完成后,开始着手写poc,以可以先写一个简单的请求,检查漏洞是否存在,然后可以将页面的请求通过正则或者lxml进行过滤得到想要的结果。

  • 测试poc 通过搭建的环境对书写的poc进行测试,在书写的时候验证漏洞存在后,每次进行修改都要进行测试,最终达到想要的效果。

05 poc编写中涉及到的一些库

urllib 提供的一个用于操作url的模块,爬取网页的时候,经常需要用到这个库。

requests  实现的简单易用的http库,比urllib更加简洁

re  正则表达式模块,使用简洁的字符表达式,匹配字符串中想要的结果

使用的正则语法,建议将请求源码复制到在线正则匹配网站,进行正则语法构造。

正则在线测试:

json 将python数据处理成json格式或者将json数据处理成python数据格式

lxml  xml和html的解析器,其主要功能是解析和提取xml和html中的数据,也可以定位特定元素及节点的信息

optparse 命令行参数模块,在poc中经常看到一些参数 -h(–hlep)、-u(–url)等参数,就是使用的此模块

base64对字符串进行base64加密解密模块

multiprocessing 多进程,在处理一些数据量较大的请求时可以使用多进程来较少处理时间。(pyhton的多线程是假的并不是并发而是串发的)

06 web漏洞poc编写基本方法

07 实战漏洞poc编写

这里使用struts2 s2-057漏洞进行测试 漏洞部署使用docker,

源码下载连接:https://github.com/vulhub/vulhub/tree/master/struts2/s2-057

启动环境:docker-compose up -d

访问:http://192.168.11.124:8080/struts2-showcase/

首先复现漏洞,了解漏洞复现每一步。

进行poc编写测试:验证漏洞是否存在 :

poc:/struts2-showcase/$%7b233*233%7d/actionchain1.action

http://192.168.11.124:8080/struts2-showcase/$%7b233*233%7d/actionchain1.action

访问连接后,连接中的$%7b233*233%7d 被解析成了 54289(233*233),说明存在漏洞。

随后可以根据已有的漏洞poc(exp),再次进行验证。

注:此处的poc需要进行url编码。

漏洞复现基本完成,现在进行poc编写。

以上就是从入门到实战python漏洞验证程序poc利用的详细内容,更多关于python漏洞验证程序poc利用的资料请关注www.887551.com其它相关文章!