欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python漏洞验证程序Poc利用入门到实战编写

程序员文章站 2022-10-11 13:25:49
01 什么是pocpoc(全称: proof of concept), 中文译作概念验证。在安全界,你可以理解成为漏洞验证程序。和一些应用程序相比,poc 是一段不完整的程序,仅仅是为了证明提出者的观...

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/

Python漏洞验证程序Poc利用入门到实战编写

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

进行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),说明存在漏洞。

Python漏洞验证程序Poc利用入门到实战编写

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

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

Python漏洞验证程序Poc利用入门到实战编写

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

Python漏洞验证程序Poc利用入门到实战编写

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