目录
一、Linux提权案例
案例背景:对与攻击机同网段的未知密码靶机(Linux)进行提权。
打开靶机,只得到了版本信息。(这里有个小bug,搜一下靶机名lampiao的话直接就有writeup了哈哈哈,假装没看见,继续渗透)
打开Kali,ipconfig看一下ip:
由于Kail和靶机处于同网段,于是用nmap扫一下,看是否有可疑主机:
nmap 172.16.80.147/24
找到一个开了80端口http服务的可疑的IP,尝试浏览器访问一下:
发现靶机地址。在这个网页翻了一下,没找到什么特别的,于是再回Kali全端口扫描一下这个IP。
nmap -T4 -p- 172.16.80.161
看到还开了一个1898端口,于是尝试访问172.16.80.161:1898。
尝试猜了一下账号密码,均失败。打开浏览器插件Wappalyzer(只支持Google浏览器)看一下:
发现该网站所用CMS框架为Drupal。
回到Kali,启动msf,查询一下Drupal相关漏洞:
msfconsole # 进入msf
search drupal # 搜索目标cms
use 1 # 选择1号模块使用
show options # 设置参数
选择序号为1的模块:
输入show options设置参数:
设置IP、端口,然后run。
获取shell,看看id和内核版本。
下载提权脚本,压缩包拖到Kali,解压后上传到靶机。
提权脚本:GitHub - The-Z-Labs/linux-exploit-suggester: Linux privilege escalation auditing tool
在meterpreter上传文件(注意:应该上传到一个肯定存在的目录):
upload /home/yubaibaio/linux-exploit-suggester-master/linux-exploit-suggester.sh /tmp/tatget.sh
这里有点bug,回车上传过后命令就不显示了,但是确实是传过去了。
进入shell看有没有传到目标主机
发现没有可执行权限,于是+x
输入【./ tatget.sh】执行脚本。扫出来一堆漏洞,可选择利用CVE-2016-5195脏牛漏洞来提权。
项目地址:https://github.com//gbonacini//CVE-2016-5195
下载后拖到kali解压,同理把里面的dcow.cpp上传。
upload /home/yubaibaio/CVE-2016-5195-master/dcow.cpp /tmp/aim.cpp
回shell,到目录ls -al查看是否上传成功:
编译上传。
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o aim aim.cpp -lutil
执行,爆出密码!
知道密码了,切终端,用刚刚的密码登录。
成功提权!
二、Linux内核提权利用步骤
2.1 收集内网信息
1. 在命令行通过各种命令收集信息。
uname -a # 内核版本
lsb_release -a # os版本
cat /etc/redhat-release # 系统发行版信息(不同虚拟机可能不同,*release)
2. 如果无法登录,可以使用nmap或fscan等扫描工具收集目标系统信息,包括操作系统版本、内核版本、运行的服务、开放的端口、已安装的软件等。
2.2 查找已知漏洞
使用工具如MSF中的【search xxx】来搜索特定内核版本和软件版本的已知漏洞。
2.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
漏洞可直接使用msf进行上传。
2.4 内核漏洞利用
在目标系统上编译漏洞,随后执行以利用代码,获得root权限。
Linux提权开源项目
# shell脚本:
https://github.com/the-Z-labs/linux-exploit-suggester
https://github.com/diego-treitos/linux-smart-enumeration
https://github.com/redcode-labs/Bashark
https://github.com/rebootuser/LinEnum
# python开发
https://github.com/belane/linux-soft-exploit-suggester
# go语言开发,可能需要先编译
https://github.com/liamg/traitor
# Perl语言开发
https://github.com/jondonas/linux-exploit-suggester-2
# 有多种编译方案
https://github.com/carlospolop/PEASS-ng
三、Linux常用命令
ls # 列出当前目录下的文件及目录 可加常用选项 -a -l
cd # 切换目录
pwd # 显示当前所在目录
find path -name "XX" # 在XX目录树中找文件(可配合管道符+grep使用)
chmod # 更改文件或目录的访问权限
chown # 更改文件或目录的所有者
chgrp # 更改文件或目录的组
ping # 发送查看主机是否能连通
ifconfig # 配置或显示网络接口的网络参数
netstat # 显示网络连接、路由表等网络信息
uname -a # 看版本、内核等
wget/curl # 从网络上下载文件
cat /etc/hosts # 查看host解析记录
ps # 显示当前运行的进程
ps aux # 显示所有进程
kill # 杀进程
env # 显示所有环境变量
vim # 编辑或新建某文件
cat # 查看某文件内容
echo # 输出文本到控制台
tar # 打包、压缩或解压缩文件
zip/unzip # 处理 ZIP 文件
systemctl status/stop/start service # 查看/启动/关闭某服务