burpsuite sqlmap nmap 简介
sqlmap基础
五种独特sql注入技术:
- 基于布尔类型的盲注
- 基于时间的盲注
- 基于报错注入
- 联合查询注入
- 堆查询注入
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-user
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)进行试探。
下面介绍一些常用的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的编写规则,这样能在各种实战中更加运用自如
burpsuite 详解
专业版和免费版主要区别有以下三点:
burp scanner
工作空间的保存和恢复
扩展工具:如target analyzer、content discovery 和task scheduler
burpsuite是java语言编写的,需要运行在jre中
- 配置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截断时非常好用。
2.spider
spider的蜘蛛爬行功能可以帮助我们了解系统的结构,其中spider爬取的内容将在target中展示。
3.Decoder
Decoder的功能比较简单,它时burp中自带的编码解码及散列转换的工具,能对原始数据进行各种编码格式和散列的转换。
对编码解码选项而言,目前支持url、html、base64、ascii、十六进制、八进制、二进制和GZIP共八种格式转换。hash散列支持sha、sha-224、sha-256、sha-384、sha-512、md2、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.