【学习笔记】《Web安全深度剖析》整理
参考书:《Web安全深度剖析》
1.1 服务器如何被入侵?
渗透条件:与服务器通过端口正常通信。
web应用程序(客户端,一般为浏览器)默认运行在80端口上。
渗透服务器,一般有三种手段:
- C段渗透:渗透同一网段的主机对目标主机进行ARP等渗透。
- 社会工程学:
- 服务:直接针对服务进行溢出。
第2章 HTTP协议
随着Web2.0时代到来,互联网从C/S(客户端/服务器)架构变为B/S(浏览器/服务器)架构。Web请求基于HTTP协议。
2.1 HTTP协议解析
2.1. 1 发起HTTP请求
输入URL,就发起了HTTP请求
Windows系统用curl.exe发起请求,curl.exe需要下载后解压,到curl.exe目录下运行cmd,然后 curl ww.baidu.com
,就返回页面的HTML数据。浏览器只是多了HTML渲染功能。
2.1.2 HTTP协议详解
目前是HTTP1.1,无状态,即不建立持久连接
HTTP遵循请求request/应答response
模型
- HTTP请求与响应
- HTTP请求
包括三个部分:请求行(方法),请求头(消息头),请求正文
POST(请求类型是POST) /login.php(请求根目录下的login.php) HTTP/1.1 //请求行 HOST: www.xxser.com //请求头 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0//空白行,代表请求头结束 Username=, admin&password=admin //请求正文
- HTTP响应
由响应行(第一行),响应头/消息头,响应正文(消息主题)组成
200 为状态码,OK为状态消息
中间是消息头,由服务器向客户端发送
响应正文,是服务器发送的HTML数据。
- HTTP请求
- HTTP请求方法
- GET:获取请求页面的指定信息。若请求资源为动态脚本(不是HTML),返回文本是Web容器解析后的HTML代码。发送的数据显示在浏览器端。
- HEAD:服务器在响应里不返回消息主题,其他与GET方法相同。一般用来测试超文本链接有效性、可访问性和最近改变。速度快。
- POST:GET方法没有请求内容,POST有请求内容,一般用于向服务器发送大量数据。
- PUT:用于请求服务器把请求的实体存储在请求资源下。一般服务器会关闭put方法,因为它会为服务器建立文件。
- DELETE:删除指定资源。服务器一般关闭。
- TRACE:回显服务器收到的请求。少见。
- CONNECT:动态切换隧道代理。
- OPTIONS:可选功能。
- HTTP状态码
1xx:信息提示,请求已被成功接收。
2xx:成功,服务器处理了请求。
3xx:重定向
4xx:客户端错误。
5xx:服务器错误。 - HTTP消息
HTTP消息又称HTTP头,由请求头、响应头、普通头、实体头组成。
2.2 截取HTTP请求
为了减少服务器压力,web前端常使用JS进行验证,渗透测试中常用HTTP请求截取绕过JS验证。
2.2.1 Burp Suite Proxy 体验
burp suite是web应用安全测试工具集成平台。
(待补充)
2.2.2 Fidder :Web调试工具
(待补充)
2.2.3 WinSock Expert:监视和修改网络发动和接收数据
(待补充)
2.3 HTTP应用:黑帽SEO之搜索引擎劫持
蜘蛛劫持:
通过百度搜索关键词,进入搜索结果页面后,点击某些网站,发现跳转到一些不相干的网站,但是正常输入网址,进入的就是正常的网站。这个就是所谓的蜘蛛劫持。
蜘蛛劫持原理:通过相关入侵软件(比如webshell)扫描已经收集好的、并且有可观流量网站的漏洞,获取权限,在服务器中植入木马程序或者在网页代码中添加劫持代码,然后根据网站访客性质,给出不一样的页面或请求,比如正常用户就返回原页面,当发现是走蜘蛛程序的时候,就会给出已经做了手脚的页面。
记一次搜索引擎劫持攻击
搜索引擎劫持黑帽技术原理及防护
第3章 信息探测
信息探测:搜集服务器配置信息和网站信息
3.1 Google Hack
3.1.1 搜集百度子域名
打开google,输入 site:baidu.com
3.1.2 搜集web信息
googl常用语法:
site:指定域名
intext:正文中的关键字
intitle:标题中的
inurl:URL存在关键字的网页
filetype:文件类型
例子:intitle:管理登录 filetype:php
:查询网页标题含有“管理登录”的PHP网页
3.2 Nmap:开源网络连接端扫描软件
扫描开放的网络连接端口,推断计算机运行操作系统。
安装Nmap需配置环境变量path
3.2.2 探测主机信息
3.2.3 Nmap脚本引擎
3.2.3 DirBuster:web服务器目录和隐藏文件探测工具
第4章 漏洞扫描
漏洞扫描器:SQL注入,跨站点脚本攻击,缓冲器溢出。但逻辑性漏洞、隐蔽的XSS漏洞或SQL注入无法扫描。属于信息探测一种。
4.1 burp suite
4.1.1 Target
Target主要功能:显示信息。
4.1.2 Spider 网络爬虫,枚举应用程序的内容和功能
4.1.3 Scanner 扫描Web应用漏洞
对URL进行测试
4.1.4 intruder 对web应用进行自动化攻击
4.1.5 辅助模块
- decoder 解码器:对URL,HEX,HTML进行编码或者解码
- comparer 比较器:比较两段字符串
- repeater:HTTP请求编辑工具
- 中文乱码问题:options-display-HTTP message display-change font-微软雅黑或宋体
- 使用插件
4.2 AWVS:自动化Web应用程序安全测试工具
WVs可以快速扫描跨站脚本攻击(XSS)、 SOL注入攻击、代码执行、且录遍历攻击、文件入侵、脚本源代码泄漏、CRLF注入、PHP代码注入、XPath注入、LDAP注入、Cookie操纵、URL重定向、应用程序错误消息等。
4.3 AppScan:Web应用安全测试工具(IBM出品)
SecTools.org 扫描模块
第5章 SQL注入
原理:数据被执行
注入漏洞分类:数字型和字符型
数字型:输入参数为整型,ASP,PHP等弱类型语言。
字符型;输入参数为字符串,一般用单引号闭合。关键是闭合SQL语句并注释多余代码。
常见数据库注入利用方式:
- 查询数据
- 读写文件
- 执行命令
注入工具:SQLmap、pangolin(穿山甲)、havij、bsql hacker
防止注入:数据类型判断和特殊字符转义, 使用预编译
第6章 上传漏洞
用户上传任意文件,一般与web容器的解析漏洞配合
防止上传漏洞:
- 客户端js检测
- 服务器端检测:白名单和黑名单、mime类型,扩展名是否合法
工具:中国菜刀、一句话木马
原因:
- 目录过滤不严,攻击者建立目录
- 文件未重命名,利用web容器解析漏洞
第7章 XSS攻击
又叫css,跨站脚本攻击,指攻击者在网页中嵌入客户端脚本(一般是js编写),加载外部脚本,恶意代码在浏览器上执行。
分类: 反射型、存储型(不需要用户手动触发)、DOM型。
- 反射型:也称非持久型xss。用户访问带有xss代码的url,服务器端接收数据后处理,把带有xss代码的数据发送到浏览器,浏览器解析带有xss代码的数据。常利用用户身份登录网站。
- 存储型:又称持久性xss。出现在允许用户存储数据的web应用。攻击者提交一段xss代码后,被服务器接收并存储;攻击者再次访问某个页面时,xss代码被读取并响应给浏览器,造成xss跨站攻击。
- DOM XSS,文档对象模型,代表html、XHTML、XML中的对象。允许程序和脚本动态访问更新文档内容、结构、样式。
XSS 利用:
- 盗取用户cookie(利用用户身份登录网站)
- 修改网页内容
- 网站挂马
- 网站重定向
- XSS蠕虫
修复方式:过滤敏感字符
HTTPonly,阻止客户端脚本访问cookie
第8章 命令执行
定义:攻击者执行系统命令。
防范:
- 尽量不使用系统执行命令
- 变量过滤,敏感字符转义
- 确保动态函数使用的函数正确
第9章 文件包含
定义:调用恶意文件。常出现在PHP语言中
防范:判断被包含的文件是否外部可控,禁止目录跳转,包含文件验证,尽量不要使用动态包含。
第10章 其他漏洞
**CSRF,跨站请求伪造,**也称one click attack。盗用用户身份进行非法操作。
两个重点:
- 建立在浏览器和web服务器的会话中
- 欺骗用户访问URL
get,post,cookie机制
预防:
- 二次确认
- token认证
逻辑错误漏洞:
- 绕过授权
- 密码找回(修改重置密码链接邮箱)
- 支付逻辑(商品数量为负数)
URL跳转与钓鱼
跳转分为:客户端跳转和服务器端跳转
客户端跳转:又称URL重定向,地址栏URL变化
服务器端跳转:又称URL转发,地址栏不变
第11章 渗透测试
11.1 0day攻击
常见漏洞信息库:
https://www.exploit-db.com/
挖0day的方式:源代码审计(白盒测试)和模糊渗透测试(黑盒测试)
网站后台安全问题:模板、文件管理、执行SQL语句、网站备份、
MD5:彩虹表和站点破解
常见MD5破解站点:
http:/ /www.md5crack.com/ home
http:/ /www.netmd5crack.com/cracker
http://www.cmd5.com
http:/ /md5pass.info
http://www.md5. hk/ interface . asp
http: //www.md5decrypter . co . uk
http: //www.md5this . com/ index . php
http:/ /www.md5decrypter . com
http:/ /www.xmd5.org .
(以上网站没验证有效性)
拖库:数据库导出,称“社工库”,分为外连接和本地连接操作
根据:Navicat
第12章 暴力破解
12.1 C/S架构破解
数据库一般提供默认超级管理员账户,如SQL server的sa用户,MySQL的root用户,Oracle的system用户。
SQL Server
破解数据库工具:Nmap、X-scan,hydra,crackDB等
Hydra,THC的开源暴力破解工具,支持FTP,MSSQL,MYSQL,POP3,SSH等
渗透过程:- 使用Nmap扫描主机192.168.1.110开放了1433端口(SQL server数据库端口),再用
Namp -A
确定服务器是否运行SQL server服务。 - 使用Hydra破解sa密码
hydra.exe -1 sa -P c:\pass.txt(密码字典路径) 192.168.1.110 mssql
- 使用Nmap扫描主机192.168.1.110开放了1433端口(SQL server数据库端口),再用
MySQL
使用Medusa
12.2 B/S架构破解
WordPress
12.3 暴力破解案例
- 攻击OA(办公)系统
搜集用户名方法:
(1)通过邮箱,爬虫
(2)通过错误提示:暴力破解用户名 - 破解验证码:验证码30min内有效,时间足够爆破
12.4 防止暴力破解
- 设置复杂密码
- 验证码
- 登录日志(密码输入错误三次,限制登录次数)
第13章 旁注攻击
通过同一服务器的网站渗透到目标网站。
13.1 服务器端web架构
同一服务器上可能有多个网站
13.2 IP逆向查询
常见IP反查网站
http://stool.chinaz.com/same
https://dns.aizhan.com/
http://www.114best.com/ip/
13.3 SQL 跨库查询
数据库用户权限分配不当,越权操作
13.4 目录越权
原因:每个web程序存在于单独目录中,服务器管理员配置不当
13.5 构造注入点
得到数据库账户,使用脚本连接,通过数据库跨目录读写文件。
13.6 CDN(内容分发网络)隐藏真实IP
CDN将原服务器上缓存文件下载到缓存服务器,用户访问缓存服务器。可以直接攻击CDN节点。
搜集真实ip方法
- phpinfo()
- ping子域名
- 观察ip变换
第14章 提权
对服务器提权分为两种:
- 溢出提权
- 第三方组件提权
14.1 溢出提权
定义:利用系统本身或系统中软件漏洞获取root权限。
- 远程溢出:与服务器建立连接,使用系统漏洞进行溢出,或针对服务器安装好的组件(office等)溢出。目前不常见。
- 本地溢出(主流):需要有服务器一个执行权限的用户,向服务器上传本地溢出程序,在服务器端执行。
- Linux提权
uname-a
查看服务器内核版本,查找对应本地溢出程序。‘id&uname-a’,查看当前用户id,所属群组id,内核版本号- 本地接收服务器端数据,使用NC监听本地端口8888
nc -l -v -p 8888
,等服务器反向连接 - 服务器shell反弹(因为直接在脚本中执行,某些命令无法回显,且无法交互)
- 本地执行低权限命令,相当于连接到服务器SSH,将本地溢出exp上传到服务器执行,如果服务器有本地溢出漏洞,得到类似root的ssh连接。
- Windows提权
- 探测服务器支持的脚本信息,如ASP,PHP,ASP.NET,JSP,看执行权限
- 执行简单系统命令,溢出程序上传到服务器可执行权限目录,如第三方软件的日志目录
14.2 第三方组件提权
14.2.1 信息搜集
- 服务器支持的脚本语言
- 端口探测
- 本地扫描
- 远程扫描:nmap
- 执行系统命令:Windows下
netstat -an
查看开放端口
- 搜集路径信息:可访问目录(数据库连接信息)、软件安装路径、注册表
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\sevices\
14.2.2 数据库提权
- SQL server
存储过程xp_cmdshell
,可以调用系统命令,增加管理员账户- 注入点
- 得到数据库账户信息
1、外连接提权
2、本地连接提权
- MySQL
自定义函数UDF提权
连接数据库-导出UDF-执行命令
14.2.3 FTP提权
ftp可以执行系统命令,用户权限配置不当
14.2.4 远程控制软件提权
PCanywhere,找保存加密后的连接账户配置信息,
14.3 虚拟主机提权
VPS:虚拟化技术,将服务器分为多个小的服务器,有自己OS和资源
虚拟主机:服务器分成许多小空间,共享OS资源
ASPX扩展
14.4 辅助提权
3389端口,微软远程桌面服务默认端口
端口转发,用于连接内网服务器
LCX转发,shell脚本自带端口转发,reduh转发,启动项提权,向启动项内添加远程控制程序,bat文件
DLL劫持,lpk.dll所在的任意目录下运行exe时都会运行lpk.dll
tools lpk sethc添加后门
- 远程控制程序
- 服务器管理账号后门,3389端口,设立隐藏账号
- 克隆账户
- administrator账户密码
- 线程插入后门(古老)
- web后门,文本文件一般无法查杀
14.5 防提权措施
- 防止目录信息泄露
- 最小权限原则
- 打补丁
- 关闭445/135等端口
- 删除system32下的敏感exe文件
- 删除不安全组件
第15章 ARP欺骗攻击
地址解析协议:在以太网中进行主机通信,把IP转换为MAC地址。
15.1.1 ARP缓存表
动态类型:一段时间后不用就删除。Windows默认两分钟
静态类型:永久
15.1.2 局域网主机通信
主机A和主机B通信
- 通过子网掩码进行对比,看是否在同一局域网内
- 如果在同一局域网内,查看本机ARP缓存表
- 若存在,则直接发送数据;
- 若不存在,发送ARP广播报文,目的主机收到广播报文后,回应自己的MAC地址,并将A的MAC地址加入自己的缓存中。A收到响应后,将B的MAC地址放入ARP缓存中,然后发送数据。
- 若不在一个局域网内,需要网关转发
- A查看自己的ARP缓存是否有网关1的MAC地址,如果没有,用ARP广播获取网关1的MAC地址;
- 如果有,直接向网关1发送数据包,网关1再向网关2发送数据包;网关2收到数据包发现C和自己在一个子网,则查询自己的ARP缓存,如果存在,直接发送,如果不存在,用ARP广播。
15.1.3 ARP欺骗原理
ARP协议主要缺陷:
- ARP广播时,攻击者可以伪装ARP应答,冒充通信主机。
- ARP协议无状态,任意ARP响应都是合法的,主机会接受未请求的ARP应答包。
- 计算机没有提供检验IP到MAC地址是否正确的机制。当主机收到ARP应答时,主机不考虑IP到MAC地址的真实性和有效性,而是直接将MAC与IP地址替换掉原有ARP缓存中信息。
ARP欺骗:利用ARP缺陷,在网络中发送虚假ARP请求或响应。例如,主机A受到ARP应答包后,直接替换原有ARP缓存,不验证自己是否发送了请求。
常见的中间人攻击:会话劫持,DNS欺骗。
15.2 ARP攻击
C段攻击:同一网关下的主机ARP嗅探到敏感数据后,再对目标网站渗透。
例子:服务器地址为:192.168.1.8,入侵与192.168.1.8同一网关下的服务器,一般是19.168.1.xxx,也就是C段IP,然后对目标主机实施ARP嗅探(FTP密码,Admin Pass等)。
常见的ARP欺骗工具
15.2.1 Cain
针对微软系统的口令恢复工具,可以网络嗅探、网络欺骗、破解加密口令、显示缓存口令、分析路由协议等。
15.2.2 Ettercap
中间人攻击工具,用于主机分析、嗅探、DNS欺骗等。
15.2.3 NetFuke
Windows下ARP欺骗嗅探测试工具
15.3 防御ARP攻击
两种常见防御方法:静态绑定(防止ARP欺骗的根本方法)和安装ARP防火墙
- 静态绑定:对每台主机进行IP和MAC地址静态绑定
arp -s 192.168.195.2 00-50-56-ee-12-6a
- ARP防火墙
第十六章 社会工程学
16.1 信息搜集
- whois 查询域名详细信息
- 友情链接和电子邮箱等联系方式
【学习笔记】《Web安全深度剖析》整理相关推荐
- 学习笔记——web安全深度剖析
一 基础 1.http请求流程: 请求.响应报文格式: 8种请求方式,get(长度有限制).head(用于测试资源是否存在,服务器不返回消息主体).post(传输大量数据).put(给服务器上传资源) ...
- python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目
文章目录 Django项目:学习笔记web网页 项目部署 参考 自己部署的网站,还是小有成就感的,毕竟踩过很多坑,实战技能也有些许进步. 网站链接:http://lishizheng.herokuap ...
- Kali Linux学习笔记—Web渗透(1)
Kali Linux学习笔记-WEB渗透 侦察 Httrack 扫描 Nikto vega skipfish w3af Arachni OWASP_ZAP 必须掌握 Burpsuite 必须掌握 实验 ...
- 学习笔记——web网页庐山旅游网
学习笔记--web网页庐山旅游网 这学期学习了web技术,简单学习了H5+CSS+JS的知识. 这是一个简单的前端,采用html.一共五个页面. 首页index.html <!DOCTYPE h ...
- 一箭双雕 刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K
关于Spring的叙述: 我之前死磕spring的时候,刷各种资料看的我是一头雾水的,后面从阿里的P8架构师那里拿到这两份资料,从源码到案例详细的讲述了spring的各个细节,是我学Spring的启蒙 ...
- 《攻防世界》学习笔记——web篇
<攻防世界>学习笔记--web篇 01 Robots协议 02 BACKUP 03 Cookie 04 disabled_button(chrome游览器F12指南) 05 弱口令 06 ...
- stm32正常运行流程图_STM32单片机学习笔记(超详细整理143个问题,学习必看)...
原标题:STM32单片机学习笔记(超详细整理143个问题,学习必看) 1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f ...
- JavaScript超全学习笔记+Web经典案例,赶快收藏
青春啊,永远是美好的,可是真正的青春,只属于这些永远力争上游的人,永远忘我劳动的人,永远谦虚的人! 最近收到不少的优秀学生投稿,他们有投稿手写笔记.有手写博客.也还有视频.小编也从中挑出几篇较为优秀的 ...
- 【学习笔记】【C++整理A】【总】单例模式-饿汉式、懒汉式;
文章目录 一.语言分类: 三.基础A:- 函数重载.默认参数.extern "C".重复包含 1.函数重载 2.默认参数 3.extern "C" 4.防止重复 ...
- 学习笔记-Web Generic
Web Generic 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 文件包含 日志中毒攻击 文件解析 IIS Nginx Ap ...
最新文章
- python绘制可多角度查看的3d图像
- .net core 微服务通讯组件Orleans的使用与配置
- Microbit-高温报警系统
- RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比
- 3DSlicer16:数据类型MRML
- [转帖]主流硬盘接口都有哪些?
- struts2 依赖注入boolean类型的属性时报错
- 使用Json让Java和C#沟通的方法
- 讨论.NET Core 配置对GC 工作模式与内存的影响
- js获取Json对象的长度
- 404 Note Found 队-Alpha9
- 手机版python3.8.1下载_python3.8.1汉化版
- matlab的默认复数开方
- 自然人税收管理系统服务器,【轻松学个税申报】自然人税收管理系统客户端操作...
- 巴菲特致股东的一封信:2007年
- JavaScript基础知识总结(6张思维导图)
- 使用 Anysort 排序库给网易云歌单排序
- php生成白色背景图片
- 关于ntko从后台传输文档时发生文件存取错误,暨关于response使用的注意点
- Pandas 数据分析-第八章(排序sort_index())
热门文章
- sqlserver高可用方案_PowerJob 的自实现高可用方案,妙妙妙
- 斗战神总是显示连接服务器失败,全民斗战神怎么进不去 全民斗战神进不去的原因和解决办法...
- python如何使用多线程_python实现多线程教程
- 面向对象编程的四大特性
- 种一棵树最好的时间是十年前,其次是现在。
- (1)关于File类你知道多少
- Could not find com.android.tools.build:gradle:2.2.3
- 在Hadoop集群上的Hive配置
- hdu 1247 Hat’s Words 字典树
- html5提供类似“JQuery”中操作类名的方法