轻型的漏洞扫描工具,基于python开发(已加密)

本工具由python环境开发,目前只支持扫描PHP开发环境的网站,漏洞类型较为广泛,方便快速判断和修复,若要具体扫描来判断漏洞类型,请使用专业漏洞扫描工具进行扫描!

运行需要安装requests,bs4,dnspython库,下方为安装方法

pip install requests

pip install bs4

pip install dnspython

工具代码如下

import requests #line:1:import requests
from bs4 import BeautifulSoup #line:2:from bs4 import BeautifulSoup
from requests .exceptions import Timeout #line:3:from requests.exceptions import Timeout
import time #line:4:import time
import re #line:5:import re
import socket #line:6:import socket
import dns .resolver #line:7:import dns.resolver
import ipaddress #line:8:import ipaddress
def print_blue (O0O0O00O000O0OO0O ):#line:10:def print_blue(text):
    print (f"\033[94m{O0O0O00O000O0OO0O}\033[0m")#line:11:print(f"\033[94m{text}\033[0m")
def print_red (O00OO0OOO0000O000 ):#line:13:def print_red(text):
    print (f"\033[91m{O00OO0OOO0000O000}\033[0m")#line:14:print(f"\033[91m{text}\033[0m")
print_blue ("轻型Web漏洞检测脚本")#line:16:print_blue("轻型Web漏洞检测脚本")
print_red ("晓凤网络安全团队出品")#line:17:print_red("晓凤网络安全团队出品")
def get_server_ip (O0OOOO0OO0O00O000 ):#line:19:def get_server_ip(url):
    try :#line:20:try:
        OO0O00OO0O0OO0O00 =O0OOOO0OO0O00O000 .split ("//")[-1 ].split ("/")[0 ]#line:21:hostname = url.split("//")[-1].split("/")[0]
        O0O0OO00O000000OO =socket .gethostbyname (OO0O00OO0O0OO0O00 )#line:22:ip_address = socket.gethostbyname(hostname)
        return O0O0OO00O000000OO #line:23:return ip_address
    except socket .error as O000OO000O00000OO :#line:24:except socket.error as e:
        print_red (f"错误: {O000OO000O00000OO}")#line:25:print_red(f"错误: {e}")
        return None #line:26:return None
def check_port_open (O0O00O00O0O000O00 ,O00OOOO0O0000O0OO ):#line:28:def check_port_open(ip, port):
    try :#line:29:try:
        O0O0O0000000O0O0O =socket .socket (socket .AF_INET ,socket .SOCK_STREAM )#line:30:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        O0O0O0000000O0O0O .settimeout (1 )#line:31:sock.settimeout(1)
        OO0OO000OO000000O =O0O0O0000000O0O0O .connect_ex ((O0O00O00O0O000O00 ,O00OOOO0O0000O0OO ))#line:32:result = sock.connect_ex((ip, port))
        O0O0O0000000O0O0O .close ()#line:33:sock.close()
        return OO0OO000OO000000O ==0 #line:34:return result == 0
    except Exception as OOO0000OOOO0O0000 :#line:35:except Exception as e:
        print_red (f"检查端口 {O00OOOO0O0000O0OO} 时发生错误: {OOO0000OOOO0O0000}")#line:36:print_red(f"检查端口 {port} 时发生错误: {e}")
        return False #line:37:return False
def check_firewall (OO0O0O00O00OO0OOO ):#line:39:def check_firewall(ip):
    OOO000OOO00O0OOO0 =[135 ,137 ,138 ,139 ,445 ,3389 ]#line:40:ports = [135, 137, 138, 139, 445, 3389]
    OOOO00OO0000O0O00 =all (check_port_open (OO0O0O00O00OO0OOO ,OOO0O0OOOO00O0000 )for OOO0O0OOOO00O0000 in OOO000OOO00O0OOO0 )#line:41:all_ports_open = all(check_port_open(ip, port) for port in ports)
    return not OOOO00OO0000O0O00 #line:42:return not all_ports_open
def check_sql_injection (O00OO000OOO0O0000 ):#line:44:def check_sql_injection(url):
    OO0O0OOOOOOO0OO00 =["' OR '1'='1","' OR '1'='1' --","1' UNION SELECT * FROM users"]#line:45:payloads = ["' OR '1'='1", "' OR '1'='1' --", "1' UNION SELECT * FROM users"]
    for O000O0OOOOOOO0OOO in OO0O0OOOOOOO0OO00 :#line:46:for payload in payloads:
        try :#line:47:try:
            OO00O0OO000O0O0OO =requests .get (f"{O00OO000OOO0O0000}?id={O000O0OOOOOOO0OOO}",timeout =10 )#line:48:response = requests.get(f"{url}?id={payload}", timeout=10)
            if O000O0OOOOOOO0OOO in OO00O0OO000O0O0OO .text :#line:49:if payload in response.text:
                print_red (f"SQL注入漏洞可能存在: {O000O0OOOOOOO0OOO}")#line:50:print_red(f"SQL注入漏洞可能存在: {payload}")
                return #line:51:return
        except requests .exceptions .RequestException as O00OO0OO0O00OO000 :#line:52:except requests.exceptions.RequestException as e:
            print_red (f"SQL注入测试时无法访问URL: {O00OO0OO0O00OO000}")#line:53:pr
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值