首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编写属于大表哥的POC(上)

编写属于大表哥的POC(上)

0x00 引言:

每次出现漏洞,总有一些小伙伴很慌,慌什么,慌自己没有POC,求这个大佬,求那个大佬拿POC。身为大表哥的我们真的要如此低声下气去求人么?求人拿POC是不可能的,这辈子都不可能的,表哥说话又好听。当然这只是来搞笑的,别人不给,那我们就自己去写呗,编写POC的门槛并不高。

0x01 什么是POC

PoC(全称: Proof of Concept), 中文译作概念验证。就个人理解为:验证漏洞是否存在的程序

0x02 什么是EXP

Exp(全称: Exploit),中文叫漏洞利用程序。

0x03 POC和EXP的区别

害怕大家把两个概念搞混了,我就用大白话给大家讲讲他们的区别吧。POC仅仅用于验证漏洞是否存在,而EXP就是直接去利用漏洞,这就是二者的区别。

0x04 POC编写流程

以下过程只针对公开的漏洞,不针对未公开的漏洞。

1.获取漏洞的详情,明确漏洞受影响的版本

2.分析漏洞如何产生并且理解其验证和利用的方式

3.搭建漏洞环境,尝试复现漏洞

4.明确编写语言

5.结合漏洞原理编写POC

6.增强POC的适用性

0x05 实战编写

本文先不使用POC框架来写,先尝试不依赖框架独立编写。

漏洞详情:http://www.freebuf.com/column/165934.html

接下来我们按上面所说的五步来进行操作。

1.获取漏洞的详情,明确漏洞受影响的版本

当一个新的漏洞出来的时候,有可能漏洞发布者并没有指明漏洞影响的版本号,这个时候我们首先要做的就是通过漏洞详情明确该漏洞影响的版本具体有那个或者那些。如果不明确漏洞影响的版本那我们就没有办法正确利用漏洞和复现漏洞。相反如果你已经知道漏洞影响的版本信息那么接下来你需要做的就是通过搜索引擎、漏洞库或者途径去明确漏洞详情。

那我们这里已经获知了漏洞影响的版本信息,那我们可以借助搜索引擎进行模糊搜索获知漏洞详情的链接。漏洞详情描述地址:http://www.freebuf.com/vuls/161888.html 注意:我下面的分析只是参考了他的思路,并没有完全复制。

2.分析漏洞如何产生并且理解其验证和利用的方式

获知漏洞的详情之后我们需要做的就是跟着别人的思路去分析该漏洞是如何产生的并且需要理解该漏洞验证和利用的方式。

那我们跟着其思路进行分析,发现其漏洞产生的文件是/user/del.php

在开头我们就见到两个可控变量$pagename和$tablename。在做代码审计的时候我们一定要对可控变量非常敏感,因为大多漏洞的产生都是因为程序没能对可控变量做出正确处理导致的。

我们跟着这个可控变量找下去看看是否存在可利用的地方。一直往下看主要找数据库语句出现的位置。就发现当$tablename不满足if和elseif 的条件的时候,便会进入到下面代码块。 $tablename变量对应的是数据表名,因此可以不需要引入符号进行闭合,所以就可以无视/inc/stopsqlin.php文件中的安全处理规则,所以此处可以直接进行SQL注入。但是我们先不写payload,经过自己搭建漏洞复现出来正确之后我们才确定payload。

3.搭建漏洞环境,尝试复现漏洞

经过漏洞分析之后我们需要自己搭建漏洞环境进行复现漏洞,加深自己对漏洞的理解。

1.环境准备

2.搭建zzcms网站

把下载下来的zzcms8.2下的文件直接放进我们的phpstudy网站根目录。然后访问http://你的ip/install进行安装即可。

3.注册用户登录网站

注册很简单,注册完成之后它会自动登录网站。

4.添加产品代理,后台通过代理审核

如果我们需要进行漏洞利用的话,就必须确保数据库表中存在对应的数据,不然我们是没有办法正常利用的。

但是我们用户没有经过管理员审核我们是不能正常发代理的,所以我们首先需要做的就是通过用户的审核。

首先登陆我们后台,然后找到待审注册信息打开查看。

然后通过用户审核。

这是我们回到用户界面发代理。

我们查询了一下数据库信息,发现我们发的代理数据。

5.确定payload

4.明确编写语言

Python肯定是我们编写poc的首选。它的优点如:

Python程序简单易懂,入门简单

开发效率高,有非常强大的第三方库,大大降低了开发周期

高级语言,编写程序时不需要考虑内存管理一类的底层细节。

可移植性高

可扩展

可嵌入,可以把Python程序嵌入C/C++

5.结合漏洞原理编写POC

前面我们都已经了解了其原理和明确了payload和编写语言的选择。那我们就来编写一下我们的POC吧。注意该POC利用需要先登录。所以自己测试的时候注意url的更改。

测试一下效果:

6.增强POC的适用性

1.增强平台适用性。例如支持windows和linux还有mac。2.增强运行环境适用性。例如python2和3都可以运行,还有依赖库尽可能地少。3.加快运行速度同时降低误报率。4.降低访问频率,降低对目标的破坏性。5.运行模式优化为参数可配置模式。

这里我就不做演示了,当是大家的课下作业了。

0x06 总结

本文结合了一个实例讲解了POC的6步走。具体6步有:1.获取漏洞的详情,明确漏洞受影响的版本。2.分析漏洞如何产生并且理解其验证和利用的方式。3.搭建漏洞环境,尝试复现漏洞。4.明确编写语言。5.结合漏洞原理编写POC。6.增强POC的适用性。本文我们学习了如何系统化编写POC,希望大家回去自己尝试分析一下这个zzcms的其他漏洞然后独立编写POC。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180605G08OA500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券