# 总结这几天的学习内容
# Pikachu的CSRF模块 apipost6(工具)
# GET:
皮卡丘的网址,修改信息,进行抓包
最后总结:token
token如何防止CSRF
CSRF的主要问题是敏感操作的链接容易被伪造
每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对随机码进行验证
网页接受从后台发过来的token,类型不可见。将其一并提交给后台进行验证。每次刷新,后台发送过来的token都不一样,起到了防止伪造的作用。
防范措施
增加token输证(常用的做法):
1.对关健操作增加token参数,token值必须烈机,每次都不一样;
关于安全的会话管理(避免会话被利用):
1,不要在客户脑助保存部源信息(比如身份认证信息):
2.测试直统关闭,退出时,的会话过期机制:
3,设置会活过期机制,比如15分钟内无操作,则自动登录超时;
访问控制安全管理:
1.敬感信息的修改时需要对身份进行二次认证,比如修改账号时,需亚判日密码;
2.敏浸信息的修改使用past,而不是get;
3.通过http头部中的referer来限制原页面
增加验证码:
一般用在登录《防暴力破模),也可以用在其他重要信息操作的表单中《需要考虑可用性】
# 二,JAVA的安装遇到的问题
Java三大版本
Write Once,Run Anywhere
JavaSE: 标准版 (桌面程序,控制台开发…)
JavaME: 嵌入式开发 (手机,小家电…),已经凉了
JavaEE: E企业级开发 (Web端,服务端开发…),JavaSE为基础
安装开发环境
卸载JDk
删除Java安装目录
删除环境变量JAVA_HOME
删除path下关于JAVA的目录
Java -version
安装JDK
百度搜索JDK8,找到下载地址
同意协议,下载电脑对应的版本,如64位操作系统下载 jdk-8u281-windows-x64.exe
双击安装JDK
记住安装路径
配置环境变量
我的电脑-》属性-》系统高级设置-》环境变量
系统变量 新建–> JAVA_HOME 输入对应的jdk安装路径
path变量–>% JAVA_HOME%\bin
测试是否成功 cmd–>Java -version
J
自此,我的问题解决成功
# 三,文件上传漏洞(二)
一,%00截断和00截断
二,靶场闯关
三,条件竞争
strrposs用函数,在于截取后缀,if:判断 (inarray)是否匹配 到数值并执行代码,相反则执行else tmp:临时 HEX:查看网页传参的十六进制代码
截断:有一个终止符
1.php.jpg=>操作系统 1.php终止符号.jpg=>白名单检测 jpg
move_uploaded_file()移动文件
点击上传=>临时目录=>移动出来重命名
黑名单不安全,白名单(不一定安全)
点是连接符,/:路径,rand(10,99)=>随机值10-99随机选择一个
date(“YmdHis”)=>时间日期
把图片直接塞入数据库:
图变文字,文字变图
URL编码=>%××××
GET可以接受URL编码,而POST不能
https://www.bejson.com/convert/ox2tr/ (做渗透,去截断)
对一句话检测:
一句话木马改后缀名
渲染图片,检测图片类型,图片内容
图片马(图片+一句话木马)
/b:二进制复合 copy 1234.jpg/b+1.php 2222.jpg
gif绕过 不会去渲染前面几行的代码 png绕过(操作起来很麻烦)
# 四,站长新动力
不能直接用控制台
然后在上面的网址com后填上?url="><script>alert(1)</script>//(标签法)
大小写:<Script>alert("en")</script>
事件法:<img src=1 οnerrοr=alert(1)>
伪协议法:<a href='' οnmοusemοve=alert('en')>click</a>
1)http://:这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。
2)www:这个是服务器名,是指在因特网上以超文本为基础形成的信息网。
3)php.cn:这个是域名,是用来定位网站的独一无二的名字。
4)www.php.cn:这个是网站名,由服务器名+域名组成。
5)/:这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录
6:)article.html:这个是根目录下的网页
牢记知识点:rul接受用户的输入,get方式
# 五,手工注入
墨者靶场
是否有注入点,and 1=1网页没有变化, and 1=2网页变化。
我们发现这里存在sql注入
接下来进行排查字段数,使用 order by 语句,开始测试,结果如下:
输入1时无变化,直接增大到5试试看,如下:
页面报错了,证明他低于五个字段
判断列数:(有四列)null代替,第五列的时候报错
利用回显获取数据库名称
查询数据库中的表:
分别查询两个表的字段:(发现stormgroup_member表中有账号和密码
查询stormgroup_member表的字段:
账号为:dsan13
密码为:150046
# 六,文件上传漏洞
一,客户端检测
二,服务端检测
三,靶场闯关
客户端校验:一般是在月页上写一段Js脚本,用Js去检测,校验上传文件的后绍名,有白名单也有黑名单。
判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传jpg/jpeg/.png后缀名的文件,而此时并没有发送数据包,所以可以通过抓包来判断,如果弹出不准上传,但是没有抓到数据包,那么就是前端验证
前薪验证非常不可靠,传正常文件改数据包就可以绕过,甚至关闭JS都可以尝试晓过
墨白名单机制:
思名单:不允许上传什么
白名单:只允许上传什么
白名单比黑名单更安全
靶场第题:http://59 63.200.79.8016/Pass-01/ndex.php
用Burp抓包修改
文件上传=>功能
上传头像,上传照片,上传文档
上传后端脚本,包含恶意语句并且能正常访问,就可以控制服务器
黑名单:不允许上传什么
白名单:只允许上传什么
安全中的概念:
黑名单:不允许名单的XXX
白名单:只允许XXX
白名单安全性要高于黑名单
分布式配置文件:
网站有自己规则:php
特例:如果我存在听我的 重新定义规则
php=>windows机器里不在意大小写(可以改后缀大小写)
空格绕过法:
php php空格 不相同 抓包修改
点绕过法:
抓包修改
Windows文件流绕过:
抓包后缀加::$DATA
###### .php: :$DATA
点空点的组合
双写构建:双写绕过法
pphphp(抓包修改)(未做循环可用)
没什么基础:PHP+python/golang
有点电脑基础的:JAVA
比较厉害的:C+汇编
# 七,跨站请求伪造
一,什么是CSRF?
Cookie代表你的身份权限 存活周期
同源法则:同ip同端口同协议的属于同源 共用Cookie
hack.zkaq.cn 1 bbs.zka2
CSRF:偷偷的让浏览器发送数据包
A站点->JS让你访问B站点
受害者的浏览器上面执行的
B是正常网站,A是黑客搭建危险站点!
## (二)CSRF靶场演示
CSRF:防御方式:
Cookie里面有。传参里面有,要求对应才生效
Cookie=token=nf
Token一串随机值
(Cookie和Token要求对应)
token=nf;newpasswd=123456
A=>B csrf永远不知道目标的Cookie
利用JS自动提交数据
通过Burp的工具生辰攻击数据包
是针对你本地。修改参数
1,传参地址要修改,肯定要写到目标传参
2,传参内容,文件写入的路径
CSRF和xss有什么区别:
CSRF:利用Cookie,但是无法获取Cookie xss:获取Cookie
鸡肋漏洞组合拳:
CSRF self-xss :=>CSRF和反射型xss搭档的时候会产生很不
错的效果
a.nf.com
后台存在反射性xss 直接打一个xss 并访问它
# 八,XSS原理与解剖
SQL注入 =>用户输入的数据被当作SQL代码执行
XSS => 用户输出的数据会被当做前端代码执行
XSS:偷取用户的身份凭证
HTTP他是无状态无连接的协议
Cookie:通行证
document.cookie
JS操纵:
1、读取信息
2、可以发起请求(ajax 异步传输)
读取Cookie将Cookie发送出去成了一个攻击手法
游览器法则:同源策略 同源性法则
同源:同协议 同域名/ip 同端口
XSS能窃取到的Cookie只能读取当前触发页面同源下的Cookie
XSS三大类型:
反射型:非持久性生效的攻击,仅仅作用一次(目标必须主动输出恶意语句)
储存型:恶意语句会被储存住,别人访问显示的页面就会中招
Dom型
XSS如何被触发:
用户输出的数据被当作前端代码执行(JS代码)
JS代码有三种触发方法
1、标签法:<script></script>
2、伪协议法:小众协议叫做伪协议(自定义协议)
javascript:
<a href=javascript:alert(1)>123</a>
3、事件触发法:on 专门表示事件(事件加在标签内)
## DOM型和反射型有什么区别?
XSS就是XSS。所谓“存储型”、“反射型”都是从黑客利用的角度区分的。对于程序员来说意义不大,反而是误导。只有“DOM-based”型略有不同。
XSS、SQL injection之类的漏洞,原理都是破坏跨层协议的数据/指令的构造。
如SQL注入,涉及应用层和数据库层。协议是SQL查询语言。对于应用层来说,一句sql是数据(字符串);对于数据库层来说,一句sql是指令。sql注入的原理,就是破坏sql的构造。防御的方法,就是用参数查询(现代所有的数据库驱动的api一定包含了)而不是自己拼sql字符串。这个已经是所有后端工程师的基本常识了。
而XSS,两个层次是服务器端和浏览器端。协议就是HTML/CSS/JavaScript。对于服务器端来说,html是数据(字符串);对于浏览器端来说,html是指令。XSS的原理,就是破坏html/css/js的构造。
防御的方法,一般认为是正确escape,就是替换尖括号、引号等特殊符号。
但是这是不够的,因为这只解决了html的问题。考虑如下:
<script>var name = '<?= $name ?>';</script>
这代码显然有XSS隐患。
那么我们escape一下,是不是就好了?
<script>var name = '<?= htmlspecialchar($name) ?>';</script>
很遗憾这样是没用的。因为这里是javascript输出点,xss破坏的目标是破坏js构造而不是html构造。html构造中的关键字符是尖括号、双引号、“&”符号等。而js构造就复杂了,比如换行、注释(//和/*)、引号(包括单引号)等都会改变构造。
为了确保js构造的正确,应该:
<script>var name = <?= json_encode($name) ?>;</script>
不过这还是存在一个漏洞。(作为一个简单的习题留给同志们。)
【另外PHP不同版本的json_encode的行为不一致,几乎都有问题,虽然不至于直接XSS,但存在被利用的可能。】
显然,PHP没有提供比较便利的方式来确保代码的安全,这是那个年代(199x)服务器端脚本技术的通病。遗憾的是,web技术发展到今天,即使是常见的现代Web模板,大多提供了默认的html escape,但对inline script中的XSS防御就乏善可陈了。
## 一,被攻击的对象不同
## 二,解析位置不同
## 三,存储时间不同
## 四,允许输入点不同
# 反射型与存储型的区别:
## 记录不经过后端
# 信息收集都有哪些:
## whois(微步),网站架构,dns信息(通过查找dns可以检测到是否有子域名收集),子域名搜索,敏感目录及敏感信息,源码泄露,脆弱系统(网络空间),旁站查询,C段查询,指纹信息,端口服务,备案信息,真实IP,探测waf,社工(朋友圈,空间,求职等),企业信息(天眼查,企业信用信息公式系统)
##