Windows和Linux系统提权
本文最后更新于:2 年前
Windows提权
内核补丁提权
在目标机执行systeminfo
命令,再把得到的信息复制粘贴到以下网站。
提权辅助网站:http://bugs.hacking8.com/tiquan/
数据库提权
由于篇幅太长,所以单独写了一篇文章。具体方法,可参考本人的另一篇文章。
计划任务提权
Windows自带的计划任务分为at
和schtasks
两种。
AT提权:适用于win7以下的逻辑性利用,创造新的指定文件时间允许,将获取system权限
1 |
|
SC反弹–创建服务:绑定执行文件cmd,执行弹出system提权
1 |
|
PS提权(仅win2008):需要win安装pstools/ps插件,允许即可
1 |
|
DLL劫持提权
Windows程序启动的时候需要dll(动态链接库)。如果这些dll不存在,则可以通过在应用程序要查找的位置放置恶意dll来提权。通常,Windows应用程序有其预定义好的搜索dll的路径,它会根据下面的顺序进行搜索:
1.应用程序加载的目录
2.C:\Windows\System32
3.C:\Windows\System
4.C:\Windows
5.当前工作目录Current Working Directory,CWD
6.在PATH环境变量的目录(先系统后用户)
这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件。
lpk.dll提权
系统本身的lpk.dll文件位于C:\WINDOWS\system32和C:WINDOWS\system\dllcache目录下。lpk.dll病毒的典型特征是感染存在可执行文件的目录,并隐藏自身,删除后又再生成,当同目录中的exe文件运行时,lpk.dll就会被Windows动态链接,从而激活病毒,进而导致不能彻底清除。
这里我们使用t00ls论坛编写的dll提权小工具–T00ls Lpk Sethc v4(使用时务必关掉杀软)。不过使用前提是对方服务器开启了远程桌面功能(不一定是3389端口,这时可以用tasklist /svc
命令查看pid,再用netstat -ano
命令查找对应端口)。
在拿到webshell的前提下,将lpk.dll上传到目标服务器带有exe的目录下,当exe被执行后,就会动态链接lpk.dll。当用户重启机器时,lpk.dll会劫持远程连接。这时我们只需连按5次shift键启用后门,并同时按住Ctrl键和设定的两个热键,就会弹出密码框。接下来的操作就很容易了,图形化界面有手就行。
第三方软件提权
第三方软件提权,就是利用第三方软件存在的漏洞来进行获取一个权限的操作。
搜狗输入法提权
由于搜狗输入法默认设置是自动更新(很少有人去更改这个设置),更新程序没有对exe做任何校验直接在输入法升级时调用运行,而且搜狗输入法为了方便更新,所在文件夹默认读写、执行权限全开,导致我们可以上传bat脚本编译后的恶意exe程序,替换原有的更新程序,进行提权操作。
在获取webshell的前提下,在某个盘下找到了搜狗的路径:x:\Program Files\SogouInput。
编写以下批处理脚本(这里以创建用户并添加管理员组为例):
1 |
|
用Quick Batch File Compiler编译为exe程序,上传我们的PinyinUp.exe文件,把之前搜狗路径下的PinyinUp文件改个名字。当服务器管理员更新词库的时候就会调用我们的PinyinUp.exe程序,然后执行我们之前写的bat脚本中的命令,即添加hack用户到管理员组。
迅雷提权
我们每次在网页中使用迅雷下载文件时,迅雷都会自动调用安装目录中的geturl.htm和getAllurl.htm文件来获取下载链接、bt种子等资源。我们可以利用这一特性,更改迅雷安装目录下的这两个文件。而且迅雷安装目录的所有权限全开,也给我们提权提供了便利。同样的,需要通过webshell找到迅雷安装目录。
在其中任意一个文件结尾加上这段vbs脚本代码:
1 |
|
当服务器管理员使用迅雷下载文件时,VBScript脚本里面的命令便会执行,提权操作顺利完成。
Linux提权
Linux提权相对于windows来说方法比较单一,主要提权方式为suid提权,内核提权,环境变量提权,计划任务提权,第三方服务提权,今天来记载一下关于suid提权以及内核提权,以及对目标linux信息收集的判断,以及漏洞探针。
内核提权
在进行Linux内核提权之前,我们一般先查看内核版本:
1 |
|
通过内核版本找到对应exp后,在拿到webshell的前提下反弹shell:
1 |
|
在Linux系统内进行编译并赋权:
1 |
|
运行exp:
1 |
|
验证提权是否成功:
1 |
|
如果返回结果是root,则提权成功。无论哪个Linux发行版都是如此。
但是手工信息收集效率不高,这里推荐两款信息收集与漏洞探针的自动化脚本,
信息收集:LinEnum.sh
漏洞探针:linux-exploit-suggster2
suid提权
首先了解suid与guid概念,所谓suid就是使用具有suid的文件时候,将可以赋予suid权限命令的用户一样的权限去运行这个文件,好比root给a文件赋予suid,当我们以普通权限user去运行a,也将以root权限运行该文件。guid的概念就是将suid里面user用户的权限更改为group组的。
1 |
|
suid命令查询网站:https://gtfobins.github.io/
总结
1.提权方法有部分适用在不同环境,当然也有通用方法
2.提权方法也有操作系统版本区分,特性决定方法利用面
3.提权方法有部分需要特定环境,如数据库,第三方提权等
提权的骚姿势还有很多,例如中间件漏洞提权、令牌窃取提权,由于篇幅有限,这里我就不展开了。