广州做淘宝的化妆品网站,广东东莞招工信息最新招聘,seo与网站建设,wordpress双语模板目录 Python开发相关知识点本篇文章涉及知识点演示案例:IPWhois系统指纹获取代码段-外网CDN子域名端口扫描交互代码段-外网IP计算机名存活主机端口扫描代码段-内网Py格式解析环境与可执行程序格式转换-Pyinstaller 涉及资源#xff1… 目录 Python开发相关知识点本篇文章涉及知识点演示案例:IPWhois系统指纹获取代码段-外网CDN子域名端口扫描交互代码段-外网IP计算机名存活主机端口扫描代码段-内网Py格式解析环境与可执行程序格式转换-Pyinstaller 涉及资源 网上有一些渗透框架网上经常有些平台它上面有在线的插件加载进去可以扫描我们学会这些东西之后就可以在上面按照它的格式去书写exp然后在工具框架里面把这个功能导入进去相当于丰富自己的漏洞库
Python开发相关知识点
1.开发基础环境配置说明 Windows10Pycharm
2.Python开发学习的意义 学习相关安全工具原理 掌握自定义工具及拓展开发 解决实战中无工具或手工麻烦批量化等情况 在二次开发Bypass日常任务批量测试利用等方面均有帮助 如WAF上面的绕过免杀里面也涉及到python可以用python生成一些免杀的payloadSRC批量收集并利用AWD批量利用获取FLAGCTF加解密脚本等
3.本篇文章涉及的技术方向 Socket爬虫正则表达式框架开发等
本篇文章涉及知识点
Socket部分技术进程命令执行交互参数执行NMAP工具模块使用异常处理等
我们先目标爬取爬取我们要测试的目标把这个目标进行域名和IP的收集会涉及到子域名和端口信息子域名有很多但是有些子域名它服务是没有的看它端口有没有开放来判定它服务有没有把符合要求的WEB服务和中间件放到漏洞检测工具里面
批量扫和批量提交可以用python开发出来 我们要写出优化脚本出来漏洞检测技术也是耗时间的因为大部分是HTTP在请求不会涉及到底层的所以大部分漏洞检测工具都能写出来只要你明白漏洞怎么检测和利用没有任何问题
爬虫请求带入数据登录进去然后打开相应页面写入相关数据都是可以帮你实现的
python能解决手工批量问题
演示案例:
IPWhois系统指纹获取代码段-外网
一般有些模块是自带的有的需要你第三方去下载就是你安装好py它就有socket,os,time,sys还有一些第三方的就需要你单独去安装例如whois 使用pip去安装库文件我们找到开发环境的地方python解析器那里script目录下是有个pip文件的 我们这边也可以更换源提高下载的速度有了库之后我们就可以使用相关的功能 搜索关键字域名指向IP网上都有相应思路的
import socket#域名反查IP功能
ipsocket.gethostbyname(www.xiaodi8.com)
print(ip)我们攻击网站一般获取目标然后判断CDN信息
判断CDN信息经常使用nslookup命令这个命令是windows和linux通用的像这种的就是没有使用cdn的这里解析的IP地址只有一个 我们换一个有cdn的网站看一下它对应的IP地址就多了很多 这个就是有cdn的域名指向的都不一样 使用nslookup域名解析地址发现非权威应答有多个解析IP地址说明有cdn
有信息收集脚本才会有漏洞利用
多地ping判断是否有cdn涉及到爬虫技术请求官方服务器是否有多个IP通过点数进行判断超过10个点说明解析出多个IP地址 2、识别目标是否存在CDN(内容分发网络)采用nslookup执行结果进行返回IP解析数目判断“.”的数量利用python去调用系统命令# 使用 os.system 方法执行的返回结果是不能进行操作的
# cdn_data os.system(nslookup www.xiaodi8.com) # nslookup 手工解析域名
# 使用os.popen() 方法执行系统命令
import os
cdn_data os.popen(nslookup www.xiaodi8.com)
cdn_datas cdn_data.read() # read()读取返回的结果
x cdn_datas.count(.) # count()方法统计某个字符串出现的数量,统计有多少的点来判断有多少个ip如果有多个ip都是不同的那这个域名就是开启了CDN
print(cdn_datas)
print(x)
if x 10: # CDN 不存在的一般是10个点以内大于这个数就是存在服务器有两这个点这里的服务器是未知所以少了两个点print(CDN存在)
else:print(CDN不存在)我们得到IP地址之后要进行IP端口扫描 端口扫描的三种方法 1.原生自写socket协议tcpudp扫描优点啥都不用干不用装库也不用干啥就直接写缺点是复杂要一个个写
2.调用第三方模块等扫描优点写法比第一种相对简单写起来也比较方便内网里面采用第二种
3.调用系统工具脚本执行要打包工具到脚本同级目录执行的时候脚本才能找到而且对方在使用脚本的时候不知道有没有装这个工具优点是一个工具命令执行就完事了缺点就是工具要打包到脚本里面去
先获取到网站域名的IP地址使用socket网络编程跟对方建立连接再发送数据探针到端口是否存在
# 1.原生自写socket协议tcp,udp扫描
# 创建一个socket对象
import socket # 网络编程模块
server socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 常见的计算机端口
ports{21,22,135,443,445,80,1433,3306,3389,1521,8000,8888,7002,7001,8080,9090,8089,4848}
for i in ports:# 连接到服务端result server.connect_ex((47.75.212.155,int(i))) # 这里面一般是IP地址也可以写域名如果他有自带域名识别IP地址就可以。指定ip 和连接端口,int()把字符转换成整数if result 0:print(f连接成功,端口{i}|open开启)else:print(f连接失败,端口{i}|close关闭)端口扫描肯定是扫描一些有意义的不可能每个端口都有意义有些端口服务压根没有意义推荐扫描常见端口保持效率并且有用
扫描的速度问题可以优化代码然后多线程去测试的
它是在和脚本建立连接然后全部请求再返回结果所以有点慢
whois查询是自带的可以利用第三方库进whois查询也可以利用网上接口查询
from whois import whois # 第三方的域名查询模块 安装pip install python-whois
# 2. 调用第三方模块等进行扫描
# whois 查询
# 第三方库whois查询也可以利用网上接口查询https://whois.chinaz.com/
# def whois_check(url):
data whois(www.xiaodi8.com)
print(data)第三方库信息是不如网上接口whois查询全的所以我们要获取whois信息的话尽量用网上接口
CDN子域名端口扫描交互代码段-外网
我们渗透测试里面经常做的一件事就是子域名查询
1.利用字典加载爆破进行查询只要你字典够大那就没有找不到的域名所以我们用那种方式都可以两种方式都用都行
2.利用 bing 或第三方接口进行查询优点是查询的速度较快但是数据没有字典爆破的好因为字典多因为有些接口网上查不到网上域名没有爬取到这个接口所以你用这个接口去查可能查不到
#子域名查询
import time # 时间模块
for zym_data in open(./子域名字典/dic.txt): # open() 方法读取文件zym_data zym_data.replace(\n,) # replace() 字符串的替换 将 \n 替换为空,就是把换行干掉因为打印出来的数据多了很多空行url zym_data .xueersi.com # 拼接成完整的域名就是查询xueersi.com的子域名try: # 异常处理因为如果子域名不存在gethostbyname() 查询会报错ip socket.gethostbyname(url) # socket.gethostbyname() 查询指定域名的ip地址如果能查到就说明这里子域名是存在的print(f{url} - {ip})time.sleep(0.1) # time.sleep() 延迟方法单位秒 这个不是必须的是为了脚本运行的更好把这个time模块载入进去except Exception as e:pass # pass 没啥特殊的意义就是用来补全语法不让这里是空报错的# print(ferror,{url}子域名不存在)我们把脚本写好肯定是让别人用的你自己写肯定知道怎么用但是别人不知道所以我们一般需要对代码优化一下
import os
import socket
import time
from whois import whois
import sys # sys模块提供了一系列有关Python运行环境的变量和函数,如如sys.argv函数实现从程序外部向程序传递参数sys.platform函数用于获取当前系统平台。def ip_check(url):ip socket.gethostbyname(url)print(ip) # 47.75.212.155
def cdn_check(url):cdn_data os.popen(fnslookup {url})cdn_datas cdn_data.read()x cdn_datas.count(.)print(cdn_datas)print(x)if x 10:print(CDN存在)else:print(CDN不存在)
3、端口扫描1.原生自写socket协议tcp,udp扫描2.调用第三方模块等进行扫描3.调用系统工具脚本执行扫描# 1.原生自写socket协议tcp,udp扫描
# 创建一个socket对象
def port_check(url,ports[21,22,135,443,445,80,1433,3306,3389,1521,8000,8888,7002,7001,8080,9090,8089,4848]):server socket.socket(socket.AF_INET,socket.SOCK_STREAM)for i in ports:result server.connect_ex((url,int(i)))if result 0:print(f连接成功,端口{i}|open开启)else:print(f连接失败,端口{i}|close关闭)data whois(url)print(data)def zym_check(url):urls url.replace(www.,) for zym_data in open(./子域名字典/dic.txt):zym_data zym_data.replace(\n,)url zym_data urlstry: ip socket.gethostbyname(url) print(f{url} - {ip})time.sleep(0.1)except Exception as e:pass# print(ferror,{url}子域名不存在)if __name__ __main__: # 这里里面的代码是模块内部的测试代码外部调用是不会执行的# port_check(www.xiaodi8.com) # 查询开放的端口# ip_check(www.xiaodi8.com) # 域名反查ip# cdn_check(www.xiaodi8.com) # cdn查询# whois_check(www.xiaodi8.com) # 域名信息查询# zym_check(www.xueersi.com) # 调用子域名查询函数把要查询的域名传入使用sys模块让我们写的脚本在程序外部也可以调用# 使用了sys模块的argv方法后我们就可以在程序外部给程序传参如在cmd命令提示符中输入python.exe的路径 当前的程序路径 参数1 参数2# sys.argv[0] # 表示程序自身的文件路径# sys.argv[1] # 表示程序的第一个参数# sys.argv[2] # 表示程序的第二个参数try:check sys.argv[1]urls sys.argv[2]print(程序运行中...)if check all:port_check(urls) # 查询开放的端口ip_check(urls) # 域名反查ipcdn_check(urls) # cdn查询whois_check(urls) # 域名信息查询zym_check(urls) # 调用子域名查询函数把要查询的域名传入except Exception as e:print(请在程序外部传入两个参数)这个脚本是单线程不是多线程
IP计算机名存活主机端口扫描代码段-内网
在内网里面我们会扫描内网存活主机、端口情况、操作系统等信息就不能不提到python的nmap模块
下面的代码相当于调用当前的nmap工具对内网进行探针这种不是我们想要的因为nmap工具很大虽然它很简单一条命令就解决完全是说核心功能在工具上面不是在你的脚本代码上 python集成有nmap、msf还有各种各样安全工具的模块它都集成有所以你用python想写什么功能就可以把这个模块加载进去写
nmap工具的功能它在python里面有模块用的直接用这个模块相当于你调用了这个工具就不需要我们把工具的整个目录搬进去了
内网主机信息探针有三种扫描方式
1.原生利用ping进行获取
2.原生利用icmp,tcp,udp等协议获取
3.利用第三方模块库nmap等加载扫描获取
import nmap
nm nmap.PortScanner()
datanm.scan(www.xiaodi8.com,80,8888,-sV)
print(data)使用nmap模块进行扫描import nmap
def nmappascan():nm nmap.PortScanner(nmap_search_path(nmap, rF:\网安软件\Nmap\nmap.exe))try:# -T4指定扫描过程中使用的时序模板总共6个等级0 - 5等级越高扫描速度越快但是容易被防火墙和入侵检测设备发现。在扫描中应选择合适的等级。# 使用-f 选项可以对 nmap 发送的探测数据包进行分段。这样将原来的数据包分成几个部分目标网络的防御机制例如包过滤、防火墙等在对这些数据包进行检测的时候就会变得更加困难data nm.scan(hosts192.168.100.0/24,arguments-T4 -F)# print(nm.all_hosts()) # all_hosts()#扫描的所有主机print(nm.csv()) # csv()函数返回值是一个CSV(逗号分隔文件格式)的输出。如果想看的更清楚一点可以使用print输出csv()的内容。# print(data)except Exception as err:print(error)if __name__ __main__:nmappascan()Py格式解析环境与可执行程序格式转换-Pyinstaller
Pyinstaller安装与介绍https://blog.csdn.net/qq_62789540/article/details/122482723
安装pip install pyinstaller 更新pip install --upgrade pyinstaller
然后在pthon项目文件的根目录打开cmd运行命令
pyinstaller.exe -F test_neiwang.py生成的文件在这个目录 执行以下跟python代码执行是一样的 所以这里解决了执行环境的问题在linux上安装完Pyinstaller之后它会自己识别格式的
涉及资源
pycharm工具包https://www.jb51.net/softs/598504.html