推荐一款Web渗透测试数据库
PentestDB
1 介绍
本项目用于提供渗透测试的辅助工具
、资源文件
1.1 辅助工具
提供轻量级的易扩展的工具,可以快速编写exploit、添加漏洞验证/扫描规则、添加指纹规则、爆破规则等;包含以下功能:
-
Exploit系统。
易扩展的exploit系统,能够使用API快速编写exploit,能够批量执行exploit -
子域名爆破。
爆破子域名,使用域传送、DNS爆破、GoogleHacking进行子域名爆破 -
C段扫描。
C段扫描,支持生成html格式输出文件 -
服务端应用识别。
识别CMS类型、Web服务器、操作系统、WEB中间件等 -
URI敏感资源爆破。
爆破WEB敏感文件,整站备份、配置备份、敏感文件等 -
社工密码字典生成。
根据社工信息生成密码爆破字典 -
Google Hacking。
GoogleHacking,生成URL字典 -
编解码等功能。
支持非常丰富的编解码方式,方便做payload编码
1.2 资源文件
各种渗透测试常用的资源文件,包括各种爆破字典
、exploit
、webshell
、攻击payload
等
2 安装
从这里下载最新版本,或使用命令
git clone https://github.com/alpha1e0/pentestdb.git
clone到本地
PentestDB支持Windows/Linux/MacOS,需使用python 2.6.x 或 2.7.x运行
2.1 解决lxml依赖
项目中的脚本文件依赖于lxml
linux系统一般默认安装lxml,如果没有可通过以下方式安装:
pip install lxml
apt-get install lxml
yum install lxml
windows可通过以下方式安装lxml:
- 到这里找到对应系统的安装包,下载到本地
- 安装安装包,pip install package.whl
2.2 解决nmap依赖
项目中的C段扫描依赖于nmap扫描器
到这里下载nmap相应版本
在windows下需要设置环境变量,让系统能够找到nmap.exe。
3 使用
3.1 常用脚本
项目中的python脚本提供用有用的渗透辅助功能,根目录下的pen.py为脚本入口,另外script目录下也有其他一些脚本。
3.1.1 Exploit系统
pen.py
的exploit子命令提供了exploit模块相关操作,exploit模块是一个轻量级的exploit框架,可以编写各种web漏洞的exploit:
- 搜索exploit信息
- 增加、删除、修改exploit信息
- 执行某个exploit
- 搜索并批量执行exploit
exploit保存在项目根目录下的exploit目录下
例如:
# 列举、搜索、注册、更新、删除
pen.py exploit -l
pen.py exploit -q appName:joomla
pen.py exploit --register exploit
pen.py exploit --update cms_joomla_3_4_session_object_injection.py
pen.py exploit -d "Joomla 1.5~3.4 session对象注入漏洞exploit"
pen.py exploit --detail "Joomla 1.5~3.4 session对象注入漏洞exploit"
# 执行exploit
pen.py exploit -e cms_joomla_3_4_session_object_injection.py -u http://127.0.0.1:1234 --attack
pen.py exploit -s appName:joomla -u http://127.0.0.1:1234 --verify
pen.py exploit -s appName:joomla -u @url.txt
注:有关exploit模块的详细信息请参考exploit/readme.md
3.1.2 服务端应用识别
pen.py
的service子命令提供了服务端应用识别的功能,能够识别服务器信息,包括:
操作系统 web服务器 web中间件 CMS等
例如:
pen.py service http://xxx.com
# 开启CMS识别加强模式
pen.py service http://xxx.com --cms
3.1.3 社工密码字典生成
pen.py
的password子命令提供了根据社工信息生成密码字典的功能,能够设置不同关键字生成密码字典
该模块可通过以下要素组合生成密码:
- 全名,--fullname,名字中各个字中间加空格,例如"lin zhi ling"
- 昵称,--nickname
- 英文名称,--englishname
- 伴侣名字,--partnername
- 生日,--birthday
- 手机号,--phone
- QQ号,--qq
- 公司名称,--company
- 域名,--domian
- 老密码,--oldpasswd
- 关键字,--keyword
- 关键数字,--keynumbers
例如:
pen.py passwdgen --fullname "lin zhi ling" --birthday 1980-1-1 --phone 12344445555 --qq 34233888 -o password.txt
3.1.4 URI敏感文件爆破
pen.py
的uribrute子命令提供了URI敏感文件爆破,URI爆破字典生成的功能
例如:
# 生成web打包备份、敏感文件字典,后缀名使用jsp和jspx,自定义关键字xxx,指定输出结果dict.txt
pen.py uribrute -t webbak,interestfile -e jspx,jsp --keyword "xxx" -o dict.txt
# 爆破目标站点,使用safeurl bypass waf
pen.py uribrute -b -u http://127.0.0.1/discuz/6.0/ --safeurl "http://127.0.0.1/discuz/6.0/"
# 爆破url.txt中的所有站点,爆破敏感文件,自定义notfound页面关键字为“找不到页面”
pen.py uribrute -b -u @urls.txt -t interestfile --notfound "找不到页面"
3.1.5 Google Hacking功能
pen.py
的search子命令提供了Google Hacking的功能,目前支持以下搜索引擎:
- baidu
- bing
例如:
pen.py search "inurl:viewthread.php" -s 10 -o tmp.txt
# --unique设定域名唯一,相同域名只记录一个搜索结果
pen.py search "inurl:viewthread.php" -s 10 --unique -o tmp.txt
3.1.6 子域名爆破
pen.py
的domain子命令提供了子域名爆破功能:
该模块使用3种技术进行子域名爆破:
- 域传送漏洞检测、利用
- DNS字典爆破
- Google Hacking搜索
注:支持输出到html文件,使用*-o xxx.html*做为输出文件即可
例如:
# 使用域传送技术、Google Hacking对aaa.com 进行子域名爆破
pen.py domamin aaa.com -t zg
# 使用字典爆破子域名,自定义字典文件domain_large.txt,同时指定爆破顶级域名
pen.py domain aaa.com -t d --dict domain_large.txt --topdomian
3.1.7 C段扫描
pen.py
的subnet子命令提供了C段扫描功能。
注:支持输出到html文件,使用*-o xxx.html*做为输出文件即可
例如:
pen.py subnet test.com -o result.html
3.1.8 编码
pen.py
的encode子命令提供了编码的功能
编码方式*-t/--type*支持:
url url-all hex decimal unicode unicode-all md5 sha base64 base32 html html-all php-chr utf7 utf7-all
其中**-all编码会编码所有字符包括非特殊字符
非ASCII编码*-m/--method*支持:
utf8 gbk gb2312 big5 utf16 utf7 等所有python支持的编码方式,具体请参考如下链接:
python支持的编解码格式
例如:
pen.py encode -t unicode "aaa=你好"
pen.py encode -t url-all -m gbk "id=你好"
pen.py encode -t md5 "aaaaaaaa"
3.1.9 解码
pen.py
的decode子命令提供了解码的功能,并提供非ASCII编码编码推测功能
解码方式*-t/--type*支持:
auto(默认) hex url unicode decimal base64 base32 html php-chr utf7
其中auto方式会自动检测url类型、hex类型的字符串并进行解码
非ASCII编码*-m/--method*支持:
utf8 gbk gb2312 big5 utf16 utf7 等所有python支持的编码方式,具体请参考如下链接:
python支持的编解码格式
例如:
pen.py decode -t base64 5ZOI5ZOI
pen.py decode -m utf8 aaa%E5%93%88%E5%93%88
pen.py encode -t hex "x61x61xe5x93x88xe5x93x88"
# 推测编码
pen.py decode -d "x61x61xe5x93x88xe5x93x88"
3.1.10 文件处理功能
pen.py
的file子命令提供了常用的文件操作,包括:文件查看、文件编码推断、文件类型转换、文件hash计算、文件图片隐藏(制作php图片木马)
使用*--list*查看支持的文件编码转换格式:
utf-32le utf-32le-bom utf-32 utf-32-bom utf-32be utf-32be-bom utf-16be utf-16be-bom utf-8 utf-8-bom utf-16 utf-16-bom utf-16le utf-16le-bom gbk gb2312 big5 ...
例如:
# 检测文件编码类型
pen.py file cmdb.jsp -d
# 计算文件hash
pen.py file cmdb.jsp --hash md5
# 以16进制方式查看文件
pen.py file cmdb.jsp@hex
# 将utf-8编码的文件test.txt转换为gbk编码的gbk.txt
pen.py file test.txt@utf8 -c gbk.txt@gbk
# 文件转换,转换为utf-16-bom类型文件(jsp/aspx的utf-16-bom类型文件可绕过一些安全软件)
pen.py file cmd.jsp -c dst.jsp@utf-16-bom
# 制作图片木马,会生成caidao_hiddenin_aa.jpg
pen.py file caidao.php --hidein aa.jpg
3.1.11 Mail账户验证/爆破
script/mail.py
提供简单的Mail账户验证、爆破功能:
例如:
# 验证/tmp/maillist.txt中的Mail账户
mail.py -c -a @/tmp/maillist.txt
# 爆破邮箱
mail.py -b -u @mail.txt -p @pass.txt
3.1.12 字典维护
script/wordlist.py
提供了字典文件维护的功能,包括:
- 将多个字典文件merge到数据库中
- 对每个字典项进行打分计算
- 按照评分高低导出字典文件
例如:
# 按照评分高低从数据库password.db中导出字典文件pass.txt,长度为100
wordlist.py -d pass.txt ../user-password/password/password.db -s 100
# 将字典文件test.txt merge 到数据库password.db中,重复项分值+1
wordlist.py -l test.txt ../user-password/password/password.db
3.2 user-passwd字典
password目录包含密码字典文件
user目录包含用户名字典文件
3.3 dns字典
dns爆破字典
3.4 directory字典
web目录爆破字典,详见相关目录readme.md文件
3.5 attack-payload
各种攻击payload字典,详见相关目录readme.md文件
3.6 webshell
webshell收集,详见相关目录readme.md文件
3.7 script
常用脚本
3.8 exploit
一些有用的exploit,详见相关目录readme.md文件
项目地址:https://github.com/alpha1e0/pentestdb
- Pandoc安装实现Markdown转PDF (CentOS6)
- String类replaceAll方法正则替换深入分析
- 微信硬件平台对接--蓝牙
- 初试git+github(linux环境)
- Raspberry PI Nginx 安装
- 微信支付-Java-SpringMVC基础一些代码支持
- 使用Kafka的High Level Consumer
- 微信公众号发送模板消息 Java实现。
- [Intellij IDEA]File size exceeds configured limit
- 那些年Struts 1.X 而今我还是不会
- 关于MySQL DNS解析探究之一:DNS解析确实在起作用
- 每一个程序员需要了解的10个Linux命令
- 实战案例 | 使用机器学习和大数据预测心脏病
- 关于JVM直接内存触发Full GC
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot自动装配原理解析
- 什么是CICD?
- Zabbix 5.0 LTS新功能一览
- 获取电脑真实的IP地址,忽略虚拟机等IP地址的干扰
- K8S系列之K8S集群之Master节点部署
- Kafka集群搭建
- Kafka的实现细节
- CentOS7下安装Elasticsearch-7.3.2和Elasticsearch-head
- spring boot oauth2 取消认证
- 日志级别记录规范
- 搭建K8S集群之node节点部署
- ent orm笔记2---schema使用(上)
- ent orm笔记4---Code Generation
- 什么?明明是2020年12月30日显示2021年12月30日?
- JDK1.8HashMap源码学习-数据结构