Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >渗透专题丨web Top10 漏洞简述(2)

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

原创
作者头像
极安御信安全研究院
发布于 2023-06-14 10:44:36
发布于 2023-06-14 10:44:36
3750
举报

文件包含漏洞

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 在浏览器域里的安全性保护数据,如果是跨域的数据传输,必须要对敏感的数据获取做权限认证。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
经典写配置漏洞与几种变形
当时大家真是脑洞大开,想出了很多解决方法。刚好今天看到奇安信发表的一篇文章《这是一篇“不一样”的真实渗透测试案例分析文章》提到一个Discuz后台getshell漏洞,也涉及了相关知识,我们来总结一下吧。
phith0n
2020/10/15
3170
谈escapeshellarg绕过与参数注入漏洞
参数注入漏洞是指,在执行命令的时候,用户控制了命令中的某个参数,并通过一些危险的参数功能,达成攻击的目的。
phith0n
2020/10/15
2K0
代码审计:命令注入学习
0x01 起因及想法 起因:好久没更新博客了,我在乌云社区看到一篇代码审计的整体学习思想如下: 学习代码审计目标:能独立完成对一个CMS代码安全的监测 思路: A、通读全文代码,从功能函数代码开始阅读,例如include文件夹下的comm_fun.php,或者类似关键字的文件。 B、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。 C、跟读首页文件,了解程序运行时调用那些函数和文件,以首页为基线,一层层去扩展阅读所包含
Angel_Kitty
2018/04/09
1.5K0
代码审计:命令注入学习
渗透测试笔记-5
命令执行直接调用操作系统命令。其原理是,在操作系统中,“&、|、||”都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户输入的情况下,造成命令执行漏洞。
Baige
2022/03/18
2970
渗透专题丨web Top10 漏洞简述(3)
• CORS: 跨域资源共享是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 只能同源使用的限制,以使不同的网站可以跨域获取数据。
极安御信安全研究院
2023/06/14
5160
渗透专题丨web Top10 漏洞简述(3)
WEB安全基础 - - -命令执行漏洞
未对用户输入进行检查过滤,导致用户输入的参数被应用当成命令来执行。 命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如:system()、exec()、shell_exec()、eval()、passthru()等函数,代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
干掉芹菜
2022/11/19
1.5K0
如何用0day漏洞黑掉西部数据NAS存储设备
我们以入侵和破解设备为乐,今天,要向大家展示的是近期我们对西部数据(Western Digital )网络存储设备(NAS)的漏洞发现和入侵利用过程。点击阅读原文观看入侵视频。 漏洞发现 去年年中,我打算入手一台支持硬件解码的NAS存储来搭建Plex流媒体服务平台,经过一番比较,在一位朋友的推荐下,我选择了西部数据(Western Digital )的MyCloud PR4100,该存储设备完全满足我所有的功能需求。把该设备添加进网络之后,可以通过一个Web界面访问登录,由于我对使用设备有安全洁癖,所以
FB客服
2018/02/23
1.5K0
如何用0day漏洞黑掉西部数据NAS存储设备
一起来学PHP代码审计 | 新手入门篇
代码审计指的是对源代码进行检查,寻找代码中的bug和安全缺陷,这个是一项需要多方面技能的技术,所以我们需要掌握编程,漏洞原理,还要了解系统服务和中间件等。但是这对我们小白来说,可能就是一个“代码审计之从入门到放弃”的悲惨故事,所以我们的学习路线很重要,这里我们就一起来制定一个学习路线理清我们的学习思路。
陌涛
2020/06/10
2.2K0
XSS基础学习
XSS攻击是指在网页中嵌入一段恶意的客户端Js脚本代码片段,JS脚本恶意代码可以获取用户的Cookie、URL跳转、内容篡改、会话劫持……等。
Mirror王宇阳
2020/11/12
8790
php弱类型花式绕过大全_协同过滤推荐算法代码
assert()会检查指定的assertion并在结果为false时采取适当的行动。在PHP5或PHP7中,如果assertion是字符串,它将会被assert()当做PHP代码来执行。
全栈程序员站长
2022/11/09
3.4K0
php弱类型花式绕过大全_协同过滤推荐算法代码
渗透测试命令执行漏洞原理与验证(4)——命令执行漏洞及防御
DVWA是基于PHP/mysql环境开发的所有需要PHP/MYSQL环境来支持的运行两个条件:
zhouzhou的奇妙编程
2024/11/17
1540
干货 | 命令执行漏洞和代码执行漏洞详解
从而注入一段攻击者能够控制的代码,在服务器上以Web服务的后台权限远程执行恶意指令
网络安全自修室
2022/09/01
5.5K1
干货 | 命令执行漏洞和代码执行漏洞详解
web安全常见漏洞_web漏洞挖掘
检测 抓去a用户功能链接,然后登录b用户对此链接进行访问 抓去a用户功能链接,修改id为b的id,查看是否能看b的相关数据 替换不同的cookie进行测试查看
全栈程序员站长
2022/11/06
1.6K0
OWASP TOP10系列之#TOP1# A1-注入类「建议收藏」
提示:本系列将介绍OWASP TOP10 安全漏洞相关介绍,主要针对漏洞类型、攻击原理以及如何防御进行简单讲解;如有错误,还请大佬指出,定会及时改正~
全栈程序员站长
2022/08/28
1.2K0
CTF中的RCE绕过
RCE(Remote code execution)远程代码执行漏洞,RCE又分命令执行和代码执行。
Anime_Bucket
2024/03/03
1.2K0
CTF中的RCE绕过
吃透一文总结,轻松入门代码审计!
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
网络安全自修室
2023/12/15
5620
吃透一文总结,轻松入门代码审计!
web漏洞 | XSS(跨站攻击脚本)详解
跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击! XSS分为:存储型 、反射型 、DOM型XSS
谢公子
2022/01/13
5K0
web漏洞 | XSS(跨站攻击脚本)详解
代码审计入门总结
0x00 简介 ---- 之前看了seay写的PHP代码审计的书,全部浏览了一遍,作为一个代码审计小白,希望向一些和我一样的小白的人提供一下我的收获,以及一个整体的框架和常见漏洞函数。这也算是这本书的一个学习笔记吧,可以结合我捋顺的思路来看这本书。: ) 0x01 整体 ---- 学习代码审计的目标是能够独立完成对一个CMS的代码安全监测。其通用的思路有: 通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。 看配置文件,带有config关
用户1467662
2018/03/30
1.5K0
代码审计入门总结
聊聊一句话木马
木马是什么意思就不用我介绍了,网站通常在渗透中找到可以操作文件的机会使用时候,和代码执行文件上传漏洞息息相关,在网站中获得种种上了木马,我们就说拿到了webshell,获得一个较低的权限,网站木马通常是入侵者入侵者拿到网站权限的标志,也是内网渗透.权限提升的开始,一般有两种网站木马,俗称小马和大马,小马又称一句话木马,以只有一句代码,功能简单而得名,大马往往有文件操作,数据操作,执行命令等复杂的功能,在渗透的过程中配合大小木马交叉使用,非常强大,这里和大家简单聊聊我见过的木马。
用户5878089
2019/07/25
1.7K0
【命令执行】命令执行漏洞总结v1.0
但由于开发人员没有对输入进行严格的过滤,导致攻击者可以构造一些额外的“带有非法目的”命令,去欺骗后台服务器执行这些非法命令。
一名白帽的成长史
2019/10/08
1.7K0
【命令执行】命令执行漏洞总结v1.0
相关推荐
经典写配置漏洞与几种变形
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档