web应用漏洞
web安全漏洞:
- 输入输出验证不充分
- 设计缺陷
- 环境缺陷
web通用型漏洞包括︰
SQL注入漏洞、XSs漏洞、文件上传漏洞、任意文件读取/下载漏洞、代码执行漏洞、命
令执行漏洞、CSRF漏洞、逻辑漏洞等等。。。
WebShell
WebShell原理:
webShell,简称网页后门。简单的来说它是运行在web应用之上的远程控制程序。webShell其实就是一张网页,由PHP、JSP、ASP、ASP.NET等这类web应用程序语言开发,webShell一般会具备文件管理、端口扫描、提权、获取系统信息等功能。
拥有较完整功能的webShell,我们一般称为大马。功能简易的webshell称为小马。除此之外还存在一句话木马、脱库马等等的名词,是对于webShell功能或者特性的简称。
<?php @eval($_POST['403']);?> (一句话木马原理)
WebShell管理工具
webshell利用思路
- 手动构造数据包利用
- 自动化工具利用
手动构造数据包利用的思路是提交命令执行、文件处理等函数代码实现控制服务器;
自动化工具利用的思路是使用中国菜刀和蚁剑等工具实现对服务器的控制;
蚁剑是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站,都可以用蚁剑来#行管理!利用上传到服务器的一句话脚本再通过一些添加配置就可以工作了。
文件上传漏洞原理及利用方式
文件上传漏洞场景:后台弱口令+后台任意文件上传
文件上传漏洞与危害与防御
危害∶
如果恶意文件如PHP,ASP等执行文件绕过web应用,并顺利执行,相当于黑客直接拿到了webshell,就可以拿到web应用的数据,对文件系统删除,增加,修改,甚至本地提权,进一步拿下整个服务器甚至内网渗透。
防御∶
1、文件类型/大小/后缀检测,前端通过JavaScript验证,文件扩展,文件大小,后端检测MIME类型等,白名单过滤,文件重命名,文件大小。
2、最小权限运行web服务
3、上传文件目录修改权限,不给上传文件执行权限,即使上传了木马也无法执行,读写权限分离4、安装wAF进入深度检测,安全狗,阿里云盾等
什么是任意文件下载漏洞
许多网站都具备文件下载功能,某些文件下载功能实现过程是根据参数filename的值,获得该文件在网站上的绝对路径,读取文件内容,发送给客户端进行下载。
文件下载漏洞是指文件下载功能没有对下载的文件类型、目录做合理严谨的过滤,导致用户可以下载服务器上的任意文件。
任意文件下载漏洞危害
危害:
- 下载站点源码(黑盒->白盒)
- 下载应用、系统配置文件(ssh、apache2、mysql)
- 注∶对于该漏洞的利用是为了信息收集,为下一步挖掘服务器漏洞而入侵。
防御︰
- 下载路径不可控,而是程序自动生成后保存在数据库中
- 根据ID进行下载
- 对参数做严格的过滤,不能进行目录遍历(穿越)
数据库简介
数据库基本单位
- 数据库服务器∶是指用来运行数据库服务的一台电脑。
- 数据库:(一个数据库服务器里面有可以有多个数据库。
- 数据表∶例如在游戏数据库中,用来区分游戏不同的数据。
- 数据字段∶也叫数据列。就是我们日常所见表格里面的列。
- 数据行∶真正的数据存在每一个表的行里面。
sql简介
常用的SQL语句
添加: insert into <表名>[列名] values <列值>insert into zgyz(姓名,理论,windows实操,Linux实操) values)values('邹楠','80','100','100')
更新: update <表名> set<列名=更新值>[where <更新条件>]update zgyz set理论=100 where 姓名='邹楠'
查询: select<列名> from<表名>[where <查询条件表达式>]SELECT “Linux实操`from zgyz where 姓名='邹楠'
删除: DELETE FROM<表名>[where <删除条件>]DELETE FROM zgyz where 姓名='邹楠'
QL注入原理及漏洞利用方式
SQL注入原理及漏洞利用方式
SQL注入的概念
SQL注入(英语:SQL injection )是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。
SQL注入场景
场景∶这是一个成绩查询页面,但是服务端没有对用户提交的参数进行严格的过滤,导致可以将SQL语句插入到可控参数中,改变原有的sQL语义结构,从而执行攻击者所预期的结果。
SQL注入漏洞的利用—[联合注入]
MySQL 5.0版本以上,MySQL数据库在安装完成后,有一个自带的数据库:information_schema这个数据库存放了该MySQL数据库的所有数据库和数据表的元信息。
information_schema数据库表说明:
- SCHEMATA表:提供当前数据库服务器中所有数据库的信息。
- TABLES表:提供当前数据库服务器中所有数据表的信息。
- COLUMNS表:提供当前数据库服务器中所有数据表字段的信息。
SQLMap工具的使用
- sqlmap是一个开源渗透测试工具,它可以自动检测和利用SQL注入漏洞并接管数据库服务器。
- 支持五种SQL注入技术∶联合注入,布尔盲注,时间盲注,报错注入,堆叠注入。
- 支持枚举用户,密码哈希,特权,角色,数据库,表和列。
SqlMap工具使用
检查注入点:
sqlmap -u http: //xxx.xxx.xxx/chaxun.php?student_name=1
爆所有数据库信息︰
sqlmap -u http: //xxx.xxx.xxx/chaxun.php?student_name=1 --dbs
爆当前数据库信息︰
sqlmap -u http: //xxx.xxx.xxx/chaxun.php?student_name=1 --current-db
指定库名列出所有表
sqlmap -u http: //xxx.xxx.xxx/chaxun.php?student_name=1 - D test --tables'test’为指定数据库名称
指定库名表名列出所有字段
sqlmap -u http://xxx.xxx.xxx/chaxun.php?student_name=1 - D test - T zgyz --columns'zgyz’为指定表名称
指定库名表名字段dump出指定字段
sqlmap -u http://xxx.xxx.xxx/chaxun.php?student_name=1 - D test -T zgyz -C student_name,lilun,windows,Linux --dump
‘姓名,理论’为指定字段名称
SQL注入的危害
- 获取数据(拖库)
- 写入webShell
- 读取敏感系统文件
- 命令执行
- ......
SQL注入防御
- SQL语句预编译
- 使用足够严格的过滤和安全防御
XSS漏洞原理及利用方式
什么是JavaScript
HTML、CSS、JavaScript简介及简单分工:
- HTML是用来描述网页的一种语言人定义网页的结构)文字/图片/链接..]。
- CSS样式定义如何显示HTML元素,可以理解为美化网页[排版/文字样式..]。
- JavaScript是一种脚本语言,可以使网页拥有交互的能力,对一些网页操作故出反应.
什么是XSS漏洞
XSS全称跨站脚本(Cross Site Scripting),为了不和层叠样式表(CSS)混淆,故缩写为XSS,比较合适的方式应该叫做跨站脚本攻击。
跨站脚本攻击是一种常见的web安全漏洞,它主要是指攻击者可以在页面中插入恶意脚本代码(Javascript代码),当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。
XSS漏洞原理
与SQL注入类似,XSS的本质也是一种注入,XSS的本质其实是一种“HTML”注入,用户的输入被当做HTML代码执行,从而混淆了原本的语义,产生了新的语义。
XSS漏洞的分类
第一种∶反射型XSS
反射型xSs是最简单的XSS,即输入XSs脚本或输入XSs脚本点击按钮即可完成xss攻击,同时也称作非持久型xss.漏洞主要存在于URL地址栏,搜索框等。
第二种:存储型xss
存储型xss主要是将用户输入的“数据”存储在服务器端,该类型的攻击比较稳定,只要用户访问该数据就会被攻击,所以存储型xss也叫做持久型XSS。该类型的漏洞主要存在于发帖,回帖评论等模块,以及用户注册等模块。
第三种:DOM Based xss
通过修改页面的DOM节点来进行xSS。
XSS漏洞的危害
- 钓鱼(伪造登录框,页面)
- cookie盗取
- 获取IP段
- 站点重定向
- 获取客户端页面信息,例如邮件内容窃取
- XSS蠕虫....
CSRF漏洞原理及利用方式
什么是CSRF漏洞
CSRF ( Cross-Site Request Forgery )中文名跨站请求伪造漏洞。
CSRF攻击原理(利用未失效的会话信息( cookie、会话等),伪装目标用户发起请求执行目标网站接口。在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点。
原理:
攻击者盗用了你的身份,以你的名义发送恶意请求
CSRF能够做的事情有∶
以你的名义发送邮件、发消息、盗取你的账号,甚至于购买商品,虚拟货币转账
CSRF漏洞原理及利用
CSRF漏洞危害:
- 以受害者名义发送邮件,发消息,盗取受害者的账号,甚至购买商品,虚拟货币转账,修改受害者的网络配置(比如修改路由器DNS、重置路由器密码)等等。。
- 造成的问题包括:个人隐私泄露、机密资料泄露、用户甚至企业的财产安全
CSRF漏洞防御︰
- Samesite Cookie
- 验证HTTP Referer字段
- 增加Token验证
逻辑漏洞简介
什么是逻辑漏洞
逻辑漏洞是指由于程序逻辑不严谨导致一些逻辑分支处理错误造成的漏洞。
在实际开发中,因为开发者水平不一,没有安全意识,而且业务发展迅速内部测试没有及时到位,所以常常会出现类似的漏洞。
逻辑漏洞挖掘一直是安全测试中“经久不衰”的话题,常见的逻辑漏洞包括︰支付漏洞、密码修改、越权修改、越权查询等。
逻辑漏洞危害
- 大量敏感数据泄露,越权访问,越权重置口令
- 商品低价支付经济损失,商品/产品金额、数量篡改等
- 活动被恶意刷取,卡/券重复领取,条件竞争等
- 支付接口、短信/邮件接收
RCE漏洞简介
什么是RCE漏洞
远程命令/代码执行漏洞,简称RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码)从而控制后台系统。
常见命令执行漏洞利用
Struts2系列远程代码执行漏洞 ThinkPHP5远程代码执行漏洞
Struts2-Scan工具 Thinkphp-GUI工具
Web中间件漏洞简介
常见的web中间件包括Apache、IIS、Nginx、Tomcat、webLogic、JBoss、webShere等。存在的安全漏洞主要包括:
- Apache ( Apache Httpd多后缀解析漏洞、Apache sSI 远程命令执行漏洞、
- Apache Httpd换行解析漏洞[CVE-2017-15715]等)
- IIS(目录解析漏洞、写权限漏洞等)
- Nginx ( Nginx解析漏洞、CVE-2013-4547文件名逻辑漏洞等)
- Tomcat ( Tomcat7+弱密码&后端Getshell漏洞、本地提权漏洞CVE-2016-1240等)
- webLogic ( CVE-2017-10271反序列化漏洞等)
Apache常见漏洞
Apache Httpd多后缀解析漏洞∶
Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache httpd这个特性,就可以绕过上传文件的白名单。该漏洞和apache版本和php版本无关,属于用户配置不当造成的解析漏洞。
Nginx常见漏洞
Nginx解析漏洞︰
-
Nginx是一款轻量级的web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。
-
Nginx解析漏洞与nginx、php版本无关,属于用户配置不当造成的解析漏洞。
Nginx解析漏洞原理︰
1、首先构造并访币http://ip/uploadfiles(test.png'xxxxxxxx.php(xxxxxxx.php文件不存在),其
中test.png是我们上传的包含PHP代码的照片文件。
2、nginx.conf的默认配置会导致nginx把以’.php’结尾的文件交给fastcgi处理
3、fastcgi在处理.php文件时发现文件并不存在,这时php.ini配置文件中
cgi.fix_pathinfo=1发挥作用,这项配置用于修复路径,如果当前路径不存在则采用上层路径。于是这里交由fastcgi处理的文件就变成了’/test.png'。(默认cgi.fix_pathinfo=0)
4、最重要的一点是php-fpm. conf中的security.limit_extensions配置项限制了fastcgi解析文件的类型(即指定什么类型的文件当做代码解析),此项设置为空的时候允许fastcgi将 .png 等文件当做代码解析。该配置项允许使用其他扩展名运行php代码。(默认值:.php/3/4/5/7)
Tomca常见漏洞
Tomcat后台弱密码&后台Getshell :
Tomcat有一个管理上后台,其用户名和密码在Tomcat安装目录下的conf\tomcat-users.xml文件中
配置,不少管理员为了方便,经常采用弱口令。Tomcat支持在后台部署war包,可以直接将webshell部署到web目录下,如果tomcat后台管理用户存在弱口令,这很容易被利用传webshell。
Weblogic常见漏洞
Weblogic < 10.3.6‘wls-wsat’ XMLDecoder反序列化漏洞(CVE-2017-10271) ∶
weblogic的MLS Security组件对外提供webservice服务,其中使用了XNLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。