渗透专题丨web Top10 漏洞简述(2)

文件包含漏洞

1、漏洞简述

程序在引用文件的时,引用的文件名,用户可控的情况,传入的文件名校验不严,从而操作了预想之外的文件,就有可能导致文件泄漏和恶意的代码注入。这是因为程序开发时候会把重复使用的函数写到归档在一起,用到哪个函数就可以直接进行调用,而为了代码更灵活,包含的文件会被设置为变量动态调用,这里就容易造成文件包含漏洞。

2、利用方法

$html='';
if(isset($_GET['submit']) && $_GET['filename']!=nul1){
($filename=$ GET[filename"];
include"include/$filename";

因为对于$_GET['filename']没有任何过滤,直接代入到include中,如果包含这个文件,并成功引用,就会造成文件包含漏洞。

3、伪协议

file:// — 访问本地文件系统

http:// — 访问 HTTP(s) 网址

ftp:// — 访问 FTP(s) URLs

php:// — 访问各个输入/输出流(I/O streams)

zlib:// — 压缩流

data:// — 数据(RFC 2397)

glob:// — 查找匹配的文件路径模式

phar:// — PHP 归档

ssh2:// — Secure Shell 2

rar:// — RAR

ogg:// — 音频流

expect:// — 处理交互式的流

php.ini参数

allow_url_fopen:默认值是 ON。允许 url 里的封装协议访问文件;

allow_url_include:默认值是 OFF。不允许包含 url 里的封装协议包含文件;

 

4、常用路径

包含日志文件 getshell:

/usr/local/apache2/logs/access_log

/logs/access_log

/etc/httpd/logs/access_log

/var/log/httpd/access_log

读取网站配置文件:

dedecms 数据库配置文件 data/common.inc.php,

discuz 全局配置文件 config/config_global.php,

phpcms 配置文件 caches/configs/database.php

phpwind 配置文件 conf/database.php

wordpress 配置文件 wp-config.php

windows:

C:/boot.ini//

C:/Windows/System32/inetsrv/MetaBase.xml//IIS 配置文件

C:/Windows/repairsam//存储系统初次安装的密码

C:/Program Files/mysql/my.ini//Mysql 配置

C:/Program Files/mysql/data/mysql/user.MYD//Mysql root

C:/Windows/php.ini//php 配置信息

C:/Windows/my.ini//Mysql 配置信息

linux:

/root/.ssh/authorized_keys

/root/.ssh/id_rsa

/root/.ssh/id_ras.keystore

/root/.ssh/known_hosts

/etc/passwd

/etc/shadow

/etc/my.cnf

/etc/httpd/conf/httpd.conf

/root/.bash_history

/root/.mysql_history

/proc/self/fd/fd[0-9]*(文件标识符)

/proc/mounts

/porc/config.gz

5、漏洞预防

• 设置 allow_url_include 为 Off

• 路径限制:限制被包含的文件只能在某一文件内,一定要禁止目录跳转字符,如:"../";

• 包含文件验证:验证被包含的文件是否是白名单中的一员;

• 尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include('head.php')

• 严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含的文件是否可被外部控制。

命令执行漏洞

1、简述

程序开发需要去调用一些外部程序,当应用需要调用一些外部程序时就会用到一些执行系统命令的函数。应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户的输入的情况下,就会造成命令执行漏洞。

2、危害

• 反弹shell

• 控制服务器

• 控制网站

3、命令执行漏洞攻击

• ; 命令按照顺序(从左到右)被执行,并且可以用分号进行分隔。当有一条命令执行失败时,不会中断其它命令的执行。例如:ping -c 1 127.0.0.1;whoami

• | 通过管理符 可以将一个命令的标准输出管理为另外一个命令的标准输入,当它失败后,会执行另外一条命令。例如:ping -c 1 127.0.0.1|whoami

• & 命令按照顺序(从左到右)被执行,跟分号作用一样;此符号作用是后台任务符号使 shell 在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作,例如:ping -c 4 127.0.0.1&cat /etc/passwd&

• && 前后的命令的执行存在逻辑与关系,只有【&&】前面的命令执行成功后,它后面的命令才被执行,例如:ping -c 4 127.0.0.1&&whoami

• || 前后命令的执行存在逻辑或关系,只有【||】前面的命令执行失败后,它后面的命令才被执行;例如:ping -c ||whoami

• “ ` ”(反引号) 当一个命令被解析时,它首先会执行反引号之间的操作。例如执行 echols -a将会首先执行 ls 并捕获其输出信息。然后再将它传递给 echo,并将 ls 的输出结果打印在屏幕上,这被称为命令替换例如:echo(反引号)whoami(反引号)

• $ 这是命令替换的不同符号。当反引号被过滤或编码时,可能会更有效。

           ping -c 4 127.0.0.1 $(whoami)

• win 命令链接符 | & || && 同上

4、命令执行漏洞防御

• 不执行外部的应用程序或命令,尽量使用自定义函数或函数库实现外部应用程序或命令的功能。在执行 system、eval 等命令执行功能的函数前,要确认参数内容。

• 使用 escapeshellarg 函数处理相关参数,escapeshellarg 函数会将用户引起参数或命令结束的字符进行转义,如单引号“’”会被转义为“’”,双引号“"”会被转义为“"”,分号“;”会被转义为“;”,这样 escapeshellarg 会将参数内容限制在一对单引号或双引号里面,转义参数中包括的单引号或双引号,使其无法对当前执行进行截断,实现防范命令注入攻击的目的。

• 使用 safe_mode_exec_dir 执行可执行的文件路径将 php.ini 文件中的 safe_mode 设置为 On,然后将允许执行的文件放入一个目录,并使用safe_mode_exec_dir 指定这个可执行的文件路径。这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir 指定的目录中才会允许执行,否则执行将失败。

代码执行漏洞

1、漏洞简述

当程序在调用一些字符串转化为代码的函数时,没有考虑用户是否能控制这个字符串,将造成漏洞。

2、常见函数

• PHP :eval()、assert()、preg_replace()

• python :eval

3、漏洞代码示例

3.1、动态代码执行漏洞


function m_print(){
echo 'hello world';
}
$_GET['a']($_GET['b']);
?>

3.2、eval代码执行漏洞


$data = isset($_GET['data'])?$_GET['data']:'这是一个 eval 漏洞页面';
@eval($ret = $data);
echo $ret;#把字符串当做代码执行
?>

3.3、正则代码执行漏洞


$data = $_GET['data'];
preg_replace('/(.*)<\/data>/e','$ret = "\\1";',$data);
?>


请输入



{${phpinfo()}}

注释:preg_replace 使用了 /e 模式,导致可以代码执行

4、代码执行防御方法

• 使用 json 保存数组,当读取时就不需要使用 eval

• 对于必须使用 eval 的地方,一定严格处理用户数据(白名单、黑名单)

• 字符串使用单引号包括可控代码,插入前使用 addslashes 转义(addslashes、魔数引号、htmlspecialchars、 htmlentities、mysql_real_escape_string)

• 不要使用 preg_replace 的 e 修饰符,使用 preg_replace_callback()替换(preg_replace_callback())

• 若必须使用 preg_replace 的 e 修饰符,则必用单引号包裹正则匹配出的对象(preg_replace+正则)

CSRF漏洞

1、简述

CSRF 定义: 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者session riding,通常缩写为 CSRF , 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。

2、漏洞攻击原理

用户打开浏览器,访问登陆受信任的 A 网站,在用户信息通过验证后,服务器会返回一个 cookie 给浏览器,用户登陆网站 A 成功,可以正常发送请求到网站 A,随后用户未退出网站 A,在同一浏览器中,打开一个危险网站 B,而网站 B 收到用户请求后,返回一些恶意代码,并发出请求要求访问网站 A,浏览器收到这些恶意代码以后,在用户不知情的情况下,利用 cookie 信息,向网站 A 发送恶意请求,网站,最后A 会根据 cookie 信息以用户的权限去处理该请求,导致来自网站 B 的恶意代码被执行。

3、受攻击途径

• 受害者登录网站a后,没有退出的情况下,访问了网站 b

• 在存在漏洞的网站,挖掘 xss 漏洞,自动调用这 poc.html

4、漏洞防御

• 增加 Token 验证

• 不要在客户端保存敏感信息;退出、关闭浏览器时的会话过期机制,设置会话过机制,比如 15 分钟无操作,则自动登录超时

• 敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧 密码敏感信息的修改使用 POST,而不是 GET通过 HTTP 头部中的 REFERER 来限制原页面

• 增加验证码

JSONP漏洞

1、简述

Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略,同源策略,它是由 Netscape 提出的一个著名的安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略。传入 callback 值会在结果里面直接返回。因此,如果该参数过滤不严格。可以随便输入:callback 值为:alert('1');parseResponse 字符串,返回结果会打印个 alert 窗口,然后也会正常执行。攻击者模拟用户向有漏洞的服务器发送 JSONP 请求,然后就获取到了用户的某些信息,再将这些信息发送到攻击者可控的服务。

2、漏洞原理

动态添加一个< script >标签,而 script 标签的 src 属性是没有跨域的限制的。由于同源策略的限制,XmlHttpRequest 只允许请求当前源(域名、协议、端口都相同)的资源,如果要进行跨域请求, 我们可以通过使用 html 的 script 标记来进行跨域请求,并在响应中返回要执行的 script 代码,其中可以直接使用 JSON 传递 javascript 对象。考虑这样一种情况,存在两个网站 A 和 B,用户在网站 B 上注册并且填写了自己的用户名,手机号,身份证号等信息,并且网站 B 存在一个 jsonp 接口,用户在访问网站 B 的时候。这个 jsonp 接口会返回用户的暗月内部文档 请勿外出个人信息,并在网站 B 的 html 页面上进行显示。如果网站 B 对此 jsonp 接口的来源验证存在漏洞,那么当用户访问网站 A 时,网站 A 便可以利用此漏洞进行 JSONP 劫持来获取用户的信息。

3、攻击手法

需要用户登录帐号,身份认证还没有被消除的情况下访问攻击者精心设计好的的页面。就会获取 json 数据,把 json 数据发送给攻击者。寻找敏感 json 数据 api 接口,构造恶意的代码。发送给用户,用户访问有恶意的页面,数据会被劫持发送到远程服务器。

4、攻击代码示例


if($_GET['file']){
file_put_contents('json.txt',$_GET['file']);
}
?>
jsonp 劫持代码










 

当用户访问这个页面时,会自动把接口 user.php 的敏感信息发送到远程服务器上,如果获取到信息就会在远程服务器上生成 json.txt。

5、漏洞防御

json 正确的 http 头输出尽量避免跨域的数据传输,对于同域的数据传输使用 xmlhttp 的方式作为数据获取的方式,依赖于 javascript 在浏览器域里的安全性保护数据,如果是跨域的数据传输,必须要对敏感的数据获取做权限认证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/28821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[笔记]pg常用命令

数据库版本 &#xff1a;9.6.6 注意 &#xff1a;PostgreSQL中的不同类型的权限有SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE 和 USAGE。 1. 登录PG数据库 以管理员身份 postgres 登陆&#xff0c;然后通过 #psql -U postg…

新世界-旧世界

以下内容是这两天朋友问答形成的一些观点&#xff0c;堆成一篇文章。看似没有关联性&#xff0c;但你仔细品味&#xff0c;你会感觉到它们其实讲的是一个事。至于是一个啥事&#xff0c;我不说&#xff0c;你们自己猜。 &#xff08;1&#xff09; 今年年初看见篇文章&#xff…

mdBook介绍及使用——使用 Markdown 创建你自己的博客和电子书

目录 介绍一、下载与创建项目1.下载2.初始化3.结构说明 二、编写文章与启动1.编写文章2.构建3.启动 mdbook 服务 三、其他配置 介绍 mdBook 是一个使用 Markdown 创建书籍的命令行工具。它非常适合创建产品或 API 文档、教程、课程材料或任何需要清晰、易于导航和可定制的演示…

Spring中如何获取Bean方法上的自定义注解

文章目录 背景描述场景复现问题追踪解决方案扩展思考 背景描述 项目中需要扫描出来所有 标注了自定义注解A的Service里面标注了自定义注解B的方法 来做后续处理。 基本的思路就是通过Spring提供的ApplicationContext#getBeansWithAnnotation反射 来实现。 但是&#xff0c;随…

QT C++入门学习(2) QT Creator写一个简单的上位机控制LED

上位机和下位机的概念 上位机&#xff1a;指的是可以直接发送操作指令的计算机或者单片机&#xff0c;一般提供用户操作交互界面并向用户展示反馈数据。 典型设备&#xff1a;电脑、平板、手机、面板、触摸屏 下位机&#xff1a;指的是与机器相连接的计算机或者单片机&#…

SpringBoot+Vue 车辆充电桩系统

文章目录 1、效果演示效果图技术栈 2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1 数据库概念结构设计3.4.2 数据库具体设计 4 系统功能的具体实现4.1 前台功能模块4.1.1 首页功能4.1.2 用户后台管理 4.2 后台功能模块4.2.1 管理员功能4.2.2 维修员功能…

SciencePub学术 | 计算机类重点SCIEI征稿中

SciencePub学术 刊源推荐: 计算机类重点SCI&EI征稿中&#xff01;影响因子高&#xff0c;对国人非常友好。信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机类重点SCI&EI &#x1f4cc;【期刊简介】IF&#xff1a;7.5-8.0&#xff0c;JCR…

前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall

前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall&#xff0c; 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id13046 效果图如下&#xff1a; #### 使用方法 使用方法 <!-- proList: 条目数组数据 goProDetail:条目点击事…

微信小程序基础使用

微信小程序的基本使用 微信小程序文件类型 微信小程序主要提供了 4 种文件类型&#xff1a; 类型名称作用是否必须存在.wxml用于页面的布局结构&#xff0c;相当于网页中 .html 文件是.wxss用于页面的样式&#xff0c;相当于网页中的 .css 文件否.js用于页面的逻辑是.json用…

1.8C++流提取运算符重载

C流提取运算符重载 在 C中&#xff0c;流提取运算符&#xff08;>>&#xff09;是用于从流中提取数据的运算符。 C中的流提取运算符可以被重载&#xff0c;使得程序员可以自定义输入对象的方式&#xff0c;更方便地输入自定义的数据类型&#xff0c;也可以使得输入更加…

数字中国,开鸿见日

讲个小故事&#xff0c;《晋书乐广传》记载&#xff0c;西晋名士乐广&#xff0c;请大文学家潘岳替自己写一篇文章。潘岳让乐广把意思完完整整告诉他&#xff0c;再由他来动笔&#xff0c;最终写成了名扬当时的《呈太尉辞河南尹表》。时人看过这篇文章&#xff0c;评价乐广是“…

传输平台太多?难以管理?看这款跨网传输系统怎样解决

传输作为企业正常运行中最日常的行为&#xff0c;也意味着出现频率最高。微信、QQ、邮件、或是钉钉等办公软件&#xff0c;每天大家上班时开着各种软件&#xff0c;进行着不同的信息交互与传输。很多员工在工作时往往是哪个软件方便顺手就用哪个传输&#xff0c;但是这样也意味…

python打包后报错,无法启动,电脑缺少api-ms-win-core-path-11-1-0.dll

参考&#xff1a;《运行打包python程序时报&#xff1a;无法启动此程序&#xff0c;因为计算机中丢失 api-ms-win-core-path-l1-1-0.dll 尝试重新安装该程序以解决此问题。》 原因&#xff1a;python版本较高&#xff0c;打包时的python版本是python3.10&#xff0c;而运行打包…

xxl-job核心源码解析

xxl-job源码解析 如何自研一个xxljob 注册服务调度服务RPC组件(基建&#xff0c;底层严重依赖)日志服务告警服务 系统架构 执行流程 各大调度中心对比 1&#xff09;服务端启动流程 首先找到配置类 XxlJobAdminConfig 可以发现该类实现 InitializingBean接口&#xff0c;…

批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)

云端炼丹固然是极好的&#xff0c;但不能否认的是&#xff0c;成本要比本地高得多&#xff0c;同时考虑到深度学习的训练相对于推理来说成本也更高&#xff0c;这主要是因为它需要大量的数据、计算资源和时间等资源&#xff0c;并且对超参数的调整也要求较高&#xff0c;更适合…

熬夜三晚之深度解析DuckDB MetaPipeline

深度解析DuckDB MetaPipeline 深度解析DuckDB MetaPipeline 1.导语 2.基础理论 3.HashJoin深度解析 3.1 RESULT_COLLECTOR 3.2 PROJECTION 3.3 HASH_JOIN 4.Ready 4.1 翻转 4.2 MetaPipeline与pipeline 5.汇总 1.导语 DuckDB 是…

深入理解深度学习——Transformer:基础知识

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 作为当下最先进的深度学习架构之一&#xff0c;Transformer被广泛应用于自然语言处理领域。它不单替代了以前流行的循环神经网络(recurrent neural network, RNN)和长短期记忆(long short-term memory, …

从 Google 删库,到蚂蚁跑路,Care 与 Fear 点燃的 Flare

Bytebase 第一次完成融资后写了一篇文章&#xff0c;主要讲了从行业层面做 Bytebase 的逻辑。一年过去了&#xff0c;这一年我们所处的开源/infra/数据库/企业服务赛道从热点归于平静&#xff0c;尤其在国内&#xff0c;又习惯性地反应过度&#xff0c;直接降到冰点。但从全球来…

Apache RocketMQ RCE漏洞复现(CVE-2023-33246)

RocketMQ RocketMQ是阿里巴巴在2012年开发的分布式消息中间件&#xff0c;专为万亿级超大规模的消息处理而设计&#xff0c;具有高吞吐量、低延迟、海量堆积、顺序收发等特点。它是阿里巴巴双十一购物狂欢节和众多大规模互联网业务场景的必备基础设施。 漏洞概述 在其5.1.0版…

基于Servlet+mysql+jsp学生宿舍信息管理系统

基于Servletmysqljsp学生宿舍信息管理系统 一、系统介绍二、功能展示1.用户登陆2.学生-主页面3.学生-缺勤记录4.学生-修改密码5.宿舍管理员-主页面6.宿舍管理员-学生查看7.宿舍管理员-缺勤记录8.系统管理员-宿舍管理员管理9.系统管理员-学生管理10.系统管理员-宿舍楼管理11.系统…