渗透测试——七、网站漏洞——命令注入和跨站请求伪造(CSRF)

渗透测试

  • 一、命令注入
  • 二、跨站请求伪造(CSRF)
  • 三、命令注入页面之注人测试
  • 四、CSRF页面之请求伪造测试

一、命令注入

命令注入(命令执行) 漏洞是指在网页代码中有时需要调用一些执行系统命令的函数例如 system()、exec()、shell_exec()、eval()、passthru(),代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
常见连接符如下:

A;B,# 先执行A,再执行 B。
A&B,# 简单拼接,A、B之间无制约关系
A|B,# 显示B的执行结果。
A&&B,# A执行成功,然后才会执行 B。
A||B,# A执行失败,然后才会执行 B。

命令注入漏洞的分类如下:

  • (1)代码层过滤不严
    商业应用的一些核心代码封装在二进制文件中,在 Web 应用中通过 system 函数来调用svstem( “bin/program – arg $arg”) 😮
  • (2) 系统的洞造成命令注入
    例如 Bash 破壳漏洞(CVE-2014 -6271)
  • (3)调用的第三方组件存在代码执行漏洞
    例如 WordPress 中用来处理图片的ImageMagick 组件、Java 中的命令执行漏洞 (Struts2/Elasticsearch Groovy 等)、ThinkPHP 命令执行等。

对于命令注入,可从以下几个方面进行防御:

  • 1、尽量少用执行命令的函数或者直接禁用。
  • 2、参数值尽量使用引号括,并在拼接调用 addslashes 函数进行转义
  • 3、在使用动态函数之前,确保使用的函数是指定的函数之一
  • 4、在进入执行命令的函数方法之前,对参数进行过滤,对敏感字符进行转义。
  • 5、在可控点是程序参数的情况下,使用escapeshellcmd 函数进行过滤;在可控点是程序参数值的情况下,使用escapeshellarg 函数进行过滤。

二、跨站请求伪造(CSRF)

跨站请求伪造(cross-site request forgery),也被称为 one-click attack 或者 session riding.通常缩写为 CSRF 或者XSRF,是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。
跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作 (例如发邮件、发消息,甚至财产操作,比如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 Web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
在这里插入图片描述

三、命令注入页面之注人测试

将安全级别调整至 Low 级别,打开“命令注人”页面,查看源码,可以知道 Low 级别的代码接收了用户输入的 IP,对目标P 从主机服务器的角度进行 ping 测试。代码中对用户输人的IP 并没有进行任何的过滤,所以利用该漏洞进行命令注入。
网页在编辑时,要注意编码格式,使用UTF -8 格式时,中文相应地会出现HTML乱码。
在这里插入图片描述
在这里插入图片描述
可以利用&、&&、|、||等命令连接符,在 ping 完后再执行系统命令,如查看IP 信息、为服务器添加用户 等非法操作。
在这里插入图片描述
将安全级别调整至 Medium 级别,打开“命令注入”页面,查看源码,可以知道 Medium级别的代码在 Low 级别代码的基础上增加了对字符“&&”和“;”的过滤,但在做 Low 级别实验时,用的字符“&”并不在它的过滤范围中。
在这里插入图片描述
&& 和&的区别在于,&& 是执行完前面的命令后,再执行后面的命令;& 是不管前面的命令是否已执行,后面的都执行。
将安全级别调整至 High 级别,打开“命令注入”页面,查看源码,可知道 High 级别的代码进行了黑名单过涨,把一些常见的命令连接符给过滤了。黑名单过滤看似安全,但是如果黑名单不全,则很容易进行绕过。仔细看黑名单过滤中的“1”,其后面还有一个空格,于是用“1”或者“1”又可以绕过。
实际渗透中,命令注入可以用来修改上传文件的文件类型。利用“重命名”命令把上传的JPG 文件改成 PHP 文件。
在这里插入图片描述

四、CSRF页面之请求伪造测试

将安全级别调整至 Low 级别,打开“CSRF”页面。
在这里插入图片描述
页面功能是用户更新密码,但代码里没有对更改代码的合理性做验证。在界面中输入要修改的密码并用 Burp Suite 软件抓包,修改密码的 URL为:
在这里插入图片描述
在这里插入图片描述
这时攻击者可利用这个 URL,稍做修改,发送给受害者,并引诱受害者在登录网站的情况下点击,如 URL 修改为 http://192.168.217.130/dvwa/vulnerabilities/csrf/? password_new =harker&password_conf = harker&Change =%E6%9B%B4%E6%9%B9#,受害者点击链接后,就会在不知情下把登录网站的密码修改为“harker”。
为了隐藏攻击者发送的URL,可将URL链接写在网页里,发布在攻击者的网站上,当受害者无意中浏览攻击者的网站时原有的密码被修改。
将安全级别调整至 Medium 级别,打开“CSRF”页面。
在这里插入图片描述
Medium 级别比Low 级别多了一个验证:if(stripos($_SERVER HTTPREFERER门SERVER['SERVER NAME )! == false)。
验证受害者访问的网页与修改密码网页是否同一网站。这时含有 CSRF 的网页就不能放在攻击者的服务器上了,而需要利用文件上传的方式上传至与受害者访问修改密码网页的网站上进行访问。
在这里插入图片描述
High 级别的代码加入了 Anti - CSRF token 机制,用户每次访问修改密码页面时,服务器都会返回一个随机的 token。向服务器发起请求时,需要提交 token 参数,而服务器在收到请求时,会优先检查 token,只有 token 正确,才会处理客户端的请求。要绕过这个机制,就需要获得 token 值,这需要一定的网页编程基础,这里就不赘述了。

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

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

相关文章

lv11 嵌入式开发 PWM 18

目录 1 PWM简介 1.1 蜂鸣器工作原理 1.2 GPIO控制 1.3 PWM控制 2 Exynos4412下的 PWM控制器 2.1 总览 2.2 设置步骤 2.3 功能框图 2.4 特征 3 寄存器介绍 3.1 总览 3.2 TCFG0 一级分频寄存器 3.3 TCFG1 二级分频寄存器 3.4 TCON控制寄存器 3.5 TCNTB TCMPB T…

lv12 系统移植导学 1

1 导学 Kernel学习主要包括三块内容,ARM(汇编、协议)、系统移植、驱动移植 lv12主要时安装系统linux linux主要帮我们实现了5大功能 1 进程、线程管理 2 内存管理 3 网络协议栈管理 4 文件系统管理 5 设备管理 2 移植的目的 不同架构…

Integer和int相比较

Integer和int相比较 一、 Integer类 在Java中,”万物皆对象“,但是八种基本数据类型是个例外,出于性能等方面的考虑,八种基本数据类型没有类和对象的概念,相应的变量值直接在栈内存中存放。但这带来了一些问题&#…

个人博客搭建保姆级教程-发布篇

发布方式 可以使用gitee或者github托管博客内容,然后直接在服务端nginx目录进行拉取。或者将内容压缩,拷贝到对应目录后再进行解压。 发布位置 前面我们已经部署了nginx服务器。这里我们需要将对应的html文件拉取或拷贝到对应的文件夹,即n…

使用linux CentOS本地部署SQL Server数据库

🌈个人主页:聆风吟 🔥系列专栏:数据结构、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 安装sql server二. 局域网测试连接三. 安装cpolar内网穿透四. 将sqlserver映射…

IDEA远程调试与JDWP调试端口RCE漏洞

文章目录 前言Docker远程调试Java调试原理远程调试实践 JDWP端口RCE调试端口探测调试端口利用 总结 前言 在对一些 Java CVE 漏洞的调试分析过程中,少不了需要搭建漏洞环境的场景,但是本地 IDEA 搭建的话既麻烦(通过 pom.xml 导入各种漏洞组…

[ 蓝桥杯Web真题 ]-布局切换

目录 介绍 准备 目标 规定 思路 解法参考 介绍 经常用手机购物的同学或许见过这种功能,在浏览商品列表的时候,我们通过点击一个小小的按钮图标,就能快速将数据列表在大图(通常是两列)和列表两种布局间来回切换。…

任何错误都不是单一的原因造成的,你的电脑没有正确启动的错误也不例外

当你的电脑无法启动到Windows时,你可能会看到“你的电脑没有正确启动”的错误。此错误表示启动过程中断,可能需要你注意,也可能不需要你注意。有时你可以通过重新启动计算机来解决这个问题,但如果不起作用,还有其他几种…

STM32——继电器

继电器工作原理 单片机供电 VCC GND 接单片机, VCC 需要接 3.3V , 5V 不行! 最大负载电路交流 250V/10A ,直流 30V/10A 引脚 IN 接收到 低电平 时,开关闭合。

Spring Boot 3.0 : 集成flyway数据库版本控制工具

目录 Spring Boot 3.0 : 集成flyway数据库版本控制工具flyway是什么为什么使用flyway主要特性支持的数据库: flyway如何使用spring boot 集成实现引入依赖配置sql版本控制约定3种版本类型 运行SpringFlyway 8.2.1及以后版本不再支持MySQL? 个人主页: 【⭐…

【算法Hot100系列】两数之和

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

《深入理解计算机系统》学习笔记 - 第四课 - 浮点数

Floating Point 浮点数 文章目录 Floating Point 浮点数分数二进制示例能代表的数浮点数的表示方式浮点数编码规格化值规格化值编码示例 非规格化的值特殊值 示例IEEE 编码的一些特殊属性四舍五入,相加,相乘四舍五入四舍五入的模式二进制数的四舍五入 浮…

Terminator的layout设置(一个新的一键启动思路)

首先你得有terminator: sudo apt install terminator然后就能使用了,我一般喜欢修改它原本的水平和垂直分割:用ctrlshifta和ctrlshifts 把屏幕先分成多块: 比如是这样的,接下来 右键->点击Preference 弹框中上方标…

C++:this指针

目录 前言 成员函数返回this指向的对象本身时,为什是返回引用类型? 成员函数返回this对象本身时,内部通常会通过拷贝构造函数来创建一个临时对象? 总结 前言 c通过提供特殊的对象指针,this指针 指向被调用的成员函…

Ubuntu下安装SDL

源码下载地址(SDL version 2.0.14):https://www.libsdl.org/release/SDL2-2.0.14.tar.gz 将源码包拷贝到系统里 使用命令解压 tar -zxvf SDL2-2.0.14.tar.gz 解压得到文件夹 SDL2-2.0.14 进入文件夹 执行命令 ./configure 执行命令 make…

Linux环境下socket本地通信

最近项目有用到了socket本地通信,故复习一下。之前都是基于本地虚拟机的ip地址通信的,现在项目,Linux单板上面有2个进程需要通信,故用到了本地socket通信,主要其实就是用了sockfd,文件描述符,也叫句柄。 服…

Android系统中使用Cunit测试C/C++接口

Android系统中使用Cunit测试C/C接口 Cunit是C/C语言的单元测试框架,但常用于Windows和Linux开发中。 Android系统中经常有jni、so库、hal service等都是C/C实现,本文讲解如何将Cunit嵌入Android中,用于测试一些C/C api。 Cunit简介 Cunit是很…

什么是CDN?用了CDN一定会更快吗?

文章目录 前言CDN是什么?CDN的工作原理为什么要加个CNAME那么麻烦?怎么知道哪个服务器IP里调用方最近? 回源是什么回源是什么?那还有哪些情况会发生回源呢? 怎么判断是否发生回源用了CDN一定比不用的更快吗?什么情况下…

C语言笔试例题_指针专练30题(附答案解析)

C语言笔试例题_指针专练30题(附答案解析) 指针一直是C语言的灵魂所在,是掌握C语言的必经之路,收集30道C语言指针题目分享给大家,测试环境位64位ubuntu18.04环境,如有错误,恳请指出,文明讨论!&am…

【git】关于git二三事

文章目录 前言一、创建版本库1.通过命令 git init 把这个目录变成git可以管理的仓库2.将修改的内容添加到版本库2.1 git add .2.2 git commit -m "Xxxx"2.3 git status 2.4 git diff readme.txt3.版本回退3.1 git log3.2 git reset --hard HEAD^ 二、理解工作区与暂存…