# 总结这几天的学习内容 # 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=">//(标签法) 大小写: 事件法:伪协议法:click 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、标签法: 2、伪协议法:小众协议叫做伪协议(自定义协议) javascript: 123 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的问题。考虑如下: 这代码显然有XSS隐患。 那么我们escape一下,是不是就好了? 很遗憾这样是没用的。因为这里是javascript输出点,xss破坏的目标是破坏js构造而不是html构造。html构造中的关键字符是尖括号、双引号、“&”符号等。而js构造就复杂了,比如换行、注释(//和/*)、引号(包括单引号)等都会改变构造。 为了确保js构造的正确,应该: 不过这还是存在一个漏洞。(作为一个简单的习题留给同志们。) 【另外PHP不同版本的json_encode的行为不一致,几乎都有问题,虽然不至于直接XSS,但存在被利用的可能。】 显然,PHP没有提供比较便利的方式来确保代码的安全,这是那个年代(199x)服务器端脚本技术的通病。遗憾的是,web技术发展到今天,即使是常见的现代Web模板,大多提供了默认的html escape,但对inline script中的XSS防御就乏善可陈了。 ## 一,被攻击的对象不同 ## 二,解析位置不同 ## 三,存储时间不同 ## 四,允许输入点不同 # 反射型与存储型的区别: ## 记录不经过后端 # 信息收集都有哪些: ## whois(微步),网站架构,dns信息(通过查找dns可以检测到是否有子域名收集),子域名搜索,敏感目录及敏感信息,源码泄露,脆弱系统(网络空间),旁站查询,C段查询,指纹信息,端口服务,备案信息,真实IP,探测waf,社工(朋友圈,空间,求职等),企业信息(天眼查,企业信用信息公式系统) ##