Langzi_Api重构指南[已作废]

視線 気づいてる?気づいてる?

获取网址的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。

具体验证漏洞种类如下:

  1. Mongodb数据库未授权访问漏洞
  2. Redis数据库未授权访问漏洞
  3. Redis弱口令漏洞
  4. ZooKeeper未授权访问漏洞
  5. Elasticsearch未授权访问漏洞
  6. Memcache未授权访问漏洞
  7. IIS短文件名漏洞
  8. IIS WebDav任意文件上传漏洞
  9. Tomcat远程部署弱口令漏洞
  10. Tomcat远程部署弱口令漏洞
  11. Docker未授权访问漏洞
  12. CouchDB未授权访问漏洞
  13. Jenkins未授权访问漏洞
  14. ActiveMQ任意文件上传漏洞
  15. WebServer任意文件读取漏洞
  16. PHPmyadmin弱口令漏洞
  17. HTTP.sys远程代码执行漏洞
  18. .NET Padding Oracle信息泄露
  19. Resin viewfile远程文件读取漏洞
  20. Tomcat example 应用信息泄漏漏洞
  21. Jboss 认证绕过漏洞
  22. JBoss后台上传漏洞
  23. Weblogic弱口令漏洞
  24. JOnAS弱口令漏洞
  25. Weblogic CVE-2018-2628
  26. Glassfish弱口令漏洞
  27. Wordpress弱口令漏洞
  28. Axis2任意文件读取漏洞
  29. Axis2弱口令漏洞
  30. 服务器探针信息泄露
  31. DNS域传送漏洞

URL 篇

from Langzi_Api.BRUTE_VLUN.brute_vlun import get_url_vlun
res = get_ip_vlun(url='http://www.langzi.fun')

同上,集成了大量的未授权漏洞自动测试。

检测列表如下:

  1. 服务器探针信息泄露
  2. CouchDB未授权访问漏洞
  3. Jenkins未授权访问漏洞
  4. Tomcat example 应用信息泄漏漏洞
  5. Resin viewfile远程文件读取漏洞
  6. JBoss后台上传漏洞
  7. Weblogic弱口令漏洞
  8. Tomcat远程部署弱口令
  9. Tomcat后台管理弱口令
  10. Wordpress弱口令
  11. 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

功能是把传入的莫名其妙的字符串尝试转换成中文,返回对象是一个列表。

坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%