zoukankan      html  css  js  c++  java
  • web漏洞之命令执行

     一、概述

    1.1何为命令执行

      攻击者通过web应用可以执行系统命令,从而获得敏感信息,进而控制服务器攻击内网。

    1.2产生条件

           1.应用调用执行命令的函数

           2.将用户输入作为系统命令的参数拼接到命令中

      3.没有对用户输入的过滤或者过滤不严格

    1.2常见命令

    1.2.1 Windows

    dir

    列出目录

    Ipconfig

    查看ip

    arp -a

    查看路由表

    Calc

    打开计算器

    Regedit

    打开注册表

    netstat -ano

    查看服务端口信息

    1.2.2 linux

    Cat /etc/passwd

    查看password文件内容

    Id

    查看当前用户的id号(Windows中500表示admin,501表示游客,自定义用户100以上)

    Cat /etc/group

    查看用户组文件内容

    Pwd

    显示当前目录

    Uname -a

    查看当前系统版本

    Natstat -pantu

    查看当前服务的端口信息

    Netstat -nr

    查看网关和路由

     

    1.3常见命令拼接符

    格式

    内容

    A;B

    先执行A,再执行B

    A&B

    简单拼接,A B之间无制约关系

    A|B

    显示B的执行结果

    A&&B

    A执行成功,然后才会执行B

    A||B

    A执行失败,然后才会执行B

     

     

    二、产生原理

      应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

    三、防御方法

      1.尽量少用执行命令的函数或者直接禁用

           2.参数值尽量使用引号包括,并在拼接前调用addslashes函数进行转义

           3.在使用动态函数之前,确保使用的函数是指定的函数之一

           4.在进入执行命令的函数方法之前,对参数进行过滤,对敏感字符进行转义

      5.对于可控点是程序参数的情况下,使用escapeshellcmd函数进行过滤,对于可控点是程序参数值的情况下,使用  escapeshellarg函数进行过滤

    四、危害

           1.继承Web服务程序的权限去执行系统命令或读写文件。

           2.反弹shell

           3.控制整个网站甚至控制服务器。

      4.进一步内网渗透

    五、php常见危险函数

           system:成功则返回命令输出的最后一行,失败则返回FALSE。

           exec:命令执行结果的最后一行内容。

           shell_exec:命令执行的输出。如果执行过程中发生错误或者进程不产生输出,则返回NULL。

           passthru:执行外部程序并且显示原始输出。

      eval:将输入的字符串参数当做PHP程序代码来执行  

  • 相关阅读:
    NPOI创建DOCX常用操作
    【Python】django多对多 查询 ,反查等操作
    【Python】python 普通继承方式和super继承方式
    【云计算】开源装机自动化系统 CloudBoot OSInstall 介绍
    【Python】Python AES 对称加密示例
    【Python】Django 如何直接返回404 被 curl,wget 捕获到
    【Python】Django 支持 restful 风格 url
    【Python】Django 聚合 Count与Sum用法,注意点
    【Python】使用 boto 调用 S3 对象存储API
    【Other】千字文 硬笔 楷书 字帖
  • 原文地址:https://www.cnblogs.com/bin1121/p/12551588.html
Copyright © 2011-2022 走看看