参考书:《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请求。Linux的curl
命令
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有请求内容,一般用于向服务器发送大量数据(上传文件,提交留言)。安全性比GET高
- PUT:用于请求服务器把请求的实体存储在请求资源下。一般服务器会关闭put方法,因为它会为服务器建立文件。
- DELETE:删除指定资源。服务器一般关闭。
- TRACE:回显服务器收到的请求。少见。
- CONNECT:动态切换到隧道代理。
- OPTIONS:可选功能。
- HTTP状态码
1xx:信息提示,请求已被成功接收。
2xx:成功,服务器处理了请求。
3xx:重定向
4xx:客户端错误。403服务器收到请求,拒绝提供服务,401请求未经授权,400客户端请求有语法错误
5xx:服务器错误。500服务器内部错误 - HTTP消息
HTTP消息又称HTTP头,由请求头、响应头、普通头、实体头组成。- 请求头:包括Host(主机和端口号,例HOST:www.xxser.com:801),User-Agent,Refer:上一个URL,Cookie,Range,x-forward-for(请求段的IP,多个IP用逗号隔开),Accept客户端接收类型,Accept-Charset客户端接收的字符集
- 响应头:包括Server(服务器名称),Set-Cookie(可看到服务器发给客户端的Cookie),Last-Modified,Location告诉浏览器访问哪个页面
- 普通头
- 实体头:定义实体中文和请求资源的元信息(实体内容的属性,类型,长度,压缩方法,最后一次修改时间)
Telnet 模拟HTTP请求
Telnet www.baidu.com 80
然后快速复制 粘贴
GET /index.html HTTP/1.1
HOST:www.baidu.com
两次回车看到返回值
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 查询域名详细信息
- 友情链接和电子邮箱等联系方式