DVWA靶场Command Injection(命令注入) 漏洞low(低),medium(中等),high(高)所有级别通关教程及源码审计

news/2025/1/7 9:40:26/文章来源:https://www.cnblogs.com/GuijiH6/p/18643521

命令注入

命令注入漏洞是一种安全漏洞,攻击者可以通过向应用程序输入恶意命令,诱使系统执行这些命令,从而达到未授权访问、数据篡改、系统控制等目的。该漏洞通常出现在应用程序未对用户输入进行充分验证和清理时

常见管道符:

;     前面的执行完执行后面的
|     上一条命令的输出,作为下一条命令的参数(显示后面的执行结果)         
||    当前面的执行出错时(为假)执行后面的
&     将任务置于后台执行(不管前面是否为真都执行后面)
&&    前面的语句为假则直接出错,后面的也不执行,前面只能为真
%0a  (换行)
%0d  (回车)

如果出现乱码现象,可以如下更改

如下替换编码方式即可

low

ping 127.0.0.1试试,可以看到正常回显

执行 下面语句都可以,没有任何过滤

127.0.0.1 ; date
127.0.0.1 || date
127.0.0.1 | date
127.0.0.1 & date
127.0.0.1 && date

源码审计

没有做任何过滤,很容易被攻击

<?php// 检查是否通过 POST 方法提交了表单
if( isset( $_POST[ 'Submit' ]  ) ) {// 获取用户输入的 IP 地址$target = $_REQUEST[ 'ip' ];// 判断操作系统并执行 ping 命令if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// 如果是 Windows 系统$cmd = shell_exec( 'ping  ' . $target );}else {// 如果是类 Unix 系统$cmd = shell_exec( 'ping  -c 4 ' . $target );}// 将命令执行的结果反馈给用户$html .= "<pre>{$cmd}</pre>";
}
?>

medium

经过测试,发现 ";" "&&"被过滤了,其他的可以正常利用

源码审计

只过滤了**""&&" ";" **字符,不严格

<?php// 检查是否通过 POST 方法提交了表单
if( isset( $_POST[ 'Submit' ]  ) ) {// 获取用户输入的 IP 地址$target = $_REQUEST[ 'ip' ];// 设置黑名单,列出需要过滤的字符$substitutions = array('&&' => '',  // 去掉 &&';'  => '',  // 去掉 ;);// 将黑名单中的字符从输入中去除$target = str_replace( array_keys( $substitutions ), $substitutions, $target );// 判断操作系统并执行 ping 命令if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// 如果是 Windows 系统$cmd = shell_exec( 'ping  ' . $target );}else {// 如果是类 Unix 系统$cmd = shell_exec( 'ping  -c 4 ' . $target );}// 将命令执行的结果反馈给用户$html .= "<pre>{$cmd}</pre>";
}
?>

high

通过测试以及对源码的审核,发现一处过滤不严格的地方,这个只是过滤了 '| ' 这样的模式,如果| 后面不加空格则无法过滤

可以正常回显

源码审计

<?php// 检查是否通过 POST 方法提交了表单
if( isset( $_POST[ 'Submit' ]  ) ) {// 获取用户输入,去除多余空格$target = trim($_REQUEST[ 'ip' ]);// 设置黑名单,列出需要剔除的字符$substitutions = array('&'  => '',  // 去掉 &';'  => '',  // 去掉 ;'| ' => '',  // 去掉 |      //此处过滤不严格,用户可以通过 |date 来绕过'-'  => '',  // 去掉 -'$'  => '',  // 去掉 $'('  => '',  // 去掉 (')'  => '',  // 去掉 )'`'  => '',  // 去掉 `'||' => '',  // 去掉 ||);// 将黑名单中的字符替换为空$target = str_replace( array_keys( $substitutions ), $substitutions, $target );// 判断操作系统并执行 ping 命令if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// 如果是 Windows 系统$cmd = shell_exec( 'ping  ' . $target );}else {// 如果是类 Unix 系统$cmd = shell_exec( 'ping  -c 4 ' . $target );}// 将命令执行的结果反馈给用户$html .= "<pre>{$cmd}</pre>";
}
?>

impossible

源码审计

采用了白名单过滤,总体来说更加安全

<?php// 检查表单是否提交
if( isset( $_POST[ 'Submit' ]  ) ) {// 检查反跨站请求伪造(Anti-CSRF)令牌checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// 获取输入$target = $_REQUEST[ 'ip' ];$target = stripslashes( $target ); // 去除输入字符串中的反斜杠// 将IP地址分割成4个八位字节$octet = explode( ".", $target );// 检查每个八位字节是否为整数if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {// 如果四个八位字节都是整数,则重新组合IP地址$target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];// 确定操作系统并执行ping命令if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// Windows系统$cmd = shell_exec( 'ping  ' . $target );}else {// Unix/Linux系统$cmd = shell_exec( 'ping  -c 4 ' . $target );}// 向用户提供反馈$html .= "<pre>{$cmd}</pre>";}else {// 出现错误,告知用户输入的IP无效$html .= '<pre>ERROR: You have entered an invalid IP.</pre>';}
}// 生成反跨站请求伪造令牌
generateSessionToken();?>

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

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

相关文章

车身舒适系统HIL仿真测试解决方案

车身舒适控制系统是指为驾驶人员提供舒适性控制的装置,伴随着车身舒适系统日益复杂化,系统级的自动测试手段对于保证现今复杂车身舒适系统的功能稳定性验证非常重要,经纬恒润基于HIRAIN TESTBASE平台开发的车身舒适系统测试系统,针对车身舒适域的电控单元实现了在实验室条件…

【数据清洗秘籍】如何避免Pandas中的科学计数法陷阱

在数据分析的世界里,数据清洗是一项不可或缺的工作。我们经常需要将数据从一种格式转换为另一种格式,以适应分析的需求。然而,在处理数值数据时,一个常见的问题就是数值被自动转换为科学计数法,尤其是当数值非常大时。这不仅影响了数据的可读性,还可能对后续的分析造成影…

线性化注意力综述:突破Softmax二次复杂度瓶颈的高效计算方案

大型语言模型在各个领域都展现出了卓越的性能,但其核心组件之一——softmax注意力机制在计算资源消耗方面存在显著局限性。本文将深入探讨如何通过替代方案实现线性时间复杂度,从而突破这一计算瓶颈。注意力机制基础理论 本文假设读者已经熟悉ChatGPT、Claude等模型及其底层的…

shadcn 表格有间距,然后给某一行加边框显示不出来,用div覆盖

`pointer-events-none` 到边框 `div` 上,以确保它不会干扰用户与表格的交互。 {isToday && ( <div className="absolute inset-0 border-2 border-yellow-400 pointer-events-none" /> )}

[241230]相较于NSAID和csD, TNFi显著降低axSpA髋和脊柱的骨折风险

该研究最早展示于ACR2024年会, 目前已提前在线发表于ACR官刊A&RDriscoll D, et al. Association of Therapies for Axial Spondyloarthritis on the Risk of Hip and Spine Fractures. Arthritis Rheumatol. 2024 Dec 16. https://pubmed.ncbi.nlm.nih.gov/39679763/ ◀

激活navicat 15

虽然我激活了DataGrip ,但是我还是习惯用 navicat ,所以打算重新激活一下 这个激活流程就稍微复杂一些 首先下载这些工具navicat15下载:官网下载:http://download.navicat.com.cn/download/navicat150_premium_cs_x64.exe云盘下载:https://wwe.lanzoum.com/iCYQ900vdntc 密…

X00119-SDN下移动边缘计算市场中的智能动态数据卸载python实现

软件定义网络(SDN)和移动边缘计算(MEC),能够动态管理和满足终端用户的计算需求,已经成为5G网络的关键使能技术。此项目研究了在多MEC服务器和多终端用户环境下,终端用户选择MEC服务器及其数据卸载的联合问题,以及MEC服务器的最优定价问题。SDN技术提供的灵活性和可编程…

【分布式框架】XXL-RPC v1.8.0

一、Release Notes 1、【重构】针对 “Core/核心模块” 进行架构模块化重构,拆分 Provider、Invoker、Serializer、Remoting、Registry 和 Boot 等六个核心模块:Provider:定位为服务提供者,提供RPC服务端能力,包括RCP/HTTP Server、业务Service扫描维护、服务执行等能力。…

解决U盘不能传输大文件的问题

将“文件系统”改成“NTFS”,默认一般是FAT32,然后点击格式化即可。注意U盘不要有重要数据避免数据丢失

网站打开不稳定,如何排查和解决?

网站打开不稳定可能由多种因素引起,包括服务器性能、网络问题、代码错误等。以下是详细的排查步骤和解决方案,帮助您找到并解决问题:检查服务器性能:CPU和内存使用情况:使用 top 或 htop 命令查看服务器的CPU和内存使用情况。如果资源占用过高,可能导致网站响应缓慢或无法…

服务器配置显示异常,带宽和内存与预期不符

关于您提到的服务器配置显示异常的问题,我们非常理解您的困惑。根据您的描述,您发现服务器的带宽从原来的8M变成了4M,内存也从4G变成了2G。为了帮助您更好地解决这个问题,我们需要进行以下几个步骤的排查和确认。 首先,请确保您登录的是正确的服务器账号和密码。有时由于多…

如何处理服务器端口888突然无法访问的问题

关于您提到的服务器端口888突然无法访问的问题,我们非常理解您的困扰。根据您的描述,宝塔面板因存在致命漏洞,为了保障数据安全,我们在安全组中暂时阻止了888端口。以下是详细的解决方案和建议,帮助您尽快恢复正常访问。 首先,强烈建议您立即更新宝塔面板的安全补丁。这是…