本工具由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

最低0.47元/天 解锁文章
1015

被折叠的 条评论
为什么被折叠?



