靶机:172.16.10.11
攻击机:172.16.10.10
一、信息收集
1、获取目标服务器操作系统指纹
2、获取端口情况
C:UsersAdministrator>nmap -sS -sV -A -T4 172.16.10.11
Starting Nmap 7.93 ( https://nmap.org ) at 2023-12-31 22:26 中国标准时间
NSOCK ERROR [0.2840s] ssl_init_helper(): OpenSSL legacy provider failed to load.
Nmap scan report for 172.16.10.11
Host is up (0.00020s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)
| ssh-hostkey:
| 1024 c4d659e6774c227a961660678b42488f (DSA)
| 2048 1182fe534edc5b327f446482757dd0a0 (RSA)
|_ 256 3daa985c87afea84b823688db9055fd8 (ECDSA)
80/tcp open http Apache httpd 2.2.22 ((Debian))
|_http-server-header: Apache/2.2.22 (Debian)
|_http-generator: Drupal 7 (http://drupal.org)
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt
|_/LICENSE.txt /MAINTAINERS.txt
|_http-title: Welcome to Drupal Site | Drupal Site
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 38521/tcp status
| 100024 1 46663/udp6 status
| 100024 1 50532/udp status
|_ 100024 1 60972/tcp6 status
MAC Address: 00:0C:29:10:AD:71 (VMware)
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.2 - 3.16
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.20 ms 172.16.10.11
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.80 seconds
可看到该服务器运行了Openssh6.0和httpd2.2.2以及rpcbind三个服务,从这里已经有多种攻击方案了,这里我们不选择22和111这两个简单的方式,既然服务器开了80端口,这里访问Web看看
3、web信息收集
打开主页发现是一个电信的drupal服务,根据wappalyzer插件可知当前运行的是Drupal 7的CMS,这里我们是不知道该后台的账号和密码,但在下方一个账户创建和密码重置入口,这里先创建一个账号看看
执行创建后发现注册成功,结果如下所示
登入测试,发现刚创建的账号没有创建任何的首页内容
看来这个办法是行不通,测试系统账号是否有admin
发现系统已有admin账号,这里可以使用bp抓包查看传输参数
这里比较简单略过
二、漏洞利用
前面我们已经知道了该网站是使用的是drupal服务并且已知版本为7.x,这里我们查看一下7.x有那些攻击模块,对已有实战经验的人可以使用自己写的payload。
1、选择exploit
这里使用msf下的payload,选择第2个测试一下
2、配置payload参数
3、运行payload
发现已经拿到服务器系统会话,接着查看权限
发现只有web用户的权限并没有操作系统的权限,接下查看系统信息,
在网站目录下除了网站源代码外,还发现了一个flag1.txt,使用cat查看,提示我们需要一个配置文件才可以看到。尝试遍历目录,结果在sites目录下的default目录下找到了php的配置文件,default-settings.php,打开这文件发现是一个flag2。flag2提示,暴力和字典攻击不是常见的
还找到了数据库的用户名密码,数据库名称等信息。
这里我们进入交互模式并登入MySQL看看有那些信息
4、查看数据库有那些表
+-----------------------------+
| Tables_in_drupaldb |
+-----------------------------+
| actions |
| authmap |
| batch |
| block |
| block_custom |
| block_node_type |
| block_role |
| blocked_ips |
| cache |
| cache_block |
| cache_bootstrap |
| cache_field |
| cache_filter |
| cache_form |
| cache_image |
| cache_menu |
| cache_page |
| cache_path |
| cache_update |
| cache_views |
| cache_views_data |
| comment |
| ctools_css_cache |
| ctools_object_cache |
| date_format_locale |
| date_format_type |
| date_formats |
| field_config |
| field_config_instance |
| field_data_body |
| field_data_comment_body |
| field_data_field_image |
| field_data_field_tags |
| field_revision_body |
| field_revision_comment_body |
| field_revision_field_image |
| field_revision_field_tags |
| file_managed |
| file_usage |
| filter |
| filter_format |
| flood |
| history |
| image_effects |
| image_styles |
| menu_custom |
| menu_links |
| menu_router |
| node |
| node_access |
| node_comment_statistics |
| node_revision |
| node_type |
| queue |
| rdf_mapping |
| registry |
| registry_file |
| role |
| role_permission |
| search_dataset |
| search_index |
| search_node_links |
| search_total |
| semaphore |
| sequences |
| sessions |
| shortcut_set |
| shortcut_set_users |
| system |
| taxonomy_index |
| taxonomy_term_data |
| taxonomy_term_hierarchy |
| taxonomy_vocabulary |
| url_alias |
| users |
| users_roles |
| variable |
| views_display |
| views_view |
| watchdog |
+-----------------------------+
80 rows in set (0.00 sec)
5、查看users表中的字段
发现当前系统创建了5个账号的账户名称、密码、邮箱等信息,这里密码是经过hash加密后的密文存储,因此我们还无法获取管理员的密码,这里我们有两种方法,一是直接使用前面创建用户时生成的密文,复制该密文在数据库中更新admin的密文,便可以使用admin登入;二是采用Drupal提供的最原生方法。
获得admin的密文,并将该产生密文复制到admin的password字段替换原来的密钥
www-data@DC-1:/var/www$ php scripts/password-hash.sh admin
php scripts/password-hash.sh admin
password: admin hash: $S$DaT9oi7SSi1ONi8HhNDokF8G2agq/ORVXC5qZWer7/ZjsbBSPssN
www-data@DC-1:/var/www$
替换成功后,登入验证一下,发现已登入网站后台
6、查看仪表盘时发现一个flag3
这段信息其实主要是告诉我们权限不够,无法查看操作系统的密码文件
三、后渗透
1、提权
使用命令查看 suid 权限的可执行二进制程序find / -perm -4000 2>/dev/null
这是一个在Linux或类似系统中使用的命令。它的意思是在根目录(/)下查找所有具有setuid位设置的文件。2>/dev/null表示将错误消息重定向到/dev/null,即忽略错误消息。
1.1使用命令测试,发现为root权限
1.2提权
发现已经拿到了操作系统的root用户权限,在拥有超级用户权限下,可以就可以读、写系统的任意文件。
看到了flag4用户,可以使用字典跑出密码
总结:
整个过程都没有太大的问题,将信息收集的结果进行整合,由于该版本比较低,这里就没有跑POC了。
原文始发于微信公众号(Red Teams):每日一攻防DC1(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论