之前零碎写了点,就一起发了
笔记-日报整理
07/24
token 是服务器和客户端之间 用于判断用户身份的“暗号”
服务器可以根据不同的token 授予不同的数据操作
get类型 去掉token等验证参数,如果可以正常请求,则存在csrf漏洞
post类型 同时去掉token等验证参数和referer参数,如果可以正常请求,则存在csrf漏洞,可以构造外部form表单形式实现供给。对referer参数可以尝试绕过。
csrf漏洞防御 验证HTTP Referer字段,在请求地址中添加token并验证,在HTTP头中自定义属性并验证
(均为验证用户身份,最安全方法为一次一验)
xss漏洞本质为浏览器渲染html文档过程中出发了注入的脚本。
分为三类:
- 存在链接中,在请求是跨站代码经过服务器反射回来,输入reflected xss(反射xss)
- 存储于服务端,数据库中 属于 stored xss。
- 基于dom的跨站,由于客户端脚本自身解析不正确导致的安全问题。属于dom based xss
csrf存在于恶意站点页面上,促使访问者请求被攻击网站的某个url,层而达到改变服务器数据的目的。(cross-site request forgery)
csrf的破坏力取决于受害者的权限,与浏览器机制有关。(当用户在网站成功身份验证后,浏览器会得到标识身份的cookie)
上述referer作用是将页面和身份绑定,可以让服务器端知道,是否为恶意链接引导的错误点击。
如果csrf和xss同时存在的话,可以用验证码来防御问题。(验证码重要性!)
07/30
文件上传保护:
- 检查文件扩展名
- 上传文件保存目录不可解析jsp,php等脚本语言(防止恶意上传脚本攻击)
- 文件名随机命名(不可用用户自定义命名)
- 对上传的图片文件再处理(如微信上传图片二压)
- 记录日志
资料引用:
http://blog.nsfocus.net/web-vulnerability-analysis-coding-security/#Web
能够访问到探针页面,phpinfo页面,服务器信息页面等,属于信息泄露。
appscan自带小工具 :
-
power tools
- authentication tester 弱口令爆破,在账号密码处输入占位符,然后输入登陆成功的语句。即可爆破。
- expression test 正则表达式替换修改。
- request editor 修改发送包类似burp repeater
-
token analyer 类似 burp sequence 可以针对phpsessid等进行分析,技术分析,卡方等等。
-
glass box属于灰盒测试 适用于java后台。有需要再用
appscan生成报告:管理综合报告,详细报告,开发者等
08/08
Flash跨域访问漏洞:
漏洞描述:
不正确的crossdomain.xml策略将导致严重的安全问题,如信息泄露、CSRF等(漏洞等级为低危)
特征为:
permitted-cross-domain-policies
参数为all ,表示为将目标域上所有文件加载为跨域策略文件。allow-access-from
参数为* 时,任何域有权通过flash读取本域中内容。allow-http-request-headers-from header
参数为* 时允许发送任何信息头。
检测条件和方法:
- crossdomain.xml文件存在
- 上述特征存在
验证截图:
引用: https://blog.youkuaiyun.com/sotower/article/details/45046097
nmap 脚本使用
使用脚本方式即 --script=xxx (auth/brute/default/vuln)
-iL 为读取文件中ip列表 , 适合自动化脚本
-oX xxx.xml 为保存为xml文件,xml类似json相比txt等方便读取调用。
burpsuite 浏览器无法访问 问题解决
在使用burpsuite拦截网站请求时候,部分网站使用https使得代理后无法访问
使用以下博客方法可以解决。
https://blog.51cto.com/xujpxm/2085695
(实际上在需要浏览的时候,intercept关掉更加方便。)
sqli-labs笔记 less 1
常用url编码
字符 | url编码 |
---|---|
空格 | %20 |
’ | %27 |
# | %23 |
" | %22 |
数据库连接字符串函数:concat()/concat_ws()
,相比之下,ws函数多了分隔符,相对于我们更实用。常用为 concat_ws(char(32,58,32),xx...xx)
系统数据库名称:information_schema
数据库基本信息表:schemata
表信息表: tables
列信息表:columns
注入策略大概为
- 单引号检验
- orderby测注入点数量,
- union select看回显位置(因为大多数后台函数只调用一次mysql_fetch_array,所以注意此时要将id=0,即不让他搜索到真实数据,防止读取不到回显)
- 利用回显查询 user(),database(),version() 。主要的是database()数据库名
- 利用数据库名查询表。
union select table_name from information_schema.tables where table_schema=database()
(引用博客为: https://blog.youkuaiyun.com/u012763794/article/details/51207833 ,平台为sqli-labs第一题。此时上述函数只能出现一个表名,而原博客使用的方法是limit从而一行一行继续读取直至读取完毕。太慢了,使用新方法。group_concat())
将原函数改为union select *group_concat(table_name)* from information_schema.tables where table_schema='security',
即可一次读取完毕
(注意本题为字符型注入,table_schema后面库名需要加单引号。) - 利用表名查询列名。
union select column_name from information_schema.columns where table_schema=database() and table_name='users'
得到id,username,password三个列名 - 利用列名脱裤
union select group_concat(concat_ws(char(32,58,32),id,username,password))from users
得到全部信息