一、复现上课的提权案例
1、将案例文件用VMware打开,进入命令行界面要求用户名和密码。
2、打开kail虚拟机,由于kail和目标位于同于网段,因此在kail中输入ifconfig查看ip地址,然后用输入nmap 192.168.226.0/24进行扫描。
3、扫描出IP地址为192.168.226.134开启了http,查看该网址。
4、暂时得不到信息,再回到kail用nmap扫描该网址全端口,结果发现还有端口1898开放。
5、查看192.168.226.134:1898进入新页面,尝试一下弱口令失败。打开浏览器插件wappalyzer发现该网站所用CMS框架为drupal。
6、启动kail上的msf,输入search drupal查询。
7、选择序号为1的模块,输入以下命令进入,输入show options出现设置提示。
8、按照提示设置目标IP地址和端口,然后输入run入侵目标。
9、输入图中命令,搜集目标内核系统信息。
10、下载针对提权的扫描脚本,将其上传到靶机上,上传成功后为脚本文件增加可执行权限。
所用脚本下载链接:https://github.com/The-Z-Labs/linux-exploit-suggester
11、 输入./1.sh执行,在扫出来的一大推漏洞中我们选择利用CVE-2016-5195脏牛漏洞来提权。
12、在PoC in github上查找该漏洞情报,找到作者gbonacini的漏洞链接。
GitHub - nomi-sec/PoC-in-GitHub: 📡 PoC auto collect from GitHub. ⚠️ Be careful Malware.
13、进入该作者的主页面就可以看到有关漏洞5195的提权脚本,下载下来,上传到kail并解压可以看到dcow.cpp文件。
14、将dcow.cpp上传到靶机,输入以下命令将cpp文件编译为可执行文件。
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o ggbond ggbond.cpp -lutil
15、执行编译好的程序,成功得到靶机的root密码,切换到root用户并输入得到的密码,可以成功登陆,提权成功。
二、总结linux内核提权利用步骤
1、信息收集:先用nmap扫描同网段查找靶机ip,再在该ip上进行全端口扫描,看看是否有非常规端口开放,根据扫描出的ip和端口访问网页,利用wappalyzer插件或fingsomething插件查找网站信息,如CMS、中间件、编程语言等。打开kail的msf,根据查找到的CMS框架搜索相关后门进行入侵,入侵成功后输入uname -a等命令搜索Linux靶机内核系统信息。
2、漏洞分析:根据搜集的信息选择合适的提权扫描工具,将工具上传到靶机并执行,分析并选择可以利用的提权漏洞,到相关网站上查找该漏洞的利用方式或脚本程序。
3、上传exp并提权:将exp上传到靶机并执行,若执行成功就能拿到root密码,利用得到的密码登录靶机的root用户,登录成功即成功提权。
针对Linux提权的扫描脚本
https://github.com/The-Z-Labs/linux-exploit-suggester -- shell脚本
https://github.com/belane/linux-soft-exploit-suggester -- python开发
https://github.com/liamg/traitor--go语言开发,可能需要先编译
https://github.com/jondonas/linux-exploit-suggester-2-- Perl语言开发
扫播Linux提权一体化的扫描脚本
https://github.com/carlospolop/PEASS-ng--有多种编译方案
https://github.com/diego-treitos/linux-smart-enumeration -- shel1脚本
https://github.com/redcode-labs/Bashark -- shel1脚本
https://github.com/rebootuser/LinEnum -- shell脚本
exp获取:
https://github.com/Ascotbe/Kernelhub
http://kernelhub.ascotbe.com/Windows/Docs/#/
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/nomi-sec/PoC-in-GitHub
https://gitlab.com/exploit-database/exploitdb
三、总结Linux常用命令,10个以上
-
s:列出目录内容。这是最基本的文件操作命令之一,用于显示当前目录下的文件和子目录。使用
-l
选项可以查看详细信息,包括文件权限、所有者、大小等。 -
cd:更改当前工作目录。通过输入目标目录的路径,可以切换到该目录下进行后续操作。例如,
cd /home
会切换到/home
目录。 -
pwd:显示当前工作目录的完整路径。这个命令在不清楚当前位置时非常有用。
-
cp:复制文件或目录。例如,
cp source.txt destination.txt
会将source.txt
复制为destination.txt
。使用-r
选项可以递归复制目录。 -
mv:移动或重命名文件/目录。
mv
命令既可以用于将文件或目录移动到新位置,也可以用于更改文件或目录的名称。例如,mv oldfile.txt newfile.txt
会将oldfile.txt
重命名为newfile.txt
。 -
rm:删除文件或目录。使用
rm
命令时需要小心,因为一旦删除,文件将不可恢复(除非有备份)。使用-r
选项可以递归删除目录及其内容。 -
mkdir:创建新目录。通过指定目录名称,可以在当前位置或指定路径下创建新目录。例如,
mkdir newdir
会创建名为newdir
的新目录。 -
touch:创建空文件或更改现有文件的时间戳。如果文件不存在,
touch
命令会创建一个空文件;如果文件已存在,则更新其访问和修改时间。 -
grep:在文件中搜索指定内容。
grep
命令非常强大,支持正则表达式,能够高效地搜索文件中的文本内容。例如,grep "example" file.txt
会在file.txt
中搜索包含"example"的行。 -
find:在目录树中搜索文件。
find
命令比grep
更强大,因为它不仅可以在文件中搜索内容,还可以根据文件名、类型、大小等多种条件搜索文件。例如,find / -name "file.txt"
会在根目录及其子目录中搜索名为file.txt
的文件。 -
chmod:更改文件或目录的权限。通过指定权限数字或符号,可以控制谁可以读取、写入或执行文件/目录。例如,
chmod 755 file.txt
会将file.txt
的权限设置为所有者可读写执行,组用户和其他用户可读可执行。 -
chown:更改文件或目录的所有者和所属组。这对于管理文件和目录的访问权限非常重要。例如,
chown user:group file.txt
会将file.txt
的所有者更改为user
,所属组更改为group
。 -
ps:显示当前系统中的进程状态。使用
ps
命令可以查看哪些程序正在运行,以及它们的进程ID、CPU和内存使用情况等信息。 -
top:实时显示系统中各个进程的资源占用情况。
top
命令提供了一个动态的视图,允许用户看到系统中最耗资源的进程,并可以对它们进行排序和管理。 -
kill:发送信号给指定的进程,通常用于结束进程。通过进程ID(PID),可以使用
kill
命令向进程发送信号,以请求它终止运行。 -
ifconfig 或 ip addr show:显示和配置网络接口。这两个命令都用于查看和管理网络接口的配置信息,如IP地址、子网掩码等。不过,请注意
ifconfig
命令在某些现代Linux发行版中可能已被ip
命令取代。 -
ping:测试网络连接。
ping
命令通过发送ICMP回显请求消息给目标主机,并监听回显应答来测试主机之间的网络连通性。 -
wget 或 curl:从网络上下载文件。这两个命令都是强大的网络下载工具,能够下载HTTP、HTTPS、FTP等协议的文件。
-
ssh:远程登录其他计算机。
ssh
是一种安全协议,用于加密两台计算机之间的通信,并提供远程登录功能。 -
tar:打包和解压文件。
tar
命令可以将多个文件和目录打包成一个文件,便于存储和传输。同时,它还可以用于解压打包的文件。