視線 気づいてる?気づいてる?
获取网址的CMS
使用方法
from Langzi_Api.GET_CMS.get_cms import get_url_cms
res = get_url_cms(url='http://www.langzi.fun')
传入的唯一参数是url网址。
返回对象
print res
>>> 'hexo'
识别成功返回CMS名,识别失败则返回None
获取网址的标题,内容,web服务
使用方法
from Langzi_Api.GET_URLS.get_urls import Get_Info
Infos = Get_Info(url='http://www.langzi.fun')
res = Infos.get_infos()
传入的唯一参数是url网址。
返回对象
print res['url']
print res['title']
print res['content']
print res['service']
>>>http://www.langzi.fun
>>>Langzi - Never Setter 永不将就 - 致力于Python开发网络安全工具,分享Python底层与进阶知识,实现编程黑客工具的原理与教学,编写漏洞扫描器,白帽子渗透测试做培训整理
>>>DOCTYPEhtmlhtmlclassthemenextmuseusemotionlangzhHansheadmetacharsetU省略.....
>>>None
分别依次返回网址,标题,网页内容,web服务器。如果获取失败则返回None。
获取网址的全部友链
使用方法
from Langzi_Api.GET_URLS.get_urls import Get_Info
urll = Get_Info(url='http://www.langzi.fun')
res = urll.get_urls()
传入的唯一参数是url网址。
返回对象
print res
>>>['https://blog.csdn.net', 'http://www.langzi.fun', 'https://github.com']
返回一个列表,列表中的内容是网址的所有的友链,如果失败则返回None。(注意如果没有友链并非返回一个空的列表,而是返回None)
获取网址的全部url动态链接
可以调用sql注入模块中的提取链接方法
from Langzi_Api.GET_SQL.get_sql import get_links
res = get(url='http://www.langzi.fun')
传入一个网址,返回所有带动态参数的链接,类型是一个字典,如果没有就返回None。
返回结果中有两个值:
{
'html_links':'http://www.langzi.fun/123.html',
'id_links':'http://www.langzi.fun/as?id=5'
}
可以判断html_links或者id_links是否在字典的键当中,然后获取结果。
获取网址的ip地址
使用方法
from Langzi_Api.GET_URLS.get_urls import Get_Info
urll = Get_Info(url='http://www.langzi.fun')
res = urll.get_ip()
传入的唯一参数是url网址。
返回对象
print res
>>>127.0.0.1
返回一个IP地址,如果获取失败则返回None,获取的ip可能不准确。
获取ip的地理位置
使用方法
from Langzi_Api.GET_IP.get_ip import get_ip_address
res = get_ip_address('127.0.0.1')
传入唯一参数为IP地址。
返回对象
print res
>>>本机地址 CZ88.NET
返回一个地理位置。
获取ip开放的端口
适用方法
from Langzi_Api.GET_IP.get_ip import get_ip_ports
res = get_ip_ports('118.118.118.6')
传入唯一参数为IP地址。
返回对象
print res
>>> [80,8080,3389]
返回对象是一个列表,列表内容是开放的端口,如果扫描失败则返回None。
获取网址的备份压缩文件
使用方法
from Langzi_Api.GET_BACKUP.get_backup import get_backup_file
res = get_backup_file(urlx='http://www.langzi.fun')
传入唯一参数为url地址,注意这里使用的是urlx。
返回对象
print res
>>>['http://www.langzi.fun/langzi.rar:360M']
返回对象是一个列表,内容是扫描出来的文件网址,如果没有扫描出来就返回None。
数据库服务弱口令测试
from Langzi_Api.BRUTE_DATA.brute_data import *
res = brute_ftp(ip='127.0.0.1',username='root',password='root',port=21)
print res
res = brute_mssql(ip='127.0.0.1',username='root',password='root',port=1443)
print res
res = brute_mysql(ip='127.0.0.1',username='root',password='root',port=3306)
print res
res = brute_oralce(ip='127.0.0.1',username='root',password='root',port=1521)
print res
res = brute_postql(ip='127.0.0.1',username='root',password='root',port=5432)
print res
res = brute_ssh(ip='127.0.0.1',username='root',password='root',port=22)
print res
res = brute_smb(ip='127.0.0.1',username='root',password='root',port=445)
print res
传入ip,端口号(数字类型,可以不设置,用系统默认),用户名,密码。
源代码中port有设置默认值,所以传递参数的时候可以不加上port的值,这样就可以循环导入IP自动化批量检测弱口令。
在Langzi_Api 的 init 文件中有设置了默认的字典,除了系统级别的字典外,额外配属了mysql,mssql,oracle用户名密码。这样也就意味着导入Langzi_Api后可以使用默认的字典。
# coding:utf-8
system_user_list=['root','ubuntu']
system_passwords_list=['Passw0rd','admin123!@#','admin123','admin@123','admin#123','root','123456','password','12345','1234','root','123','qwerty','test','1q2w3e4r','1qaz2wsx','qazwsx','123qwe','123qaz','0000','oracle','1234567','123456qwerty','password123','12345678','1q2w3e','abc123','okmnji','test123','123456789','postgres','q1w2e3r4','a123456','a123456789','111111','123123','woaini1314','zxcvbnm','qq123456','abc123456','123456a','123456789a','000000','iloveyou']
oracle_user_list = ['sys', 'system', 'sysman', 'scott', 'aqadm', 'Dbsnmp']
oracle_password_list = ['', 'manager', 'oem_temp', 'tiger', 'aqadm', 'dbsnmp']
mysql_user_list = ['root']
mysql_password_list = ['admin123!@#', 'test123', 'qazwsx', 'zxcvbnm', 'admin12345', 'admin123', 'qwerty', '1q2w3e', 'mysql', '123qaz', '123456', 'postgres', 'admin@123', '1234567', 'abc123456', 'okmnji', '1qaz2wsx', 'test', 'qq123456', '1234', 'woaini1314', '0000', '123456qwerty', 'password123', '123456789a', '12345678', 'Passw0rd', '123', 'admin#123', '123456789', 'password', '1q2w3e4r', 'a123456789', '000000', '123123', 'root', 'q1w2e3r4', '111111', '123456a', 'iloveyou', 'admin1234', 'abc123', 'oracle', 'a123456', '12345', '123qwe']
mssql_user_list = ['sa']
mysql_password_list = ['Sa123','Sa123456','Sa1234','admin123!@#', 'test123', 'qazwsx', 'zxcvbnm', 'admin12345', 'admin123', 'qwerty', '1q2w3e', 'mysql', '123qaz', '123456', 'postgres', 'admin@123', '1234567', 'abc123456', 'okmnji', '1qaz2wsx', 'test', 'qq123456', '1234', 'woaini1314', '0000', '123456qwerty', 'password123', '123456789a', '12345678', 'Passw0rd', '123', 'admin#123', '123456789', 'password', '1q2w3e4r', 'a123456789', '000000', '123123', 'root', 'q1w2e3r4', '111111', '123456a', 'iloveyou', 'admin1234', 'abc123', 'oracle', 'a123456', '12345', '123qwe']
返回对象
成功则返回数据,不成功则返回None
>>>None
>>>None
>>>127.0.0.1:3306|root:root
>>>None
>>>None
>>>None
>>>None
未授权漏洞批量测试
IP 篇
批量测试漏洞来源于IOSMOSIS SCAN3.0 提供功能,并且在其基础上进行全面整改,准确率提高。
from Langzi_Api.BRUTE_VLUN.brute_vlun import get_ip_vlun
res = get_ip_vlun(ip='127.0.0.1')
传入唯一参数为ip地址。返回对象为一个列表,例子[‘127.0.0.1:Mongodb数据库未授权访问’,……],如果没有检测到漏洞则返回None。
具体验证漏洞种类如下:
- Mongodb数据库未授权访问漏洞
- Redis数据库未授权访问漏洞
- Redis弱口令漏洞
- ZooKeeper未授权访问漏洞
- Elasticsearch未授权访问漏洞
- Memcache未授权访问漏洞
- IIS短文件名漏洞
- IIS WebDav任意文件上传漏洞
- Tomcat远程部署弱口令漏洞
- Tomcat远程部署弱口令漏洞
- Docker未授权访问漏洞
- CouchDB未授权访问漏洞
- Jenkins未授权访问漏洞
- ActiveMQ任意文件上传漏洞
- WebServer任意文件读取漏洞
- PHPmyadmin弱口令漏洞
- HTTP.sys远程代码执行漏洞
- .NET Padding Oracle信息泄露
- Resin viewfile远程文件读取漏洞
- Tomcat example 应用信息泄漏漏洞
- Jboss 认证绕过漏洞
- JBoss后台上传漏洞
- Weblogic弱口令漏洞
- JOnAS弱口令漏洞
- Weblogic CVE-2018-2628
- Glassfish弱口令漏洞
- Wordpress弱口令漏洞
- Axis2任意文件读取漏洞
- Axis2弱口令漏洞
- 服务器探针信息泄露
- DNS域传送漏洞
URL 篇
from Langzi_Api.BRUTE_VLUN.brute_vlun import get_url_vlun
res = get_ip_vlun(url='http://www.langzi.fun')
同上,集成了大量的未授权漏洞自动测试。
检测列表如下:
- 服务器探针信息泄露
- CouchDB未授权访问漏洞
- Jenkins未授权访问漏洞
- Tomcat example 应用信息泄漏漏洞
- Resin viewfile远程文件读取漏洞
- JBoss后台上传漏洞
- Weblogic弱口令漏洞
- Tomcat远程部署弱口令
- Tomcat后台管理弱口令
- Wordpress弱口令
- PHPmyadmin弱口令
SQL注入自动化检测
URL漏洞检测目前只检测SQL注入,一开始是移植了sqlmap的50%检测功能,后来发现没有优化好,索性直接封装了整个python+sqlmap,提供特定的api返回数据,扫描注入成功率100%。具体介绍移步到SQL批量扫描注入
使用方法也很简单:
from Langzi_Api.GET_SQL.get_sql import get_url_sql
res = get_url_sql(url='http://www.langzi.fun',level=1)
传入的参数第一个是url,第二个是注入等级
level 1. 普通的注入测试
level 2. post和cookie注入测试
level 3. 加载脚本简单测试
level 4. 加载脚本对post和cookie测试
level 5. 加载脚本对高level测试,设置随机请求头等等优化
levek 6. 同时对前面5种一起进行验证
同上,返回对象如果不存在注入就返回None,存在注入就返回一个字典,内容如下:
{'dbms': 'MySQL >= 5.5',
'url':'http://www.langzi.fun/lan?id=1',
'title': 'AND boolean-based blind - WHERE or HAVING clause', 'parameter': 'id (GET)',
'db': 'MySQL',
'system': 'Windows',
'application': 'PHP 5.3.29, Apache 2.4.10',
'type': 'boolean-based blind',
'Payload': "id=1' AND 7602=7602 AND 'dvxN'='dvxN"}
分别返回注入点,注入方式,数据库类型,注入详细方式等等。
使用的脚本位置在
F:\CODE\Langzi_Api\GET_SQL\lib\sqlmap\tamper\space2comment.py
换成绕过安全狗的话,直接更换space2comment.py这个文件的内容。
XSS自动化检测
使用方法:
from Langzi_Api.GET_XSS.get_xss import get_xss
a = get_xss('http://127.0.0.1/xss/level2.php?keyword=ad&submit=%E6%90%9C%E7%B4%A2',level=1)
print a
如果存在xss则返回结果:
{'payload': '</script>"><script>prompt(1)</script>', 'value': 'keyword'}
同样,如果不存在则返回None。
传入两个参数,动态url和扫描等级,就像SQL注入一样需要设置扫描等级,不同等级使用的字典不一样,一共4个等级。
辅助功能
不同颜色打印效果
from Langzi_Api.TOOLS.get_tools import *
print_w(666)
print_g('你好啊')
不同后缀代表不同的颜色,目前支持如下:
print_w(x):
'''白色'''
print_r(x):
'''红色'''
print_g(x):
'''绿色'''
print_y(x):
'''黄色'''
print_b(x):
'''蓝色'''
print_p(x):
'''紫色''‘
日志功能:
from Langzi_Api.TOOLS.get_tools import log
log('xafafa3d3ada')
会自动在当前目录下保存log.txt保存传入的参数,前面有时间。在构架的时候可以把异常状态写入日志文件。
编码
from Langzi_Api.TOOLS.get_tools import CODING
cod = CODING(data='okd666')
print(cod.ascii_decode())
目前支持编码内容如下
cod = CODING(data='okd666')
cod.ascii_decode()
cod.dex_decode()
cod.url_decode()
cod.base64_decode()
cod.md5_decode()
cod.sha1_decode()
当然还提供了一个模糊编码自动转换,使用方法如下:
cod = CODING(data='okd666')
res = cod.chinese_decode()
for x in res:
print x
功能是把传入的莫名其妙的字符串尝试转换成中文,返回对象是一个列表。