初学web安全
作者:互联网
1.什么是SQL注入、特征是什么、有哪些类型 (bypass waf Tips ?)
什么是SQL注入:
简单来说就是通过给web程序中定义好的sql语句进行添加额外的sql语句,来实现一种骗取数据库来进行查询操作,从而得到数据据信息。
特征:
1、广泛性:任何一个基于SQL语言的数据库都可能被攻击,很多开发人员在编写Web应用程序时未对从输入参数、Web表单、Cookie等接受到的值进行规范性验证和检测,通常会出现SQL注入漏洞。
2、隐蔽性:SQL注入语句一般都嵌入在普通的HTPP请求中,很难与正常语句区分开,所以当前许多防火墙都无法识别予以警告,而且SQL注入变种极多,攻击者可以调整攻击的参数,所以使用传统的方法防御SQL注入效果非常不理想。
3、危害大:攻击者可以通过SQL注入获取到服务器的库名、表名、字段名,从而获取到整个服务器中的数据,对网站用户的数据安全有极大的威胁。攻击者也可以通过获取到的数据,得到后台管理员的密码,然后对网页页面进行恶意篡改。这样不仅对数据库信息安全造成严重威胁,对整个数据库系统安全也有很大的影响。
4、操作方便:互联网上有很多SQL注入工具,简单易学、攻击过程简单,不需要专业的知识也可以自如运用。
有哪些类型:
1.按照注入点类型来分类:
(1)数字型注入点
许多网页链接有类似的结构 http://xxx.com/users.php?id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字,在大多数的网页中,诸如 查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。这一类的 SQL 语句原型大概为 select * from 表名 where id=1 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where id=1 and 1=1
(2)字符型注入点
网页链接有类似的结构 http://xxx.com/users.php?name=admin 这种形式,其注入点 name 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where name='admin' 值得注意的是这里相比于数字型注入类型的sql语句原型多了引号,可以是单引号或者是双引号。若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where name='admin' and 1=1 ' 我们需要将这些烦人的引号给处理掉。
(3)搜索型注入点
这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有 "keyword=关键字" 有的不显示在的链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like '%关键字%' 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where 字段 like '%测试%' and '%1%'='%1%'
2.按照数据提交的方式来分类:
(1)GET 注入
提交数据的方式是 GET , 注入点的位置在 GET 参数部分。比如有这样的一个链接http://xxx.com/news.php?id=1 , id 是注入点。
(2)POST 注入
使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。
(3)Cookie 注入
HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。
(4)HTTP 头部注入
注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。
3.按照执行效果来分类:
(1)基于布尔的盲注
即可以根据返回页面判断条件真假的注入。
(2)基于时间的盲注
即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
(3)基于报错注入
即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
单引号
双引号
基于数字型注入
(4)联合查询注入
可以使用union的情况下的注入。
(5)堆查询注入
可以同时执行多条语句的执行时的注入。
(6)宽字节注入
2.什么是XSS漏洞、特征是什么、有哪些类型 (httponly)
什么是XSS漏洞
XSS攻击全称跨站脚本攻击,是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
XSS漏洞有哪些类型,特征是什么
- 反射型:
通过将恶意脚本代码插入到URL中,当URL被打开是,恶意代码被HTML解析,运行
特点:非持久话,必须是受害者点击后才能引起
- 存储型:
攻击者发现一个存在xss漏洞的借口或页面后构造一个恶意的html脚本(payload),将其插入到页面,存储到服务器数据库里.使得所有浏览该页面的用户都受到安全威胁
特点:持久性,危害更大
3.文件上传漏洞 绕过的方式
-
客户端 javascript 检测 (通常为检测文件扩展名)
这类检测通常在上传页面里含有专门检测文件上传的 javascript 代码,最常见的就是检测扩展名是否合法
绕过方式:
1 前端修改允许的类型
2 burp抓包修改
3 禁用javascript(例如火狐浏览器就有禁用JS功能) -
服务端检测绕过(MIME 类型检测)
主要是检测Content-Type: 字段
绕过方法:
burp抓包修改Content-Type: 为允许的字段
Content-Type: image/gif
Content-Type: image/png
Content-Type: image/jpeg -
服务端检测绕过(文件扩展名检测)
黑名单检测,黑名单的安全性比白名单的安全性低很多,攻击手法自然也比白名单多,一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件
绕过方法:
1 文件名大小写绕过
用像 AsP,pHp 之类的文件名绕过黑名单检测
2 名单列表绕过
用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类
3 特殊文件名绕过
比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在 burp 之类里进行修改,然后绕过验证后,会被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性。
4 htaccess 文件
配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测
5 写入方法
首先名字为1.php:jpg,会写入一个1.php的空文件,然后再上传一个文件,然后修改名字为3.<<<
这样就会把我们这个文件的内容写入到我们上传的那个1.php空文件中
参考:https://www.waitalone.cn/php-windows-upload.html
6 截断绕过上传
1.php .jpg 空格二进制20改为00
还有一些图片木马之类的,需要结合文件包含漏洞来解析。 -
文件头检测
iis解析漏洞
1 目录解析
以*.asp命名的文件夹里的文件都将会被当成ASP文件执行。
2 文件解析
*.asp;.jpg 像这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。
IIS6.0 默认的可执行文件除了asp还包含这三种 *.asa *.cer *.cdx
3 默认解析
.asp .aspx .ashx .asa .cer这是系统默默认的后缀名
Apache解析漏洞
Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断。比如xxx.php.rar对apache来说rar是不可解析的,所以就会解析成xxx.php
- nginx解析漏洞
开启cgi:SCRIPT_NAME FASTCGI:
www.xx.com/a.jpg/.php(任何不存在文件)-----可以解析为.php文件
a.jpg:
a.php%00.jpg----解析为a.php
修复建议
上传文件的存储目录禁用执行权限
文件的后缀白名单,注意0x00截断攻击
不能有本地文件包含漏洞
及时修复web上的代码
升级web server
4.XXE漏洞 造成的影响是什么?
XXE危害
危害1:读取任意文件
危害2:执行系统命令
危害3:探测内网端口
危害4:攻击内网网站
XXE漏洞修复与防御
xxe漏洞存在是因为XML解析器解析了用户发送的不可信数据。然而,要去校验DTD(document type definition)中SYSTEM标识符定义的数据,并不容易,也不大可能。大部分的XML解析器默认对于XXE攻击是脆弱的。因此,最好的解决办法就是配置XML处理器去使用本地静态的DTD,不允许XML中含有任何自己声明的DTD。通过设置相应的属性值为false,XML外部实体攻击就能够被阻止。因此,可将外部实体、参数实体和内联DTD 都被设置为false,从而避免基于XXE漏洞的攻击。
防御方案一:使用开发语言提供的禁用外部实体的方法
PHP
libxml_disable_entity_loader(true);
JAVA
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false);
Python
from lxml import etree
xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
防御方案二:过滤用户提交的XML数据
过滤关键词:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC。
5.当WEB应用出现漏洞时,从代码角度考虑,造成的原因什么?
未对代码进行仔细核查,常常会导致出现这些漏洞问题,如SQL注入,要对输入的代码进行核查,添加一些输入限制等。
6.渗透测试时,信息收集应该关注哪些信息?
关注目标对外公布的资产信息,比如:域名信息、人员联系方式、第三方合作公司、公司法人等,主要目的是扩大攻击面。
7.什么是cms?什么是框架?什么是中间件?
什么是cms
CMS代表内容管理系统,是一个应用程序,一种软件工具;CMS的目标是提供用于构建和修改网页内容的直观用户界面,它可以帮助用户创建和管理他们的网站,帮助网站管理员管理构成现代网站的许多不同资源。
什么是框架
框架是一系列的底层服务,让应用开发者调用这一系列的底层服务来快速开发他们想要做的应用程序。
什么是中间件
提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。
他充当的功能是将应用程序运行环境与操作系统隔离,从而实现应用程序开发不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。
8.Webshell作用,Webshell 可以做什么
Webshell作用
webshell被站长常常用于网站管理、服务器管理等等,根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等。另一方面,Webshell被入侵者利用,从而达到控制网站服务器的目的。这些网页脚本常称为WEB脚本木马,比较流行的asp或php木马,也有基于.NET的脚本木马与JSP脚本木马。国内常用的WebShell有海阳ASP木马,Phpspy,c99shell等。
Webshell 可以做什么
可以用来做网页后门
标签:语句,web,漏洞,安全,初学,文件,SQL,php,注入 来源: https://www.cnblogs.com/wuyiluan/p/16618378.html