Burpsuite Sqlmap Nmap入门总结

burpsuite sqlmap nmap 简介

sqlmap基础

五种独特sql注入技术:

  • 基于布尔类型的盲注
  • 基于时间的盲注
  • 基于报错注入
  • 联合查询注入
  • 堆查询注入php

    sqlmap入门

  • 1.判断是否存在注入
    sqlmap -u "http://.....?id=1" #在后面的参数大于两个时,须要加单引号,一个参数也能够加。
  • 2.判断文本中的请求是否存在注入
    该文本的内容一般为web数据包
    sqlmap -r xxx.txt #-r参数通常存在cookie注入时使用。
  • 3.查询当前用户下全部的数据库
    sqlmap -u "http://...?id=1" --dbs
  • 4.获取数据库的表名
    sqlmap -u "http://....?id=1" -D dkeye --tables
  • 5.获取表中的字段名
    sqlmap -u "http://...?id=1" -D dkeye -T user_info --columns
  • 6.获取字段内容
    sqlmap -u "http://...?id=1" -D dkeye -T user_info -C username,password --dump
  • 7.获取数据库的全部用户
    在当前用户有权限读取包含全部用户的表的权限时,使用该命令能够列出全部的管理用户
    sqlmap -u "http://....?id=1" --users
  • 8.获取数据库用户的密码
    若是当前用户有读取包含用户密码的权限,sqlmap会先列举出用户,而后列出hash,并尝试破解。
    sqlmap -u "http://...?id=1" --passwords
  • 9.获取当前网站数据库名称
    sqlmap -u "http://...?id=1" --current-db
  • 10.获取当前网站的用户名称
    sqlmap -u "http://...?id=1" --current-userhtml

sqlmap进阶:参数详解

  • 1.--level 5: 探测等级
    可不加level,默认是1,其中5级包含的payload最多,会自动破解出cookie、XFF等头部注入。固然,level 5的运行速度也比较慢。
  • 2.--is-dba: 当前用户是否为管理员权限
    sqlmap -u "http://...?id=1" --is-dba #返回true or false
  • 3.--roles:列出数据库管理员角色
  • 4.--referer:http referer头
    sqlmap能够在请求中伪造http中的referer,当--referer http://www.baidu.com
  • 5.--sql-shell :运行自定义sql语句
    相似手工注入,启动一个交互式窗口,能够在其中运行自定义的sql语句。如:>select * from users limit 0.1
  • 6.--os-cmd, -os-shell: 运行任意操做系统命令
    这个参数不是很懂嘞!
    用处:--os-shell参数能够模拟一个真实的shell,输入想要执行的命令。当不能执行多语句时(好比php或asp的后端数据库为mysql),仍然可使用INTO OUTFILE写进可写目录,建立一个web后门。--os-shell支持asp、asp.net、jsp、php四种语言(要想执行改参数,须要管理员权限,也就时--is-dba的值要为true。
  • 7.--file-read:从数据库服务器中读取文件
    例子:sqlmap -u "http://...?name=luther" --file-read "C:/example.exe" -v 1 #-v 1不知道是什么意思呢。
  • 8.--file-write --file-dest :上传文件到数据库服务器中
    例子:sqlmap -u "http://.../?id=1" --file-write "/software/nec.exe.packed" --file-dest "C:/WINDOWS/Temp/nc.exe" -v 1

sqlmap自带绕过脚本tamper讲解

sqlmap在默认的状况下除了使用CHAR()函数防止出现单引号,没有对注入的数据进行修改,读者可使用--tamper参数对数据作修改来绕过waf等设备,其中大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过waf的检测规则。
命令格式以下:sqlmap xxx --tamper 模块名
目前官方提供53个绕过脚本,灵活的运用这些模块是绕过企业waf的关键。
还需学习绕过脚本的编写与修改。
  • --identify-waf #对一些网站是否有安全防御(waf/ids/ips)进行试探。java

    下面介绍一些经常使用的tamper脚本:
  • apostrophemask.py #将引号替换为utf8,用于过滤单引号
  • base64encode.py #替换为base64编码
  • multiplespaces.py #围绕sql关键字添加多个空格
  • space2plus.py #用+号替换空格
  • nonrecursivereplacement.py #做为双重查询语句,用双重语句替代预约义的sql关键字(适用于很是弱的自定义过滤器,例如将select替换为空
  • space2randomblank.py #将空格替换为其余字符
  • unionalltounion.py #将union all select 替换为union select
  • securesphere.py #追加特制的字符串
  • space2hash.py #将空格替换为#好,并添加一个随机字符串和换行符。
  • space2mssqlblank.py (mssql) #将空格替换为其余空符号
  • space2mssqlhash.py #将空格替换为#号,并添加一个换行符
  • between.py #用NOT BETWEEN 0 AND替换大于号(>),用BETWEEN AND替换等号(=)
  • percentage.py #asp容许在每一个字符前面添加一个%号
  • sp_password.py #从DBMS日志的自动模糊处理的有效载荷中追加sp_password
  • charencode.py #对给定的payload所有字符使用url编码(不处理已经编码的字符)
  • randomcase.py #随机大小写
  • charunicodeencode.py #字符串unicode编码
  • space2comment.py #将空格替换为/**/
  • equaltolike.py #将等号替换为like
  • greatest.py #绕过对">"的过滤,用GREATEST替换大于号
  • ifnull2ifisnull.py #绕过对IFNULL的过滤,替换相似IFNULL(A,B)为IF(ISNULL(A),B,A).
  • modsecurityversioned.py #过滤空格,使用mssql内联注释的方式进行注入
  • space2mysqlblank.py #将空格替换为其余空白符号。
  • modsecurityzeroversioned.py #使用mysql内联注释的方式(/!00000/)进行注入
  • space2mysqldash.py #将空格替换为--,并添加一个换行符。
  • bluecoat.py #在sql语句以后用有效的随机空白字符替换空格符,随后用LIKE替换等于号。
  • wersiondkeywords.py #注释绕过
  • halfverisonedmorekeywords.py #当数据库为mysql时绕过防火墙,在每一个关键字以前添加mysql版本注释
  • space2morehash.py #将空格替换为#号,并添加一个随机字符串和换行符
  • apostrophenullencode.py #用非法双字节unicode字符替换单引号
  • appendnullbyte.py #在有效负荷的结束位置加载零字节字符编码
  • chardoubleencode.py #对给定的payload所有字符使用双重url编码(不处理已经编码的字符)
  • unmagicquotes.py #用一个多字节组合(%bf%27)和末尾通用注释一块儿替换空格。
  • randomcomments.py #用/**/分割sql关键字
    掌握tamper的编写规则,这样能在各类实战中更加运用自如mysql

burpsuite 详解

专业版和免费版主要区别有如下三点:web

burp scanner
工做空间的保存和恢复
扩展工具:如target analyzer、content discovery 和task scheduler

burpsuite是java语言编写的,须要运行在jre中sql

  • 配置java环境变量
    在系统变量处:
    新建:JAVA_HOME 变量值为:jdk的安装的路径
    在path变量的最前面,加上%JAVA_HOME%\bin;
    新建CLASSPATH变量:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

burpsuite入门

1.proxy

  • raw #主要显示web请求的raw格式,以纯文本的形式显示数据包。能够经过手动修改这些信息,对服务器进行渗透测试
  • params #主要显示客户端请求的参数信息,包括get或者post请求的参数、cookie参数。能够经过修改这些请求完成对服务器的渗透测试
  • Headers #显示的时数据包中的头信息,以名称、值的形式显示数据包。
  • Hex #对应的时raw中的信息的二进制内容,能够经过hex编辑器对请求的内容进行修改,在进行00截断时很是好用。shell

    2.spider

    spider的蜘蛛爬行功能能够帮助咱们了解系统的结构,其中spider爬取的内容将在target中展现。数据库

    3.Decoder

    Decoder的功能比较简单,它时burp中自带的编码解码及散列转换的工具,能对原始数据进行各类编码格式和散列的转换。
    对编码解码选项而言,目前支持url、html、base6四、ascii、十六进制、八进制、二进制和GZIP共八种格式转换。hash散列支持sha、sha-22四、sha-25六、sha-38四、sha-5十二、md二、md5格式的转换。更重要的是,能够对同一数据在decoder进行屡次编码、解码的转换。后端

    burpsuite进阶

    1.scanner

    burp scanner主要是用于自动检测web系统的各类漏洞。
    在扫描结果中选中须要进行分析的部分,将其发送到repeater模块中进行模拟提交分析和验证。
    当scanner扫描完成后,能够右击burp target站点地图选项下的连接,依次选择issues —> report issues 选项,而后导出漏洞报告。
    burp scanner主要有主动扫描和被动扫描两种扫描方式。
burpsuite会向应用发送新的请求并经过payload验证漏洞。这种模式下的操做会产生大量的请求和应答数据,直接影响服务端性能,一般用于非生产环境。主动扫描适用于如下两类漏洞。
* 客户端漏洞:xss、http头注入、操做重定向...
* 服务端漏洞:sql注入、命令行注入、文件遍历...
被动扫描:
当使用被动扫描模式是,burp不会从新发送新的请求,只是对已经存在的请求和应答进行分析,对服务端的检测来讲,这比较安全,一般用于生产环境的检测。
通常来讲,下列漏洞在被动模式中容易被检测出来。
* 提交的密码为未加密的明文
* 不安全的cookie的属性,例如缺乏httponly和安全标志
* cookie的范围缺失
* 跨域脚本包含和站点引用泄漏。表单值自动填充,尤为是密码。
* ssl保护的内容缓存。
* 目录列表
* 提交密码后应答延迟
* session令牌的不安全传输
* 敏感信息泄漏,例如内部ip地址、电子邮件地址、堆栈跟踪等信息泄漏。
I不安全的viewstate的配置。
* 错误或不规范的content-type指令。
  • 优势:使用被动扫描模式验证是否存在漏洞,以减小测试的风险。跨域

    2.Intruder

    Intruter是一个定制的高度可配置的工具,能够对web应用程序进行自动化攻击。如经过标识符枚举用户名、id和帐户密码、模糊测试、sql注入、跨站、目录遍历等。
    burpsuite Intruder一般被用于如下场景:
  • 标识符枚举。web应用程序一般使用标识符引用用户、帐户、资产等数据信息。例如,用户名、文件id和帐户号码。
  • 提取有用的数据。在某些场景下,不是简单地识别有效标识符,而是经过简单标识符提取其余数据。例如,经过用户的我的空间id获取全部用户在其我的空间的名字和年龄。
  • 模糊测试。不少输入型的漏洞(如sql注入、跨站点脚本和文件路径遍历)能够经过请求参数提交各类测试字符串,并分析错误消息和其它异常状况,来对应用程序进行检测。受限于应用程序大小和复杂性,手动执行这个测试是一个耗时且繁琐的的过程,所以能够设置一个payload,经过burpsuite intruder自动化对web应用程序来进行模糊测试。
  • payload有四种模式:
* sniper模式使用单一的payload组。它会针对每一个位置设置payload。这种攻击设用于对常见漏洞中的请求参数单独进行fuzzing测试的情景。攻击中的请求总数应该是position数量和payload数量的乘积。
* Battering ram模式使用单一的payload组。它会重复payload并一次性把全部相同的payload放入指定的位置中。这种攻击适用于须要在请求中把相同的输入放到多个位置的情景。请求的总数是payload组中payload的总数。
* Pitchfork模式使用多个payload组。攻击会同步迭代全部的payload组,把payload放入每一个定义的位置中。这种攻击类型很是适合在不一样位置中须要插入不一样但类似输入的状况。请求的数量应该是最小的payload组中的payload数量。
* Cluster bomb模式会使用多个payload组,每一个定义的位置中有不一样的payload组。攻击会迭代每一个payload组,每种payload组合都会测试一遍。这种攻击适用于在位置中须要不一样且不想关或者未知输入攻击的情景。攻击请求的总数是各payload组中payload数量的乘积。

对Status或Length的返回值进行排序,查看是否有不一样之处。若是有,查看返回包是否显示为登陆成功。

3.Repeater

burp repeater是一个手动修改、补发个别http请求,并分析它们的响应的工具。它最大的用途就是能和burpsuite工具结合起来使用。能够将目标站点地图、burp proxy浏览记录,burp Intruder的攻击结果,发送到repeater上,并手动调整这个请求。来对漏洞的探测或攻击进行微调。

  • Repeater分析选项有4种:raw params headers hex
raw:显示纯文本格式的消息。
params:对于包含参数(url查询字符串、cookie头或者消息体)的请求。params选项会把这些参数显示为名字/值的格式,这样就能够简单的对它们进行查看和修改。
headers:将名字/值的格式显示http的消息头,而且以原始格式显示消息体。
hex:容许直接编辑由原始二进制数据组成的消息。

4.Comparer

burp Comparer在burpsuite中主要提供一个可视化的差别比对功能,来比对分析两次数据之间的区别。(在结果处,右击可导至该Comparer模块)

  • 使用到的场合:
枚举用户名的过程当中,对比分析登录成功失败时,服务端反馈结果的区别。
使用Intruder进行攻击时,对于不一样的服务的响应,能够很快分析处两次响应的区别在哪。
进行sql注入的盲注测试时,比较两次响应消息的差别,判断响应结果于注入条件的关联关系。
  • Comparer数据加载的经常使用方式以下所示:
    从其余burp工具经过上下文菜单转发过来。
    直接粘贴。
    从文件中加载。

    5.Sequencer

    burp Sequencer是一种用于分析数据样本随机性质量的工具。
  • 能够用它测试应用程序的会话令牌(session token)、密码重置令牌是否可预测等场景,经过Sequencer是数据样本分析,能很好地下降这些关键数据被伪造的风险。
  • burp Sequencer主要由信息截取(live capture)、手动加载(Manual Load)和选项分析(Analysis Options)三个模块组成。
    在截取信息后,单击Load按钮加载信息,而后单击"Analyze now"按钮进行分析。

    nmap 详解

    nmap(network mapper,网络映射器)是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放的端口状况、操做系统与应用服务指纹识别、waf识别及常见安全漏洞。它的图形化界面是Zenmap,分布式框架为DNmap。

    nmap 入门

    1.扫描参数

  • nmap --help #查看帮助
  • -iL:从文件中导入目标主机或目标网段
  • -iR: 随机选择目标主机
    ...
    扫描参数太多了,暂时用不到这么多。

    2.经常使用方法

  • 扫描多个目标地址:nmap 192.168.x.102 192.168.x.105
  • 扫描一个范围内的目标地址:nmap 192.168.0.100-110
  • 扫描目标地址所在的某个网段:nmap 192.168.0.100/24
  • 扫描主机列表targets。txt中全部目标地址
    nmap -iL C:\users\Aerfa...\targets.txt
  • 扫描除某一目标地址以外的全部目标地址:nmap 192.168.0.100/24 --exclude 192.168.0.105
  • -excludefile #扫描除某一文件中的目标地址以外的目标地址
  • -p 21,22,80 #使用-p参数指定端口号,将大大提高扫描速度。
  • 对目标地址进行路由跟踪:nmap --traceroute 192.168.0.105
  • 扫描目标地址所在c段的在线情况:nmap -sP 192.168.0.100/24
  • -O #对目标地址的操做系统指纹识别。
  • 探测目标地址开放端口对应的服务版本:nmap -sV 192.168.0.105
  • 探测防火墙状态:nmap -sF -T4 192.168.0.105

    nmap进阶

nmap的脚本默存在/xx/nmap/scripts 文件夹中
nmap脚本主要分如下几类:
auth #负责处理鉴权证书(绕过鉴权)的脚本。
Broadcast #在局域网内探测更多服务的开启状况,如DHCP/DNS/SQLSERVER等
Brute #针对常见的应用提供暴力破解方式,如http/SMTP等。
Default #针对常见-sC或-A选项扫描时默认脚本,提供基本的脚本扫描
Discovery #对网络进行更多信息的搜集,如SMB枚举、SNMP查询等。
Dos #用于拒绝服务攻击
Exploit #利用已知的漏洞入侵系统
External #利用第三方的数据库或资源。例如,进行whois解析
Fuzzer #模糊测试脚本,发送异常的包到目标机,探测潜在漏洞。
Intrusive #入侵性脚本,此类脚本可能引起对方IDS/IPS的记录或屏蔽
Malware #探测目标机是否感染了并对、开启后门等信息。
Safe #此类与Intrusive脚本相反,属于安全性脚本。
version #负责加强服务于版本扫描功能的脚本
vuln #负责检查目标机是否有常见漏洞,如MS08-067

经常使用脚本

  • 用法;能够根据--script=类别进行扫描,经常使用参数以下所示:
-sC/--script=default #使用默认脚本进行扫描
--script=<Lua scripts> #使用某个脚本进行扫描
--script-updatedb #更新脚本
--script-trace #若是设置该参数,则显示脚本执行过程当中发送于接受的数据。
-script-args-file=filename #使用文件为脚本提供参数
--script-args=key1=value1,key2=value2.... #该参数用于传递脚本里的参数,key1是参数名,该参数对应value1这个值。若是有更多参数,使用逗号链接。
例子:
鉴权扫描:nmap --script=auth 192.168.0.105
暴力破解:nmap --script-brute 192.168.0.105
扫描常见的漏洞:nmap --script=vuln 192.168.0.105
应用服务扫描:nmap --script=realvnc-auth-bypass 192.168.0.105 #nmap具有不少常见应用扫描脚本,例如vnc服务、mysql服务、telnet服务、rsync服务
探测局域网内更多服务开启状况:nmap -n -p 445 --script=broadcast 192.168.0.105
whois解析:nmap --script external baidu.com

更多扫描脚本的使用方法参见:https://nmap.org/nsedoc/categories.

相关文章
相关标签/搜索