渗透测试——七、网站漏洞——命令注入和跨站请求伪造(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 值,这需要一定的网页编程基础,这里就不赘述了。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM理解

1、JVM是什么? JVM是Java Virtual Machine(Java虚拟机)的缩写,由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。 他是帮助我们将java代码 生成编译后 的 class 文件。 2、JRE、JDK和JVM 的关系 …

十六、FreeRTOS之FreeRTOS队列集

本节需要掌握以下内容: 1,队列集简介(了解) 2,队列集相关API函数介绍(熟悉) 3,队列集操作实验(掌握) 一、队列集简介(了解) 一个…

CopyOnWriteArraySet怎么用

简介 CopyOnWriteArraySet是一个线程安全的无序集合,它基于“写时复制”的思想实现。它继承自AbstractSet,可以将其理解成线程安全的HashSet。 CopyOnWriteArraySet在读取操作比较频繁、写入操作相对较少的情况下可以提高程序的性能和可靠性。它的线程…

java学习part40collections工具类

162-集合框架-Collections工具类的使用_哔哩哔哩_bilibili 1.collections工具类 感觉类似c的algorithm包,提供了很多集合的操作方法 2.排序 3.查找 4.复制替换 5.添加,同步

springboot 整合 Spring Security 中篇(RBAC权限控制)

1.先了解RBAC 是什么 RBAC(Role-Based Access control) ,也就是基于角色的权限分配解决方案 2.数据库读取用户信息和授权信息 1.上篇用户名好授权等信息都是从内存读取实际情况都是从数据库获取; 主要设计两个类 UserDetails和UserDetailsService 看下…

硬件基础:运放

理想运算放大器 理想运算放大器放大倍数无穷大;输入端阻抗无穷大,所以输入端电流为0;输出电压和负载无关,不管负载怎么变化,输出电压都是固定的。 还有个就是输出阻抗为0; 输出阻抗越小,输出时就…

12.Java程序设计-基于Springboot框架的Android学习生活交流APP设计与实现

摘要 移动应用在日常生活中扮演着越来越重要的角色,为用户提供了方便的学习和生活交流渠道。本研究旨在设计并实现一款基于Spring Boot框架的Android学习生活交流App,以促进用户之间的信息分享、学术交流和社交互动。 在需求分析阶段,我们明…

Python机器学习、深度学习入门丨气象常用科学计算库、气象海洋常用可视化库、爬虫和气象海洋数据、气象海洋常用插值方法、EOF统计分析、WRF模式后处理等

目录 专题一 Python软件的安装及入门 专题二 气象常用科学计算库 专题三 气象海洋常用可视化库 专题四 爬虫和气象海洋数据 专题五 气象海洋常用插值方法 专题六 机器学习基础理论和实操 专题七 机器学习的应用实例 专题八 深度学习基础理论和实操 专题九 深度学习的应…

企业级 接口自动化测试框架:Pytest+Allure+Excel

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。 Allure 是由 Java 语言开发…

低代码是伪需求吗?它会让程序员失业吗?它是行业毒瘤吗?我对低代码开发的看法

一、什么是低代码 低代码是一种通过可视化进行应用程序开发的方法,它可以使具有不同经验水平的开发人员通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。 低代码开发平台使非技术开发人员可以不必编写代码,而…

JavaSE基础50题:11. 输出一个整数的每一位

概述 输出一个整数的每一位。 如:1234的每一位是4,3,2,1 。 个位:1234 % 10 4 十位:1234 / 10 123 123 % 10 3 百位:123 / 10 12 12 % 10 2 千位: 12 / 10 1 代码 ublic sta…

LLM(五)| Gemini:谷歌发布碾压GPT-4最强原生多模态,语言理解能力首次超过人类

2023年12月6日,Google重磅发布了原生多模态大模型Gemini,碾压GPT-4,语言理解能力首次超过人类。 一、Gemini介绍 以下内容来自谷歌DeepMind首席执行官兼联合创始人Demis Hassabis代表Gemini团队: 人工智能一直是我一生工作的重点…