参考书:《Web安全深度剖析》

1.1 服务器如何被入侵?

渗透条件:与服务器通过端口正常通信。
web应用程序(客户端,一般为浏览器)默认运行在80端口上。
渗透服务器,一般有三种手段:

  1. C段渗透:渗透同一网段的主机对目标主机进行ARP等渗透。
  2. 社会工程学:
  3. 服务:直接针对服务进行溢出。

第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模型

  1. HTTP请求与响应

    1. 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                                              //请求正文
    
    1. HTTP响应
      由响应行(第一行),响应头/消息头,响应正文(消息主题)组成

      200 为状态码,OK为状态消息
      中间是消息头,由服务器向客户端发送
      响应正文,是服务器发送的HTML数据。
  2. HTTP请求方法
    1. GET:获取请求页面的指定信息。若请求资源为动态脚本(不是HTML),返回文本是Web容器解析后的HTML代码。发送的数据显示在浏览器端。
    2. HEAD:服务器在响应里不返回消息主题,其他与GET方法相同。一般用来测试超文本链接有效性、可访问性和最近改变。速度快。
    3. POST:GET方法没有请求内容,POST有请求内容,一般用于向服务器发送大量数据。
    4. PUT:用于请求服务器把请求的实体存储在请求资源下。一般服务器会关闭put方法,因为它会为服务器建立文件。
    5. DELETE:删除指定资源。服务器一般关闭。
    6. TRACE:回显服务器收到的请求。少见。
    7. CONNECT:动态切换隧道代理。
    8. OPTIONS:可选功能。
  3. HTTP状态码
    1xx:信息提示,请求已被成功接收。
    2xx:成功,服务器处理了请求。
    3xx:重定向
    4xx:客户端错误。
    5xx:服务器错误。
  4. 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 辅助模块

  1. decoder 解码器:对URL,HEX,HTML进行编码或者解码
  2. comparer 比较器:比较两段字符串
  3. repeater:HTTP请求编辑工具
  4. 中文乱码问题:options-display-HTTP message display-change font-微软雅黑或宋体
  5. 使用插件

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型。

  1. 反射型:也称非持久型xss。用户访问带有xss代码的url,服务器端接收数据后处理,把带有xss代码的数据发送到浏览器,浏览器解析带有xss代码的数据。常利用用户身份登录网站。
  2. 存储型:又称持久性xss。出现在允许用户存储数据的web应用。攻击者提交一段xss代码后,被服务器接收并存储;攻击者再次访问某个页面时,xss代码被读取并响应给浏览器,造成xss跨站攻击。
  3. DOM XSS,文档对象模型,代表html、XHTML、XML中的对象。允许程序和脚本动态访问更新文档内容、结构、样式。

XSS 利用:

  • 盗取用户cookie(利用用户身份登录网站)
  • 修改网页内容
  • 网站挂马
  • 网站重定向
  • XSS蠕虫

修复方式:过滤敏感字符
HTTPonly,阻止客户端脚本访问cookie


第8章 命令执行

定义:攻击者执行系统命令。

防范:

  • 尽量不使用系统执行命令
  • 变量过滤,敏感字符转义
  • 确保动态函数使用的函数正确

第9章 文件包含

定义:调用恶意文件。常出现在PHP语言中
防范:判断被包含的文件是否外部可控,禁止目录跳转,包含文件验证,尽量不要使用动态包含。


第10章 其他漏洞

**CSRF,跨站请求伪造,**也称one click attack。盗用用户身份进行非法操作。
两个重点:

  • 建立在浏览器和web服务器的会话
  • 欺骗用户访问URL

get,post,cookie机制

预防:

  • 二次确认
  • token认证

逻辑错误漏洞:

  1. 绕过授权
  2. 密码找回(修改重置密码链接邮箱)
  3. 支付逻辑(商品数量为负数)

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用户。

  1. SQL Server
    破解数据库工具:Nmap、X-scan,hydra,crackDB等
    Hydra,THC的开源暴力破解工具,支持FTP,MSSQL,MYSQL,POP3,SSH等
    渗透过程:

    1. 使用Nmap扫描主机192.168.1.110开放了1433端口(SQL server数据库端口),再用Namp -A确定服务器是否运行SQL server服务。
    2. 使用Hydra破解sa密码
      hydra.exe -1 sa -P c:\pass.txt(密码字典路径) 192.168.1.110 mssql
  2. MySQL
    使用Medusa

12.2 B/S架构破解

WordPress

12.3 暴力破解案例

  1. 攻击OA(办公)系统
    搜集用户名方法:
    (1)通过邮箱,爬虫
    (2)通过错误提示:暴力破解用户名
  2. 破解验证码:验证码30min内有效,时间足够爆破

12.4 防止暴力破解

  1. 设置复杂密码
  2. 验证码
  3. 登录日志(密码输入错误三次,限制登录次数)

第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方法

  1. phpinfo()
  2. ping子域名
  3. 观察ip变换

第14章 提权

对服务器提权分为两种:

  • 溢出提权
  • 第三方组件提权

14.1 溢出提权

定义:利用系统本身或系统中软件漏洞获取root权限。

  • 远程溢出:与服务器建立连接,使用系统漏洞进行溢出,或针对服务器安装好的组件(office等)溢出。目前不常见。
  • 本地溢出(主流):需要有服务器一个执行权限的用户,向服务器上传本地溢出程序,在服务器端执行。
  1. Linux提权

    1. uname-a查看服务器内核版本,查找对应本地溢出程序。‘id&uname-a’,查看当前用户id,所属群组id,内核版本号
    2. 本地接收服务器端数据,使用NC监听本地端口8888 nc -l -v -p 8888,等服务器反向连接
    3. 服务器shell反弹(因为直接在脚本中执行,某些命令无法回显,且无法交互)
    4. 本地执行低权限命令,相当于连接到服务器SSH,将本地溢出exp上传到服务器执行,如果服务器有本地溢出漏洞,得到类似root的ssh连接。
  2. Windows提权
    1. 探测服务器支持的脚本信息,如ASP,PHP,ASP.NET,JSP,看执行权限
    2. 执行简单系统命令,溢出程序上传到服务器可执行权限目录,如第三方软件的日志目录

14.2 第三方组件提权

14.2.1 信息搜集

  1. 服务器支持的脚本语言
  2. 端口探测
    1. 本地扫描
    2. 远程扫描:nmap
    3. 执行系统命令:Windows下 netstat -an查看开放端口
  3. 搜集路径信息:可访问目录(数据库连接信息)、软件安装路径、注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\sevices\

14.2.2 数据库提权

  1. SQL server
    存储过程xp_cmdshell,可以调用系统命令,增加管理员账户

    1. 注入点
    2. 得到数据库账户信息
      1、外连接提权
      2、本地连接提权
  2. MySQL
    自定义函数UDF提权
    连接数据库-导出UDF-执行命令

14.2.3 FTP提权

ftp可以执行系统命令,用户权限配置不当

14.2.4 远程控制软件提权

PCanywhere,找保存加密后的连接账户配置信息,

14.3 虚拟主机提权

VPS:虚拟化技术,将服务器分为多个小的服务器,有自己OS和资源
虚拟主机:服务器分成许多小空间,共享OS资源
ASPX扩展

14.4 辅助提权

  1. 3389端口,微软远程桌面服务默认端口

  2. 端口转发,用于连接内网服务器
    LCX转发,shell脚本自带端口转发,reduh转发,

  3. 启动项提权,向启动项内添加远程控制程序,bat文件

  4. DLL劫持,lpk.dll所在的任意目录下运行exe时都会运行lpk.dll
    tools lpk sethc

  5. 添加后门

    1. 远程控制程序
    2. 服务器管理账号后门,3389端口,设立隐藏账号
    3. 克隆账户
    4. administrator账户密码
    5. 线程插入后门(古老)
    6. web后门,文本文件一般无法查杀

14.5 防提权措施

  • 防止目录信息泄露
  • 最小权限原则
  • 打补丁
  • 关闭445/135等端口
  • 删除system32下的敏感exe文件
  • 删除不安全组件

第15章 ARP欺骗攻击

地址解析协议:在以太网中进行主机通信,把IP转换为MAC地址。

15.1.1 ARP缓存表

动态类型:一段时间后不用就删除。Windows默认两分钟
静态类型:永久

15.1.2 局域网主机通信

主机A和主机B通信

  1. 通过子网掩码进行对比,看是否在同一局域网内
  2. 如果在同一局域网内,查看本机ARP缓存表
    • 若存在,则直接发送数据;
    • 若不存在,发送ARP广播报文,目的主机收到广播报文后,回应自己的MAC地址,并将A的MAC地址加入自己的缓存中。A收到响应后,将B的MAC地址放入ARP缓存中,然后发送数据。
  3. 若不在一个局域网内,需要网关转发
    • A查看自己的ARP缓存是否有网关1的MAC地址,如果没有,用ARP广播获取网关1的MAC地址;
    • 如果有,直接向网关1发送数据包,网关1再向网关2发送数据包;网关2收到数据包发现C和自己在一个子网,则查询自己的ARP缓存,如果存在,直接发送,如果不存在,用ARP广播。

15.1.3 ARP欺骗原理

ARP协议主要缺陷:

  1. ARP广播时,攻击者可以伪装ARP应答,冒充通信主机。
  2. ARP协议无状态,任意ARP响应都是合法的,主机会接受未请求的ARP应答包。
  3. 计算机没有提供检验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防火墙

  1. 静态绑定:对每台主机进行IP和MAC地址静态绑定
    arp -s 192.168.195.2 00-50-56-ee-12-6a
  2. ARP防火墙

第十六章 社会工程学

16.1 信息搜集

  1. whois 查询域名详细信息
  2. 友情链接和电子邮箱等联系方式

【学习笔记】《Web安全深度剖析》整理相关推荐

  1. 学习笔记——web安全深度剖析

    一 基础 1.http请求流程: 请求.响应报文格式: 8种请求方式,get(长度有限制).head(用于测试资源是否存在,服务器不返回消息主体).post(传输大量数据).put(给服务器上传资源) ...

  2. python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目

    文章目录 Django项目:学习笔记web网页 项目部署 参考 自己部署的网站,还是小有成就感的,毕竟踩过很多坑,实战技能也有些许进步. 网站链接:http://lishizheng.herokuap ...

  3. Kali Linux学习笔记—Web渗透(1)

    Kali Linux学习笔记-WEB渗透 侦察 Httrack 扫描 Nikto vega skipfish w3af Arachni OWASP_ZAP 必须掌握 Burpsuite 必须掌握 实验 ...

  4. 学习笔记——web网页庐山旅游网

    学习笔记--web网页庐山旅游网 这学期学习了web技术,简单学习了H5+CSS+JS的知识. 这是一个简单的前端,采用html.一共五个页面. 首页index.html <!DOCTYPE h ...

  5. 一箭双雕 刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K

    关于Spring的叙述: 我之前死磕spring的时候,刷各种资料看的我是一头雾水的,后面从阿里的P8架构师那里拿到这两份资料,从源码到案例详细的讲述了spring的各个细节,是我学Spring的启蒙 ...

  6. 《攻防世界》学习笔记——web篇

    <攻防世界>学习笔记--web篇 01 Robots协议 02 BACKUP 03 Cookie 04 disabled_button(chrome游览器F12指南) 05 弱口令 06 ...

  7. stm32正常运行流程图_STM32单片机学习笔记(超详细整理143个问题,学习必看)...

    原标题:STM32单片机学习笔记(超详细整理143个问题,学习必看) 1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f ...

  8. JavaScript超全学习笔记+Web经典案例,赶快收藏

    青春啊,永远是美好的,可是真正的青春,只属于这些永远力争上游的人,永远忘我劳动的人,永远谦虚的人! 最近收到不少的优秀学生投稿,他们有投稿手写笔记.有手写博客.也还有视频.小编也从中挑出几篇较为优秀的 ...

  9. 【学习笔记】【C++整理A】【总】单例模式-饿汉式、懒汉式;

    文章目录 一.语言分类: 三.基础A:- 函数重载.默认参数.extern "C".重复包含 1.函数重载 2.默认参数 3.extern "C" 4.防止重复 ...

  10. 学习笔记-Web Generic

    Web Generic 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 文件包含 日志中毒攻击 文件解析 IIS Nginx Ap ...

最新文章

  1. python绘制可多角度查看的3d图像
  2. .net core 微服务通讯组件Orleans的使用与配置
  3. Microbit-高温报警系统
  4. RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比
  5. 3DSlicer16:数据类型MRML
  6. [转帖]主流硬盘接口都有哪些?
  7. struts2 依赖注入boolean类型的属性时报错
  8. 使用Json让Java和C#沟通的方法
  9. 讨论.NET Core 配置对GC 工作模式与内存的影响
  10. js获取Json对象的长度
  11. 404 Note Found 队-Alpha9
  12. 手机版python3.8.1下载_python3.8.1汉化版
  13. matlab的默认复数开方
  14. 自然人税收管理系统服务器,【轻松学个税申报】自然人税收管理系统客户端操作...
  15. 巴菲特致股东的一封信:2007年
  16. JavaScript基础知识总结(6张思维导图)
  17. 使用 Anysort 排序库给网易云歌单排序
  18. php生成白色背景图片
  19. 关于ntko从后台传输文档时发生文件存取错误,暨关于response使用的注意点
  20. Pandas 数据分析-第八章(排序sort_index())

热门文章

  1. sqlserver高可用方案_PowerJob 的自实现高可用方案,妙妙妙
  2. 斗战神总是显示连接服务器失败,全民斗战神怎么进不去 全民斗战神进不去的原因和解决办法...
  3. python如何使用多线程_python实现多线程教程
  4. 面向对象编程的四大特性
  5. 种一棵树最好的时间是十年前,其次是现在。
  6. (1)关于File类你知道多少
  7. Could not find com.android.tools.build:gradle:2.2.3
  8. 在Hadoop集群上的Hive配置
  9. hdu 1247 Hat’s Words 字典树
  10. html5提供类似“JQuery”中操作类名的方法